ノード (Compute、Database、または Filter でなければならない) を右クリックし、「ESQL のオープン」をクリックします。 このメッセージ・フローのデフォルト ESQL ファイル、<message_flow_name>.esql がエディター・ビューに開かれます (このファイルが存在しない場合には、作成されます)。(すでにデフォルト・ファイルを作成済みである場合、「ESQL のオープン」をクリックすると、このファイルがエディター・ビューで開き、新しいモジュールが作成されて強調表示されます。)
ESQL ファイルの終わりに、このノードに対するスケルトン・モジュールが作成されます。その正確な内容は、ノードのタイプによって異なります。
以下のモジュールは、Compute ノードに対して作成されます。
CREATE COMPUTE MODULE <module_name>
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
-- CALL CopyMessageHeaders();
-- CALL CopyEntireMessage();
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
前の ESQL をバージョン 2.1 ブローカーにデプロイ可能にするには、以下の例の太字テキストで示すように、
InputRoot および
OutputRoot モジュール・レベル変数をプロシージャーまたは関数に引き渡す必要があります。
CREATE COMPUTE MODULE <module_name>
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
-- CALL CopyMessageHeaders(InputRoot, OutputRoot);
-- CALL CopyEntireMessage(InputRoot, OutputRoot);
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders(IN InputRoot REFERENCE, IN
OutputRoot REFERENCE) BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
CREATE LASTCHILD OF OutputRoot DOMAIN FIELDNAME (
InputRoot.*[I] ); /*create the parser for OutputRoot*/
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage(IN InputRoot REFERENCE, IN
OutputRoot REFERENCE) BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
モジュール名は、対応するノード・プロパティーに設定した値によって決まります。デフォルトは <message_flow_name>_<node_type> です。
Main 関数には、以下で説明される、Main 関数に続く Compute ノード・モジュール内で宣言される 2 つのプロシージャーの呼び出しが含まれています。これらの呼び出しはコメント化されます。これらの呼び出しによって提供される関数を組み込みたい場合は、これらの行のコメントを外し、Main で作成する ESQL 内の適切なポイントにそれらの呼び出しを配置します。
- CopyMessageHeaders
- このプロシージャーは、入力メッセージ内に含まれるヘッダーをループし、出力メッセージに各ヘッダーをコピーします。
バージョン 2.1 からマイグレーションする場合、このプロシージャーは、「Compute ノード・プロパティー」ダイアログの「メッセージ・ヘッダーのコピー」ボタンを選択するときに生成されるコードに相当します。
- CopyEntireMessage
- このプロシージャーは、ヘッダーを含む入力メッセージの内容全体を出力メッセージにコピーします。
バージョン 2.1 からマイグレーションする場合、このプロシージャーは、「Compute ノード・プロパティー」ダイアログの「メッセージ全体のコピー」ボタンを選択するときに生成されるコードに相当します。
Database ノードに対して ESQL モジュールを作成する場合、次のモジュールが作成されます。
CREATE DATABASE MODULE <module_name>
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
RETURN TRUE;
END;
END MODULE;
Filter ノードの場合、モジュールは、次の最初の行を除いて、Database ノードで作成されたものと同じです。
CREATE FILTER MODULE <module_name>