ビジネス・オブジェクト・マップ・メディエーション・プリミティブを使用して、メッセージを変換します。 ビジネス・オブジェクト・マップを使用して、メッセージ変換をグラフィカルに定義できます。
ビジネス・オブジェクト・マップ・メディエーション・プリミティブには、入力端末 (in)、出力端末 (out)、障害端末 (fail) がそれぞれ 1 つずつあります。 in 端末はメッセージの受信用に接続され、その他の端末はメッセージの送信用に接続されています。入力メッセージにより変換が起動され、変換が正常に行われた場合には、変更されたメッセージが out 端末によって伝搬されます。変換中に例外が発生すると、fail 端末により、failInfo エレメントに含まれる例外情報と共に元のメッセージが伝搬されます。
ビジネス・オブジェクト・マップ・メディエーション・プリミティブを作成すると、WebSphere® Integration Developer により、「プロパティー」ビューの「詳細」タブで新規のビジネス・オブジェクト・マップを作成できます。 あるいは、既存のビジネス・オブジェクト・マップを参照して、適しているものを選択することもできます。
ビジネス・オブジェクト・マップを作成する場合にはメッセージ・ルート (XPath 1.0 式) を指定しますが、このメッセージ・ルートは、メディエーション・フローの場合、サービス・メッセージ・オブジェクト (SMO) の以下の場所 (/、 /headers、 /context または /body) を参照することができます。メッセージ・ルートは変換のルートを指定するものであり、入力メッセージと出力メッセージの両方に適用されます。メッセージ・ルートが / である場合、変換は SMO 全体に適用されます。
ビジネス・オブジェクト・マップ・エディターは、以下の変換タイプ (マッピング・タイプとも呼ばれる) をサポートしています。
変換 (マッピング) タイプ | 説明 |
---|---|
移動 | ソース・フィールドの値をターゲット・フィールドにコピーします。例えば、顧客の名前を入力ビジネス・オブジェクトから出力ビジネス・オブジェクトへコピーします。 |
抽出 | ソース・フィールドの値の一部を抽出して、それをターゲット・フィールドに割り当てます。 ソース・フィールドの値はストリングである必要があります。例えば、住所の一部を入力ビジネス・オブジェクトから出力ビジネス・オブジェクトへコピーします。 抽出変換は、Java™ の String.substring() メソッドと類似しています。 |
結合 | 複数のソース・フィールドの値を結合して、結合した値をターゲット・フィールドに割り当てます。 結合変換のターゲットは、ストリングである必要があります。 例えば、入力ビジネス・オブジェクトのファーストネーム John とラストネーム Smith を結合して、出力ビジネス・オブジェクトで名前 John Smith を作成します。 |
サブマップ | サブマップを使用すると、複合タイプ (ビジネス・オブジェクト) 間のマッピングを実行できます。 ビジネス・オブジェクト・マップの入力および出力は、サブマップ変換のソースおよびターゲットと同じタイプにする必要があります。サブマップを使用すると、マッピング定義を再利用できます。サブマップ変換では、事前に定義されているマップを使用して、メッセージの 2 つの部分の間で変換を実行します。 ソースまたはターゲットが型付けの弱いエレメントであっても、サブマップ変換を使用できます。 |
カスタム | 入力および出力をマッピングするためのロジックを指定する Java コードを生成します。 |
割り当て | ターゲット・フィールドに定数値を割り当てます。割り当て変換にはターゲット・フィールドはありますが、ソース・フィールドはありません。 |
リレーションシップ | リレーションシップ管理を実行します。リレーションシップは、複数のビジネス・オブジェクトのデータ間の関連を作成します。入力ビジネス・オブジェクトおよび出力ビジネス・オブジェクトのフィールドに等価なデータが入っているが、その表現が異なる場合は、変換ステップにリレーションシップを使用できます。 リレーションシップを作成するには、WebSphere Integration Developer および新規リレーションシップ・ウィザードを使用できます。既存のリレーションシップを再利用することもできます。 リレーションシップ変換のソースおよびターゲットは、複合タイプ (ビジネス・オブジェクト) である必要があります。 |
カスタム割り当て | ターゲット・フィールドに割り当てる値を決定するための Java コードを作成します。 カスタム割り当て変換にはターゲット・フィールドはありますが、ソース・フィールドはありません。 |
カスタム・コールアウト | ソース・フィールドの値を取り込んで、その値を独自のロジックで使用する Java コードを生成します。 カスタム・コールアウト変換は、他の変換を実行する前に初期化を行う場合に役立ちます。 カスタム・コールアウト変換にはソース・フィールドはありますが、ターゲット・フィールドはありません。 |
移動変換では、プリミティブ型ソース・フィールドの値がプリミティブ型ターゲット・フィールドにコピーされます。1 つのプリミティブ型フィールドを別のプリミティブ型フィールドにマップできます。 ただし、データを変換できない場合は、実行時に例外が発生します。例えば、実行時にストリング 123A を整数 (int) にマップした場合は、サーバー・ログに例外が記録されます。 移動変換を使用して複合タイプ (ビジネス・オブジェクト) をマップすることはできません。 ビジネス・オブジェクト間でマッピングを行うには、サブマップが必要です。
カスタム変換を使用すると、独自の変換ロジックを作成できます。 カスタム変換では、Java コードを使用します。ソース・フィールドとターゲット・フィールドがある場合は、カスタム変換を使用します。 ソース・フィールドがない場合は、カスタム割り当て変換を使用できます。これは、割り当て変換と類似していますが、割り当てる値を決定するために Java コードを使用する点が異なります。 設定するターゲット・フィールドがない場合は、カスタム・コールアウト変換を使用して Java コードを呼び出すことができます。 この Java コードは、他の変換が実行される前に値を初期化することがあります。
場合によっては、ソースまたはターゲットの型付けが弱い場合でも、移動変換、サブマップ変換、およびカスタム変換を使用できます。フィールドに複数のタイプのデータ・エレメントを含めることができる場合、それは型付けの弱いフィールドです。 例えば、ソース・エレメントまたはターゲット・エレメントのタイプが anyType である場合、サブマップを使用できます。ただし、ソース・データにターゲット・データとの互換性がない場合は、実行時に例外が発生します。詳しくは、WebSphere Integration Developer の資料で、型付けの弱いコンテンツによるマッピングに関するトピックを参照してください。
ビジネス・オブジェクト・マップ・メディエーション・プリミティブは、 データベース・ルックアップ・メディエーション・プリミティブが呼び出される前または後に、データを操作する必要がある場合に役立ちます。
メッセージを変換するには、XSLT メディエーション・プリミティブまたはビジネス・オブジェクト・マップ・メディエーション・プリミティブを使用します。重要な違いは、XSLT プリミティブでは、スタイル・シートを使用して XML 形式で変換を実行するのに対して、ビジネス・オブジェクト・マップ・プリミティブでは、サービス・データ・オブジェクト (SDO) を使用してビジネス・オブジェクト上で変換を実行するという点です。既存の XSL スタイル・シートがある場合は、それを XSLT プリミティブと組み合わせて再利用できる可能性があります。また、既存のビジネス・オブジェクト・マップがある場合は、それをビジネス・オブジェクト・マップ・プリミティブと組み合わせて再利用できる可能性があります。 ある種類の変換では XSL 形式の方が実行しやすく、一方でビジネス・オブジェクト・マップを使用する方が実行しやすい変換もあります。
プロパティー | 有効な値 | デフォルト |
---|---|---|
ルート | ストリング: 変換のルートを表す XPath 式 | /body |
マッピング・ファイル | ストリング |
ビジネス・オブジェクト・マップ・メディエーション・プリミティブを使用する場合は、 以下の事項を考慮してください。