Les composants d'un StyleBook peuvent faire référence aux propriétés ou aux sections d'autres composants du même StyleBook. Les composants sont des blocs complets en eux-mêmes et peuvent ne pas être écrits dans l'ordre dans lequel ils doivent être exécutés. Le compilateur StyleBook vérifie l'ordre dans lequel les composants sont écrits, puis les exécute dans un ordre logique.
Exemple :
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
Dans l'exemple ci-dessus, trois composants sont définis : lbvserver-comp, lb-sg-binding-comp et sg-comp. Lorsque ce StyleBook est exécuté, le composant lbvserver-comp est créé en premier. Le composant lb-sg-binding-comp fait référence aux propriétés de lbvserver-comp, mais il ne peut pas être créé ensuite, même s'il s'agit du deuxième composant défini dans le StyleBook. Cela est dû au fait que lb-sg-binding-comp a également une dépendance vis-à-vis de sg-comp, qui n'a pas encore été créé. Par conséquent, le compilateur réorganise les composants de manière à ce que les dépendances d'un composant soient résolues au moment de sa création, puis exécute cette liste de composants réorganisée. L'ordre d'exécution du StyleBook ci-dessus est : lbvserver-comp, sg-comp et lb-sg-binding-comp.
Ainsi, l'auteur d'un StyleBook n'a pas à se soucier de l'ordre correct des composants. Les composants peuvent apparaître dans n'importe quel ordre. Le compilateur calcule l'ordre d'exécution correct des composants en fonction de la manière dont ils se réfèrent les uns aux autres. Notez que cette détection et cette réorganisation des dépendances fonctionnent également pour les substitutions et les sections de sortie.