この記事は機械翻訳されています.免責事項
依存関係の検出
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
上記の例では、定義された3つのコンポーネントがあります- lbvserver-comp、 lb-sg-binding-comp、および sg-comp。この 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の作成者がコンポーネントの正確な順序を気にする必要はありません。コンポーネントはどのような順序で記載しても構いません。コンパイラにより、コンポーネント間の参照関係に基づいて適切なコンポーネントの実行順序が計算されます。これは、置換セクションと出力セクションにも適用されます。
循環依存関係
コンポーネントは別のコンポーネントを参照する場合があるため、依存関係のサイクルが StyleBook の定義に導入される可能性があります。たとえば、コンポーネントAがコンポーネントBで定義されているプロパティを参照しており、さらにコンポーネントBがコンポーネントAで定義されているプロパティを参照している場合などです。こうした依存関係は、循環依存関係と呼ばれます。循環依存関係を自動で解決することはできません。StyleBookの作成者は、StyleBookの定義を手動で修正して、このような循環依存を排除します。コンパイラは循環依存関係を特定することができ、循環依存関係が存在する場合にはレポートします。
以下の例に、コンポーネントの循環依存関係を示します。
components: - name: lbvserver-comp type: ns::lbvserver properties: name: $components.lb-sg-binding-comp.properties.name 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: mylb servicegroupname: $components.sg-comp.properties.servicegroupname - name: sg-comp type: ns::servicegroup properties: servicegroupname: mysg servicetype: $components.lbvserver-comp.properties.servicetype
上記の例では、lbvserver-comp、lb-sg-binding-comp、およびsg-compの 3 つのコンポーネントがあります。lbvserver-comp
コンポーネントは lb-sg-binding-comp
、 lb-sg-binding
コンポーネントに依存します。そして、これらのコンポーネントはsg-comp
に依存します。sg-comp
コンポーネントはlbvserver-comp
に依存します。このように、これらのコンポーネント間で依存関係の循環が生じており、この循環は自動で解決できません。その結果、このStyleBookを実行することはできません。StyleBookコンパイラがこれを検出し、StyleBook がNetScaler Consoleにインポートされないようにします。