ターゲット・エレメントのデータベース表からのマッピング

データベース表からターゲット・エレメントをマップするには、Mapping ノードを次のようにセットアップします。
  • データベースから該当する行を取得する
  • メッセージのターゲット・エレメントにデータベースからの値を取り込む
データベースをマッピングのソースとして追加するには、データベースのソースへの追加で説明しているように、いくつかの方法があります。データベースをマッピングに追加したら、「スプレッドシート」ペインの 「マップ・スクリプト」列に、$db:select 項目が含まれます。デフォルトでは、 その値は fn:true() で、これは、データベース表からすべての行を取得するという意味です。 データベース SQL では、データベース呼び出しに WHERE 文節を追加して行数を制限します。 Mapping ノードでは、選択行の数を制限する同等の方法として、$db:select 式を使用します。

以下のステップは、Mapping ノードで選択行の数を制限する同等の方法を示したものです。

  1. 「スプレッドシート」ペインで、$db:select 行をクリックします。 これで、 fn:true() が「編集」ペインに書き込まれます。
  2. 「編集」ペインの式を編集して、データベース呼び出しの正しい条件を 指定します。これには、次のような方法があります。
    1. 取得される行に関連する任意のデータベース列を選択し、 「ソース」ペインから「編集」ペインにドラッグします。 これらは、SQL WHERE 文節で使用されるデータベース列名です。
    2. 取得される行に関連する値を持つ任意のソース・メッセージ・エレメントを選択し、 「ソース」ペインから「編集」ペインにドラッグします。 これらは、選択したデータベース列と 一致させることのできる値です。
    3. 「編集」 > 「内容アシスト」を クリックして、「内容アシスト」を開きます。
    4. 「内容アシスト」で、データベース呼び出しのメッセージ・エレメントに適用する機能を 選択します。
以下に示すのは、データベース列を定数または入力メッセージのフィールドと突き合わせる $db:select 項目の例です。
$db:select_1.BROKER50.JDOE.RESOLVEASSESSOR.ASSESSORTYPE = 'WBI' or $db:select_1.BROKER50.JDOE.
RESOLVEASSESSOR.ASSESSORTYPE = $source/tns:msg_tagIA81CONF/AssessorType 

$db:select 項目は該当する行をすべて取得するため、複数の行が取得される可能性が あります。デフォルトでは、この選択は繰り返しとして扱われます。このことは、「スプレッドシート」ペインの $db:select の下の「for」行によって示されます。

$db:select の構成後は、 データベース列を「ソース」ペインから「ターゲット」ペインのメッセージ・エレメントに ドラッグして、データベースからターゲット・メッセージを取り込みます。マッピングは、 「ソース」ペインのデータベース列と「ターゲット」ペインのエレメントを結ぶ線で表されます。 Xpath 形式のこのマップ項目は、 「スプレッドシート」ペインにも表示されます。「ソース」ペインでも「ターゲット」ペインでも、 マップされたオブジェクトの横には三角形のアイコンが表示されます。

変更の始まりデータベース選択の使用法

デフォルトでは、$db:select 項目は「for」行を伴い、選択結果セット全体に対して繰り返されます。 「for」行がマッピングの正しい位置にあることを確認してください。マップの動作は、「スプレッドシート」ペインでの「for」行の位置で決まります。 例えば、$db:select ステートメントの結果がデータベースの 5 つの行と一致し、「for」行が「スプレッドシート」ペインの $target 項目の上にある場合は、マッピング・ノードによって 5 つの完了メッセージが出力されます。 「for」行がメッセージ本体の内部に置かれている場合は、1 つのメッセージが生成され、メッセージ本体に 5 つの反復エレメントが入ります。

マッピングには $db:select 項目に関連付けた「for」行を複数含めることができます。この場合は単一のデータベース選択が実行され、結果全体に対して複数回繰り返されます。 例えば、条件付きマッピングで複数の「for」行を使用して、個々の「for」行に「condition」または「else」を組み合わせることができます。

「for」行は常に必須というわけではありません。以下の状況では削除することができます。
  • データベース選択で 1 つの行しか戻されない場合
  • 選択結果に対して集約 Xpath 関数を使用する場合

    例えば、fn:sum や fn:count です。

$db:select 式は、「スプレッドシート」ペインの $db:select 項目のスコープ内になければなりません。つまり、select ステートメントの下位になければなりません。 $db:select 式がスコープ外にある場合、メッセージ・マッピング・エディターは $db:select 式がスコープに入る位置に $db:select 項目を移動します。 $db:select 項目をメッセージ・マッピングの正しい位置に配置するようにしてください。

データベース表結合

データベース表結合は、同一データベース内の表に対してサポートされています。 例えば、PRODUCT_ID と PART_NUMBER が一致する次の 2 つの表があるとします。
表    列        行 1    行 2    行 3      行 4
ORDER    PRODUCT_ID    456      456      345        123
         QUANTITY      100      200      300        400

PRODUCT  PART_NUMBER   123      456      789        012
         PART_NAME     pen      pencil   paperclip  glue
         PRICE         0.25     0.15     0.02       0.99
次の構文の $db:select 式で、これらの表が結合されます。
$db:select.MY_DB.SCHEMA1.ORDER.PRODUCT_ID=$db:select.MY_DB.SCHEMA2.PRODUCRT.PART_NUMBER
この例では、$db:select 式によって次の結果セットが生成されます。
                行 1    行 2    行 3
PRODUCT_ID      456      456      123
QUANTITY        100      200      400
PART_NUMBER     456      456      123
PART_NAME       pencil   pencil   pen
PRICE           0.15     0.15     0.25
次に「for」行を使用して、単一表の結果の場合と同様に、結果セット全体に対して繰り返すことができます。
変更の終わり
関連概念
メッセージ・マッピング・エディター
メッセージ・マッピングの作成
関連資料
Mapping ノード
メッセージ・マッピング・エディターの「ソース」ペイン
メッセージ・マッピング・エディターの「ターゲット」ペイン
メッセージ・マッピング・エディターの「編集」ペイン
メッセージ・マッピング・エディターの「スプレッドシート」ペイン
メッセージ・マッピング
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ar25267_