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

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

ソースはリストであり、ターゲットはソースからのリストであるものの、リストの先頭に新規項目がある場合

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

ターゲット・ランタイム・パーサーの変更

最初にマッピングを作成するときは、ターゲット・メッセージのメッセージ・セットを指定します。 出力メッセージに関連付けられるパーサーは、メッセージ・セットに関連付けられたランタイム・パーサーです。例えば、メッセージ・セットの最初の作成時において、デフォルトのランタイム・パーサーは MRM です。これは、Mapping ノードが ESQL を以下の形式で生成することを意味します。
SET OutputRoot.MRM.Fielda...
ランタイム・パーサーを、例えば XML または XMLNSC に変更すると、Mapping ノードは ESQL を以下の形式で生成します。
SET OutputRoot.XMLNSC...
ソース・メッセージのパーサーは、MQRFH2 ヘッダーまたは入力ノードによって決定されます。 Mapping ノードは、入力ですべてのパーサーを処理できます。Mapping ノードは、メッセージ・セットのランタイム・パーサーと一致するパーサーを持つターゲット・メッセージを生成します。
  1. メッセージ・セット・ファイル messageset.mset を開きます。
  2. ランタイム・パーサーを選択した値に変更し、このメッセージ・セットをマッピングの目的で参照しているメッセージ・フロー・プロジェクトを保存します。
  3. パーサーを MRM に変更した場合は、メッセージ・セットをデプロイします。
  4. マッピングを含むメッセージ・フローをデプロイして、Compute ノードやその他のノードで ESQL をテストし、予想通りに機能することを確認します。

データベース・スキーマ名をオーバーライドする

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

バッチ・メッセージのマップ

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

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

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

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

マッピングの制限

明示的に述べられているのでない限り、ESQL 関数またはプロシージャーを呼び出して必要な機能を実行することができます。以下のような制約事項があります。
  • 混合内容のフィールドをマップすることはできません。
  • マッピング・ノードで直接に例外をスローすることはできません。
  • マッピング・ノードで自己定義エレメントを操作することはできません (ワイルドカードが埋め込みメッセージを表す場合、ワイルドカードの限定サポートがあります)。
  • マッピング・ノードで 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, 2006 最終更新: 08/21/2006
ar25245_