PROPAGATE ステートメントは、入力メッセージを、 メッセージ・フロー内のダウンストリーム・ノードに伝搬します。
Compute ノードで使用する場合、PROPAGATE ステートメントは、 ノードの出力メッセージ・ツリーをファイナライズし (つまり、 各ツリーのヘッダー・チェーンを固定する)、 そのメッセージ・フロー内のダウンストリーム・ノードへ伝搬します。 その後、PROPAGATE ステートメントは、それらの出力メッセージ・ツリーを消去して、 今後の利用のためにメモリーを取り戻します。
Environment ツリーは、常に伝搬されます。 伝搬される Local Environment、メッセージ、および例外リスト・ツリーは、 通常の Compute Mode プロパティーの制御下で、入力ツリーと出力ツリーのどちらにもできます。 ただし、どちらのツリーが伝搬されたかにかかわらず、ファイナライズされて消去されるのは出力ツリーです。
デフォルトでは、Compute ノードは、ESQL が終了すると、 自動的にダウンストリーム・ノードへ伝搬されます。 このことを防ぐには、ESQL が FALSE を戻すようにします (RETURN ステートメントを参照してください)。
Database ノードで使用する場合でも、PROPAGATE ステートメントは同様の働きをします。 このステートメントは、入力メッセージを、メッセージ・フロー内のダウンストリーム・ノードに伝搬します。 デフォルトでは、Database ノードは、ESQL が終了すると、 やはり自動的にダウンストリーム・ノードへ伝搬されます。 ESQL が FALSE を戻すようにすると、このことを防ぐことができます (RETURN ステートメントを参照)。
Filter ノード内で PROPAGATE ステートメントを使用しないでください。
PROPAGATE ステートメントを使用する場合、 結果としてメッセージが取得するパス、および後続のノードが適用する処理は、 PROPAGATE ステートメント自体の処理の一部とみなされます。 制御が戻り、ESQL が終了するまでは、 PROPAGATE を発行するノードの実行は完了しません。 ノードで、「トランザクション (Transaction)」 を「コミット (Commit)」 に設定する PROPAGATE を使用する場合、 ESQL が終了するまでは、このノードで行ったデータベース更新はコミットされません。 ですから、PROPAGATE パスでの処理は例外になり、 メッセージ・フローは作業単位をロールバックし、 データベース・アクティビティーもロールバックされます。
この例の ESQL は、サンプル・メッセージ のサンプル・メッセージを使用して、 OUT ターミナルに 3 つのメッセージを生成します。
DECLARE i INTEGER 1; WHILE i <= CARDINALITY(InputRoot.XML.Invoice.Purchases."Item"[]) DO SET OutputRoot = InputRoot; SET OutputRoot.XML = NULL; SET OutputRoot.XML.BookSold."Item" = InputRoot.XML.Invoice.Purchases."Item"[i]; PROPAGATE; SET i = i+1; END WHILE; RETURN FALSE;
PROPAGATE ステートメントによって OUT ターミナルで生成されるメッセージは次のとおりです。
<BookSold> <Item> <Title Category="Computer" Form="Paperback" Edition="2">The XML Companion </Title> <ISBN>0201674866</ISBN> <Author>Neil Bradley</Author> <Publisher>Addison-Wesley</Publisher> <PublishDate>October 1999</PublishDate> <UnitPrice>27.95</UnitPrice> <Quantity>2</Quantity> </Item> </BookSold>
<BookSold> <Item> <Title Category="Computer" Form="Paperback" Edition="2">A Complete Guide to DB2 Universal Database</Title> <ISBN>1558604820</ISBN> <Author>Don Chamberlin</Author> <Publisher>Morgan Kaufmann Publishers</Publisher> <PublishDate>April 1998</PublishDate> <UnitPrice>42.95</UnitPrice> <Quantity>1</Quantity> </Item> </BookSold>
<BookSold> <Item> <Title Category="Computer" Form="Hardcover" Edition="0">JAVA 2 Developers Handbook</Title> <ISBN>0782121799</ISBN> <Author>Phillip Heller, Simon Roberts </Author> <Publisher>Sybex, Inc.</Publisher> <PublishDate>September 1998</PublishDate> <UnitPrice>59.99</UnitPrice> <Quantity>1</Quantity> </Item> </BookSold>
関連概念
ESQL
注意 |
商標 |
ダウンロード |
ライブラリー |
技術サポート |
フィードバック
![]() ![]() |
ak05110_ |