Environment ツリーへのアクセス

Environment ツリーには独自の相関名 Environment があり、このツリーの内容を参照または設定するすべての ESQL ステートメントではこの名前を使用する必要があります。

論理ツリーが入力メッセージ用に作成される際に、Environment ツリーが必ず作成されます。 しかし、メッセージ・フローは、そこにデータを取り込んだり、その内容を使用したりすることはありません。 このツリーは、あるノードから別のノードへと情報を受け渡すなどの、独自の目的に使用できます。 このツリー全体をスクラッチパッドまたは作業域として使用できます。

Environment に独自のデータを作成する利点は、メッセージ・フロー内の後続のノードに、このデータが論理ツリーの一部として伝搬されることです。 Compute ノードに新規出力メッセージを作成する場合には、Environment ツリーも入力メッセージからその新規出力メッセージにコピーされます。(これは LocalEnvironment ツリーとは対照的で、LocalEnvironment ツリーは明示的に要求する場合にのみ出力メッセージに組み込まれます。)

メッセージ・フローの存続期間中、Environment ツリーは 1 つだけ存在します。 あるノードで更新または追加したデータは保存され、メッセージ・フロー内のすべてのノードはこのツリーの最新のコピーにアクセスします。 メッセージ・フローがそのメッセージ・フローに戻る場合でも (例えば、例外がスローされる場合、またはメッセージが FlowOrder ノードの第 2 のターミナルを経由して処理される場合)、最新の状態が保存されます。

これは、メッセージ・フローがそのメッセージ・フローに戻る場合に前の状態に復帰する、LocalEnvironment ツリーとは対照的です。

このツリーは、選択する任意の目的に使用できます。 例えば、次の ESQL ステートメントを使用してツリー内にフィールドを作成できます。
SET Environment.Variables =
      ROW('granary' AS bread, 'reisling' AS wine, 'stilton' AS cheese);
SET Environment.Variables.Colors[] =
      LIST{'yellow', 'green', 'blue', 'red', 'black'};
SET Environment.Variables.Country[] = LIST{ROW('UK' AS name, 'pound' AS currency),
   ROW('USA' AS name, 'dollar' AS currency)};

この情報は、メッセージ・フローにおける相対位置にかかわらず、メッセージの伝搬先のすべてのノードで有効です。

Environment を使用してメッセージ・フロー内の他のノードが用いる情報を保管する方法の別の例は、Airline サンプル・プログラムの Reservation メッセージ・フローを参照してください。 メッセージ・フローの Compute ノードは、入力メッセージのフィールドの値に応じてデータベースから抽出されたサブツリー Environment.Variable に情報を書き込みます。

関連概念
メッセージ・フローの概要
Environment ツリー構造
ESQL の概要
メッセージのモデル化
関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
ESQL ファイルの管理
関連資料
Compute ノード
Database ノード
Filter ノード
ESQL 参照
ROW コンストラクター関数
LIST コンストラクター関数
ROW と LIST の結合
ROW および LIST の比較
SET ステートメント
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac16840_