StyleBook内のコンポーネントは、同じStyleBook内の他のコンポーネントのプロパティまたはセクションを参照できます。コンポーネントはそれ自体で完結したブロックであり、実行される順序と同じ順序で記述されているとは限りません。StyleBookコンパイラは、コンポーネントが記述されている順序をチェックし、論理的な順序で実行します。
例:
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
上記の例では、lbvserver-comp、lb-sg-binding-comp、sg-compの3つのコンポーネントが定義されています。このStyleBookが実行されると、まずlbvserver-compが作成されます。lb-sg-binding-compはlbvserver-compのプロパティを参照しますが、StyleBookで2番目に定義されているにもかかわらず、次に作成することはできません。これは、lb-sg-binding-compがまだ作成されていないsg-compにも依存しているためです。結果として、コンパイラはコンポーネントの依存関係がコンポーネント作成時に解決されるようにコンポーネントを並べ替え、この並べ替えられたコンポーネントのリストを実行します。上記のStyleBookの実行順序は、lbvserver-comp、sg-comp、lb-sg-binding-compです。
したがって、StyleBookの作成者はコンポーネントの正しい順序について心配する必要はありません。コンポーネントは任意の順序で記述できます。コンパイラは、コンポーネントが互いをどのように参照しているかに基づいて、コンポーネントの正しい実行順序を計算します。この依存関係の検出と並べ替えは、置換セクションと出力セクションでも機能することに注意してください。