WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

SOAP メッセージを含めるようにメッセージ・マップを構成

WebSphere® Message Broker では、SOAP メッセージは汎用モデルで記述され、汎用モデルには SOAP エンベロープ とオプションで SOAP 添付ファイルが含まれています。「キャスト」機能を使用して、SOAP メッセージ・パーツをメッセージ・マップに定義します。

このタスクについて

SOAP メッセージは、エンベロープとオプションの添付ファイルから構成されます。エンベロープには、SOAP ヘッダーと SOAP 本体が含まれています。SOAP 本体には、SOAP 障害を含めることができます。

WebSphere Message Broker では、SOAP ノードを使用する場合、SOAP メッセージは汎用モデルで記述されます。詳しくは、『SOAP ツリーの概説』を参照してください。

標準 SOAP パーツに加え、SOAP メッセージ汎用モデルにはコンテキスト・パーツが含まれています。これには、処理中の現行 SOAP メッセージについての前後関係が含まれます。これは、その構造が自動的に含まれるメッセージ・マップ内の唯一のパーツです。その他の SOAP メッセージ・パーツは、「キャスト」機能を使用して手動で定義する必要があります。

以下の表では、SOAP メッセージ構造と WebSphere Message Broker SOAP メッセージ汎用モデルを比較します。

表 1. SOAP メッセージ構造と WebSphere Message Broker SOAP メッセージ表現の比較
標準 SOAP メッセージ・パーツ 状況 WebSphere Message Broker SOAP メッセージ・パーツ WebSphere Message Broker 状況
    コンテキスト 必須
SOAP ヘッダー (SOAP エンベロープのパーツ) オプション Header (SOAP_Domain_Msg のパーツ) オプション
SOAP 本体 (SOAP エンベロープのパーツ) 必須 Body (SOAP_Domain_Msg のパーツ) 必須
SOAP 障害 (SOAP 本体のパーツ) オプション Fault (本体のパーツ) オプション
SOAP 添付ファイル オプション Attachment (SOAP_Domain_Msg のパーツ) オプション

このシナリオでは、SOAP_Domain_Msg を構成している標準 SOAP メッセージ・パーツをマップするようメッセージ・マップを構成する方法を学習します。

手順

Mapping ノードが SOAPExtract ノードなしで SOAPInput ノードから直接接続されている場合は、以下のステップを実行して SOAP_Domain_Msg を構成します。

  1. 入力 Context オブジェクトと出力 Context オブジェクトの間の Move 変換を定義します。
  2. 入力 Header オブジェクトと出力 Header オブジェクトの間の Move 変換を定義します。

    Header をコピーするよう Move 変換を定義した後のメッセージ・マップを以下の図に示します。

    この図は、入力 Header オブジェクトと出力 Header オブジェクトの間の Move 変換、および入力 Context フォルダーと出力 Context フォルダーの間の Move 変換を示しています。

    SOAP ヘッダー・エレメントには、SOAP メッセージの処理方法を定義する属性など、アプリケーション固有の情報が含まれています。

  3. Body オブジェクトの変換を定義します。

    「キャスト」機能を使用して、SOAP 本体パーツを定義します。属性および他の本体パーツをキャストできます。その後、追加した各本体パーツの入力エレメントと出力エレメント間の変換を定義します。

    以下のステップを実行して、SOAP 本体パーツとそれらの変換を定義します。

    1. SOAP 本体 xsd:any エレメントを個別タイプにキャストします。詳しくは、個別タイプへの SOAP 本体のキャストを参照してください。
    2. SOAP 本体の基本タイプ・エレメントを派生タイプ・エレメントにキャストします。派生タイプ・エレメントは、拡張タイプ・エレメントともいいます。詳しくは、SOAP 本体内の派生タイプの構成を参照してください。

      メッセージ・マップで、基本タイプを派生タイプ、つまり、拡張タイプにキャストして、データ・タイプのサブタイプ間の変換を定義できるようにします。例えば、住所の表記は、国によって異なります。さまざまな国の住所を共通の住所用の複合構造にマップしたい場合があります。

    3. If、Else if、および Else 変換を作成し、条件を設定することにより、入出力メッセージ・アセンブリー内で特定のタイプまたは派生タイプとして定義されているエレメント間のマッピングのフローを制御するよう構成します。詳しくは、メッセージ・マップでの If、Else if、および Else 変換の構成を参照してください。
  4. 入力 Attachment オブジェクトと出力 Attachment オブジェクトの間の Move 変換を定義します。

タスクの結果

SOAP メッセージを変換するメッセージ・マップが構成されました。

SOAP_Domain_Msg 入力オブジェクトと SOAP_Domain_Msg 出力オブジェクトの間の If、Else if、および Else 変換を使用する場合、SOAP_Domain_Msg 内の各エレメントを手動で構成する必要があります。エレメントの情報が失われないように、SOAP_Domain_Msg 入力オブジェクト内の各エレメントを対応する出力オブジェクトにマップする必要があります。
注: 入力オブジェクトのパーツで、出力オブジェクトへの変換が定義されていないエレメントは、出力構造から削除され、それらの値は失われます。

これで、その住所の国に基づいて住所データを変換するメッセージ・マップができました。メッセージ・マップには、定義した If、Else if、および Else 変換を使用するネストされたマップが含まれています。

前のステップを完了した後のメッセージ・マップを以下の図に示します。

この図は、If、Else if、および Else 変換が構成された後のメッセージ・マップを示しています。

次のタスク

シナリオを正常に完了しました。これで、マップを使用する準備ができました。