メッセージ形式の変更

Compute ノードを使用して、入力メッセージの一部を出力メッセージにコピーします。 この場合のコピーの結果は、それに伴う入力および出力のパーサーのタイプによって異なります。

同種パーサー

ソース・メッセージとターゲット・メッセージのフォルダー構造がルート・レベルで両方とも同じである場合、 同種パーサー・コピーが実行されます。例えば、以下のようになります。

SET OutputRoot.MQMD = InputRoot.MQMD;

入力メッセージの MQMD フォルダーのすべての子が、 出力メッセージの MQMD フォルダーにコピーされます。

次に示すのは、同種パーサー・コピーをサポートするツリー構造の別の例です。

SET OutputRoot.XML.Data.Account = InputRoot.XML.Customer.Bank.Data;
MRM ドメインの入力メッセージを、MRM ドメインの出力メッセージに変換したい場合、Compute か Mapping ノードのどちらかを使用できます。 Mapping ノードは、メッセージの両方形式を知っており、必要な処置を解釈することができます。Compute ノードに対する ESQL モジュールの内容アシストも、それらのメッセージに対してメッセージ定義を使用することができます。メッセージが同じネーム・スペースにない場合は、Compute ノードを使用する必要があります。
注: 内容アシストとメッセージ参照を連動させるには、ESQL を含むプロジェクトからメッセージ・セットを含むプロジェクトへのプロジェクト参照をセットアップする必要があります。プロジェクト参照のセットアップの詳細については、プロジェクト参照を参照してください。

入出力メッセージの両方が MRM ドメインにない場合には、Compute ノードを使用して、メッセージの構成をご自身で指定する必要があります。

異種パーサー

ソース・メッセージとターゲット・メッセージのフォルダー構造がルート・レベルで異なる場合、 メッセージ・ソースの完全コピーを行うことはできません。 その代わり、異種パーサー・コピーでは、ソース・メッセージが、 リーフ名と値のペアで終了する、ネストされたフォルダーのセットとして表されます。例えば、次のメッセージを XML から MRM にコピーするとした場合:

<Name3><Name31>Value31</Name31>Value32</Name3>

この場合は、名前エレメント Name3、 および値 Value31 を持つ Name31 という名前値エレメントが生成されます。 2 番目の XML pcdata (Value32) は表現できず、廃棄されます。

異種パーサー・コピーではソース・ツリーをスキャンして、 名前エレメントとも呼ばれるフォルダーと、リーフ名 - 値ペアをコピーします。 それ以外のものは、ソースのパーサーによって special のフラグが立てられているエレメントも含めて、 いずれもコピーされません。

異種パーサー・コピーになるツリー構造の例を次に示します。

SET OutputRoot.MRM.Data.Account = InputRoot.XML.Data.Account;

異種パーサー・コピーを行うために使用されるアルゴリズムが実際のツリー構造に適さない場合は、 ソース・フィールドをさらに限定して、コピーするツリーの総量を制限する必要がある場合があります。

情報を入力メッセージから、異なるドメインの出力メッセージへとコピーする場合には注意してください。 出力メッセージを処理するパーサーの規則と完全には整合していない、 メッセージ構造または内容を作成する ESQL をコーディングすることは可能です。 これは作成されていない、または予期しない内容で作成された出力メッセージという結果になる可能性があります。 特定のメッセージ・フローによって生成された出力メッセージが正しい内容を含んでいない、 予期した形式ではないと思われる場合、出力メッセージを作成する ESQL を調べて、 構造、フィールド・タイプ、フィールド名、およびフィールド値に不一致がないかどうか探してください。

異種パーサー間でツリーのコピーを行う際に、ターゲット・パーサーのメッセージ形式を設定することもできます。 例えば、メッセージ・セットが XML および CWF 形式で定義されている場合、入力 XML ストリームを MRM パーサーにコピーし、後者を CWF 形式の出力に設定するには、次のコマンドが必要になります。
-- Copy message to the output, moving from XML to MRM domains
SET OutputRoot.MRM = InputRoot.XML;
		
-- Set the CWF format for output by the MRM domain
SET OutputRoot.Properties.MessageType = '<MessageTypeName>';
SET OutputRoot.Properties.MessageSet = '<MessageSetName>';
SET OutputRoot.Properties.MessageFormat = 'CWF';	
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ac11610_