Environment ツリーには独自の相関名 Environment があり、このツリーの内容を参照または設定するすべての ESQL ステートメントではこの名前を使用する必要があります。
論理ツリーが入力メッセージ用に作成される際に、Environment ツリーが必ず作成されます。 しかし、メッセージ・フローは、そこにデータを取り込んだり、その内容を使用したりすることはありません。 このツリーは、あるノードから別のノードへと情報を受け渡すなどの、独自の目的に使用できます。 このツリー全体をスクラッチパッドまたは作業域として使用できます。
Environment に独自のデータを作成する利点は、メッセージ・フロー内の後続のノードに、このデータが論理ツリーの一部として伝搬されることです。 Compute ノードに新規出力メッセージを作成する場合には、Environment ツリーも入力メッセージからその新規出力メッセージにコピーされます。(これは LocalEnvironment ツリーとは対照的で、LocalEnvironment ツリーは明示的に要求する場合にのみ出力メッセージに組み込まれます。)
メッセージ・フローの存続期間中、Environment ツリーは 1 つだけ存在します。 あるノードで更新または追加したデータは保存され、メッセージ・フロー内のすべてのノードはこのツリーの最新のコピーにアクセスします。 メッセージ・フローがそのメッセージ・フローに戻る場合でも (例えば、例外がスローされる場合、またはメッセージが FlowOrder ノードの第 2 のターミナルを経由して処理される場合)、最新の状態が保存されます。
これは、メッセージ・フローがそのメッセージ・フローに戻る場合に前の状態に復帰する、LocalEnvironment ツリーとは対照的です。
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 に情報を書き込みます。