Komponenten in einem StyleBook können sich auf Eigenschaften oder Abschnitte anderer Komponenten im selben StyleBook beziehen. Komponenten sind in sich geschlossene Blöcke und müssen nicht in der Reihenfolge geschrieben werden, in der sie ausgeführt werden sollen. Der StyleBook-Compiler prüft die Reihenfolge, in der die Komponenten geschrieben sind, und führt sie dann in einer logischen Reihenfolge aus.
Beispiel:
components:
-
name: lbvserver-comp
type: ns::lbvserver
properties:
name: mylb
ipv46: 10.102.190.15
port: 80
servicetype: HTTP
-
name: lb-sg-binding-comp
type: ns::lbvserver_servicegroup_binding
condition: $parameters.create-binding
properties:
name: $components.lbvserver-comp.properties.name
servicegroupname: $components.sg-comp.properties.servicegroupname
-
name: sg-comp
type: ns::servicegroup
properties:
servicegroupname: mysg
servicetype: HTTP
Im obigen Beispiel sind drei Komponenten definiert: lbvserver-comp, lb-sg-binding-comp und sg-comp. Wenn dieses StyleBook ausgeführt wird, wird zuerst die lbvserver-comp erstellt. Die lb-sg-binding-comp bezieht sich auf Eigenschaften der lbvserver-comp, kann aber nicht als Nächstes erstellt werden, obwohl sie die zweite im StyleBook definierte Komponente ist. Dies liegt daran, dass die lb-sg-binding-comp auch eine Abhängigkeit von der sg-comp hat, die noch erstellt werden muss. Infolgedessen ordnet der Compiler die Komponenten neu an, sodass die Abhängigkeiten einer Komponente zum Zeitpunkt ihrer Erstellung aufgelöst werden, und führt diese neu angeordnete Liste von Komponenten aus. Die Ausführungsreihenfolge des obigen StyleBooks ist: lbvserver-comp, sg-comp und lb-sg-binding-comp.
Somit muss sich der Autor eines StyleBooks keine Gedanken über die korrekte Reihenfolge der Komponenten machen. Die Komponenten können in beliebiger Reihenfolge erscheinen. Der Compiler berechnet die korrekte Ausführungsreihenfolge der Komponenten basierend darauf, wie die Komponenten aufeinander verweisen. Beachten Sie, dass diese Abhängigkeitserkennung und Neuanordnung auch für Substitutions- und Ausgabeabschnitte funktioniert.