外部コンポーネント置換参照の値は、まず primary-component が参照するコンポーネントを解釈処理することによって計算されます。 secondary-component が primary-component として使用された場合、外部コンポーネント置換参照を含む現コンポーネントは、primary-component の解釈時に使用される初期現コンポーネントとして機能します。 primary-component によって解釈処理されたコンポーネントは、新しい現コンポーネントになります。 次に、secondary-component-list 内の secondary-component が、最後に解釈処理されたコンポーネントを現コンポーネントとして使用して、解釈処理されます。 その後、最後に解釈処理されたコンポーネント内の varname という変数が検索され、返されます。
外部コンポーネント置換参照の値は、インストール時点の参照コンポーネント内の指定された変数の値をもとに計算されます。 インストール済みコンポーネントによって宣言されたのではない変数名や、対象ホストにインストールされていないコンポーネントを参照してはなりません。 また、外部コンポーネント置換参照を宣言するコンポーネントやプランからアクセスできない変数も参照しないでください。 変数にアクセスできるのは、変数がアクセス可能アクセスモードで宣言され、コンポーネントを宣言するコンポーネントにアクセスでき、そのコンポーネントに到達するために通るプライマリコンポーネントとセカンダリコンポーネントそれぞれにアクセスできる場合だけです。
外部コンポーネント置換参照は、プラン実行中に出現したときに計算されます (プラン実行の開始時ではありません)。 したがって、参照される実際のインストール済みコンポーネントは、プラン内で以前実行された手順をもとに変更されている場合があります。 さらに、現在の対象ホスト以外のホストにインストールされたコンポーネントへの参照は、他のホストで同時に実行されている他のプランから影響を受ける場合があります。 予想可能な結果を得るためには、クライアントは、現在のプラン実行の対象セット内に含まれる参照ホストだけを参照し (それらがロックされていることを保証して)、目標再設定または一括実行モードもしくはその両方を使用してプラン内の外部から参照されているホスト上のインストール/アンインストール操作をすべて同期する必要があります。
以下に、明示的な外部コンポーネントを使用した外部コンポーネント置換参照の例をいくつか挙げます。
:[component:installApache:label] :[component:jdk#1.3:classpath] :[component:webApp#2.4@{/usr/local}:bannerColor] :[component(/):IIS global settings:install_path] :[component:webApp@{:[webAppPath]}:bannerColor] |
2 番目以降の例では、現在の対象ホストの物理的なルートホストにインストールされたコンポーネントが解釈処理されます。
最後の行では、webAppPath が、外部から参照されているコンポーネント内で定義された変数としてではなく、生成コンテキストの関連コンポーネント内の単純置換変数セットの名前として解釈処理されます。
以下に、入れ子コンポーネントまたは最上位コンポーネントを使用した外部コンポーネント置換参照の例をいくつか挙げます。
:[nestedRef:ref1:label] :[toplevelRef:ref2:name] :[toplevelRef(/):ref3@{/usr/local}:var1] |
次に、依存先コンポーネントを使用した外部コンポーネント置換参照の例を挙げます。
:[dependee:app2domain:domainName] |