メッセージ・マッピングのヒントおよび制約事項

メッセージ・マッピング使用の助けとなる情報です。

これらのヒントでは、メッセージ・フロー内に Mapping ノードが作成され、メッセージ・マッピング・エディターが開かれ、ソース・メッセージとターゲット・メッセージの両方が選択されていることが前提となっています。

ソースはリストであり、ターゲットはソースからのリストであるものの、リストの先頭に新規項目がある場合におけるメッセージのマッピング

  1. ターゲットを展開して、最初の新規インスタンスを作成するエレメントを表示します。これは構造、または単純エレメントのいずれかになります。
  2. エレメントを右クリックして、「If」をクリックします。条件行がすぐ下に表示されます。
  3. エレメントを右クリックして、「コピー」をクリックします。条件行に移動し、「貼り付け」をクリックします。このエレメントに関し、スプレッドシート内に 2 つの項目ができました。
  4. それらの項目の最初のものを、自分で選択した値に設定します。
  5. 2 番目の項目を右マウス・ボタン・クリックして「for」をクリックします。スプレッドシートに for 行が表示されます。
  6. 2 番目の項目を、ソースからマップした値 (複数可) に設定します。
  7. for 項目をループ条件に設定します。
  8. 「for」をクリックしてから、ループ条件を表すソース・フィールドを式エディターまでドラッグします。

ターゲット・メッセージ・ドメインの変更

最初にマッピングを作成するときは、ターゲット・メッセージのメッセージ・セットを指定します。 出力メッセージに関連付けられるパーサーは、メッセージ・セットのメッセージ・ドメイン・プロパティーによって決定されます。 例えば、メッセージ・セットの最初の作成時において、デフォルトのメッセージ・ドメインは MRM です。 したがって、Mapping ノードは ESQL を以下の形式で生成します。
SET OutputRoot.MRM.Fielda...
ランタイム・パーサーを、例えば XMLNSC に変更すると、Mapping ノードは ESQL を以下の形式で生成します。
SET OutputRoot.XMLNSC.MessageA.FieldA...
ソース・メッセージのパーサーは、MQRFH2 ヘッダーの内容または入力ノードのプロパティーによって決定されます。Mapping ノードは、メッセージ・セットのメッセージ・ドメインに一致するパーサーを持つターゲット・メッセージを生成します。 Mapping ノード は、次のメッセージ・ドメインをサポートします。
  • MRM
  • XMLNSC
  • XMLNS
  • MIME
  • JMSMap
  • JMSStream
  • XML
メッセージ・セットのメッセージ・ドメイン・プロパティーを変更するには、次のようにします。
  1. メッセージ・セット・ファイル messageset.mset を開きます。
  2. メッセージ・ドメイン・プロパティーを、サポートされているドメインに変更します。
  3. メッセージ・セットを保管し、メッセージ・セットを参照するメッセージ・フローやメッセージ・マップが保管されていない場合は、それらも保管します。これらのファイルを保管することにより、変更されたメッセージ・セットのマッピングによる更新済み ESQL が生成されます。
    メッセージ・セットのメッセージ・ドメインを変更した後に、フローまたはメッセージ・マップを更新しなかった場合は、関連するメッセージ・フロー・プロジェクトを消去する必要があります。これにより、更新された ESQL コードを生成できるようになります。
    1. プロジェクトを選択して、「プロジェクト」 > 「プロジェクトの消去」をクリックします。
    2. 「すべてのプロジェクトを消去」または「選択したプロジェクトを消去」を選択します。
    3. 「OK」をクリックします。
  4. 変更されたメッセージ・セットをデプロイします。
  5. マッピングを含むメッセージ・フローをデプロイして、Compute ノードやその他のノードで ESQL をテストし、引き続きメッセージ・フローが予想通りに機能することを確認します。

データベース・スキーマ名のオーバーライド

ESQL で生成されるデータベース・スキーマ名を変更するには、「ランタイム・スキーマの指定」ダイアログ・ボックスの「データベース・スキーマの指定変更」ウィザードを使用します。 デフォルト名は、ワークベンチ にインポートされたデータベース定義のスキーマ名です。「ランタイム・スキーマの指定」ダイアログ・ボックスを使用して値を変更します。

バッチ・メッセージのマッピング

複数パーツ・メッセージ内のコンポーネントをソート、配列、および分割するメッセージ・マッピングを、一連のバッチ・メッセージに構成できます。 これらのコンポーネントはメッセージの場合もあればオブジェクトの場合もあり、その形式もさまざまです。この場合、各コンポーネントは変換され、メッセージは転送される前に再アセンブルされます。
  1. メッセージ・フローの RouteToLabel ノードを使用して、複数パーツ・メッセージを入力として受け取ります。

    RouteToLabel ノードは、Mapping ノードの次にあるノードで、指定されたラベルにフローを自動的にジャンプさせます。メッセージ・アセンブリーを出力するすべてのマップに対して、分割マップに単一の RouteToLabel の値を指定できます。 条件を使用して、ソース・メッセージ内の値に応じて RouteToLabel の値を設定することもできます。

  2. メッセージ・マッピング・エディターを使用して、中間データ構造を定義することなく、単一ノードを使用するバッチ・メッセージを変換および伝搬するマップを作成できます。

複数パーツのメッセージにはまた、反復組み込みメッセージを含めることができます。メッセージの反復インスタンスはそれぞれ別個に伝搬されます。 組み込みメッセージは、親メッセージと同じメッセージ・セットのものでなければなりません。

マッピングの制限

明示的に述べられているのでない限り、ESQL 関数またはプロシージャーを呼び出して必要な機能を実行することができます。 以下の制約事項が適用されます。
  • 混合内容のフィールドをマップすることはできません。
  • Mapping ノードで直接に例外をスローすることはできません。
  • Mapping ノードで自己定義エレメントを操作することはできません (ワイルドカード記号が埋め込みメッセージを表す場合、ワイルドカード記号のサポートは限定されます)。
  • Mapping ノードで Environment ツリーを操作することはできません。
  • ユーザー変数を定義または設定することはできません。
  • CASE 式をエミュレートすることはできません。IF ... ELSE を使用する必要があります。
  • ツリー内のエレメントを変更する目的で、ツリーを入力から出力にコピーすることはできません。例えば、以下の ESQL は、Mapping ノード内ではモデル化することはできません。
    SET OutputRoot.MQMD = InputRoot.MQMD; SET OutputRoot.MQMD.ReplyToQ = 'NEW.QUEUE';
    1 つ以上の兄弟フィールドを変更する場合、構造内の各フィールドを個別に設定する必要があります。
関連概念
メッセージ・マッピング・エディター
MRM パーサーおよびドメイン
XML パーサーおよびドメイン
関連タスク
ESQL の開発
関連資料
Mapping ノード
Compute ノード
RouteToLabel ノード
メッセージ・マッピング
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:44:30

ar25245_