Web Service サンプルの作成

Web Service のサンプルには次の 2 つの部分があります。

Web Service Host サンプルの作成

これを実行したくない場合は、 完成したメッセージ・セット・プロジェクトとメッセージ・フロー・プロジェクトが このサンプルに用意されています。

Web Service Host サンプルを作成するには、以下を行います。

  1. メッセージ・セットを作成します。 これは、Web サービス・フォーマットのメッセージ (XML) およびレガシー・フォーマット (CWF) の両方で使用できます。
    1. Message Brokers Toolkit を開始します。
    2. 「ブローカー・アプリケーション開発」パースペクティブに入ったことを確認します。
    3. 「ファイル」>「新規」>「メッセージ・セット・プロジェクト」を クリックします。
    4. 「プロジェクト名」「WSHOST_MSP1」に 設定し、「次へ」をクリックします。
    5. 「メッセージ・セット名」「WSHOST_MS1」に 設定します。
    6. 「ネーム・スペースを使用」を 選択し、「次へ」をクリックします。
    7. 「カスタム・ワイヤー・フォーマット名」および「XML ワイヤー・フォーマット名」を 選択し、「終了」をクリックします。
    8. messageset.mset を閉じ、内容を保管します。
  2. C ヘッダー・ファイルをインポートします。 これは、レガシー・アプリケーションの入出力メッセージにマップされます。
    1. 「ファイル」>「インポート」> 「ファイル・システム」>「次へ」を クリックします。
    2. 参照を使ってプロジェクト WSHOST_LEGACY から「legacyservice.h」を 選択します。
    3. 「インポート先フォルダー」「WSHOST_MSP1」に 設定し、「終了」をクリックします。
    4. 以下のように、ブローカー・メッセージ定義ファイルを C ヘッダー・ファイルから作成します。
      1. 「リソース・ナビゲーター」で「legacyservice.h」を 右クリックし、「新規」>「メッセージ定義ファイル」をクリックします。
      2. 「C ヘッダー・ファイル」のラジオ・ボタンが事前に選択されている はずです。 選択されていない場合は、それを選択し、「次へ」をクリックします。
      3. プロジェクト WSHOST_MSP1 内の「legacyservice.h」が事前に 選択されているはずです。 選択されていない場合は、それを選択し、「次へ」をクリックします。
      4. メッセージ・セット・ペインで、「WSHOST_MSP1」を 展開し、「WSHOST_MS1」を選択します。
      5. 「ターゲット・ネーム・スペースを使用」を 選択し、「http://www.brokersamplewshost.ibm.com」を URL として 入力し、「次へ」をクリックします。
      6. 「ソース構造」ペインで、「tagIA81CONF」を クリックし、> ボタンを クリックし、「すべて選択」>「終了」をクリックします。
    5. legacyservice.mxsd を閉じて、内容を保管します。
  3. SOAP メッセージ定義を作成します。
    1. 「リソース・ナビゲーター」でメッセージ・セット「WSHOST_MS1」を 右クリックし、「新規」>「メッセージ定義ファイル」をクリックします。
    2. ラジオ・ボタン「IBM 提供メッセージ」を クリックし、「次へ」をクリックします。
    3. 「IBM 提供メッセージ」ペインで、 メッセージ「ibm¥soap¥envelope¥soapenv11.xsd」を 選択し、「次へ」をクリックします。
    4. 「WSHOST_MSP1」を 展開し、「WSHOST_MS1」を選択し、「次へ」をクリックします。
    5. 「メッセージを作成するためのグローバル・エレメントを選択してください」で、エレメントが何も 選択されていないことを確認し、 「終了」をクリックします。
    6. soapenv11.mxsd を閉じ、内容を保管します。
    7. 「エンベロープ」がメッセージとして自動的に作成されることに注意してください。

      Message Brokers Toolkit の「問題」ビューには、数多くの警告が示されます。 これらの警告は、主に CWF を SOAP メッセージ定義に対して定義したことが原因で生じたもので、無視してもかまいません。

  4. メッセージのカテゴリーを作成します (WSDL を生成するための前提条件)。

    WSDL の場合、操作名はすべて、これを囲むポート・タイプの中で固有のものでなければなりません。 そのため、メッセージ・カテゴリー内で定義される要求と応答メッセージとは、異なっている必要があります。 これを明確にするため、2 つの新しいメッセージをメッセージ・セットに定義します。 1 つは Web サービスの入力用、もう 1 つは Web サービスの出力用です。 これらは、C ヘッダー・ファイルからデータを取り込んだ mxsd ファイル内に作成されます。

    1. 「legacyservice.mxsd」を開きます。
    2. 「アウトライン」ビューで、「エレメントと属性」を右マウス・ボタンでクリックし、「グローバル・エレメントの追加」をクリックします。
    3. エレメントの名前を「IA81CONFIN」に変更し、Enter キーを押します。
    4. IA81CONFIN エレメント用の「タイプ」セルを選択します。 リストから「(続く...)」 を選択します。
    5. tagIA81CONF を選択し、「OK」をクリックします。
    6. 「アウトライン」ビューで、「メッセージ」を 右クリックし、「グローバル・エレメントからメッセージを追加」をクリックします。
    7. プルダウン・リストから tns:IA81CONFIN を選択し、Enter を押します。
    8. 「アウトライン」ビューで、「エレメントと属性」を右マウス・ボタンでクリックし、「グローバル・エレメントの追加」をクリックします。
    9. エレメントの名前を「IA81CONFOUT」に変更し、Enter キーを押します。
    10. IA81CONFOUT エレメント用の「タイプ」セルを選択します。 リストから 「(続く...)」 を選択します。
    11. tagIA81CONF を選択し、「OK」をクリックします。
    12. 「アウトライン」ビューで、「メッセージ」を 右クリックし、「グローバル・エレメントからメッセージを追加」 をクリックします。
    13. プルダウン・リストから tns:IA81CONFOUT を選択し、Enter を押します。
    14. legacyservice.mxsd を閉じて、内容を保管します。
    15. 「ファイル」>「新規」>「メッセージ・カテゴリー・ファイル」を クリックします。
    16. 「カテゴリーの種類」「wsdl」に 設定します。
    17. 「カテゴリーの使用法」「wsdl:requestresponse」に 設定し、「次へ」をクリックします。
    18. メッセージ・セット・プロジェクト WSHOST_MSP1 内の メッセージ・セット「WSHOST_MS1」を選択します。
    19. 「ファイル名」フィールドで、「cat1」と 入力し、「次へ」をクリックします。
    20. 上部のペインで、「IA81CONFIN」 および「IA81CONFOUT」を選択します (複数選択を行うには、CTRL キーを押しながら選択します)。
    21. 下部のペインの、IA81CONFOUT の 「種類」セルの値を output に設定します (値を選択できるメニューを表示するには、セルをクリックします)。
    22. 下部のペインで、「IA81CONFIN」を選択した後、「終了」をクリックします。
    メッセージ・カテゴリー・ファイルが新規作成されます。
  5. WSDL を生成します。
    1. 「ファイル」>「新規」>「WSDL 定義」>「次へ」をクリックします。
    2. メッセージ・セット・プロジェクト WSHOST_MSP1 内の メッセージ・セット「WSHOST_MS1」を選択し、「次へ」を クリックします。
    3. 「WSHOST_MSP1」を選択し、「新規フォルダーの作成」を クリックします。
    4. 「wsdl」をフォルダー名として 入力し、「OK」をクリックします。
    5. 「単一」ラジオ・ボタンが選択されていることを 確認し、「次へ」をクリックします。
    6. 「WSDL 詳細を指定します」ペインで、「スタイル」「文書」に 設定されていることを確認し、「次へ」をクリックします。
    7. 「カテゴリーの選択」ペインで、「すべて選択」>「次へ」を クリックします。
    8. 「バインディング」ペインで、「SOAP/HTTP」>「次へ」をクリックします。
    9. 「サービス・プロパティー」ペイン で、「ポート・アドレス」「http://localhost:7080/samplebrokerwshost」に 設定し、「終了」をクリックします。
  6. メッセージ・フローを作成します。 フローは http 要求を取得してから、MQ を使用してレガシー・アプリケーションを起動し、レガシー・アプリケーションの応答から HTTP リクエスターに情報を送付します。
    1. 「ファイル」>「新規」>「メッセージ・フロー・プロジェクト」を クリックします。
    2. 「プロジェクト名」「WSHOST_MFP1」に 設定し、「次へ」をクリックします。
    3. 「参照プロジェクト」ペインで「WSHOST_MSP1」を 選択し、「終了」をクリックします。
    4. 「リソース・ナビゲーター」で「WSHOST_MFP1」を 右クリックし、「新規」>「メッセージ・フロー」をクリックします。
    5. 「スキーマ」「WSHOST_MFP1」に 設定します。
    6. 「名前」「WSHOST_WSHOST1」に 設定し、「終了」をクリックします。
    7. パレットを表示 (非表示であった場合) して、「メッセージ・フロー」キャンバスに以下のノードを追加します。
      • 1 つの HTTPInput ノード
      • 3 つの Compute ノード
      • 2 つの MQOutput ノード
      • 1 つの MQGet ノード
      • 1 つの MQInput ノード
      • 1 つの HTTPReply ノード
    8. このパレットの「接続」をクリックし、以下のノードおよびターミナルを 接続します。
      • HTTPInput (out) - Compute (in)
      • Compute (out) - MQOutput (in)
      • MQOutput (out) - Compute1 (in)
      • Compute1 (out) - MQOutput1 (in)
      • MQInput (out) - MQGet (in)
      • MQGet (out) - Compute2 (in)
      • Compute2 (out) - HTTPReply (in)
  7. いくつかのノードを名前変更すると、理解が容易になるかもしれません。 ノードを名前変更するには、そのノードを右クリックし、「名前変更」をクリックします。 提案されている名前は、以下のとおりです。
  8. HTTPInput ノードを以下のようにカスタマイズします。
    1. HTTPInput ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」を 選択し、「URL セレクター」「/samplebrokerwshost」に設定します。
    3. 「デフォルト」を選択します。
      • 「メッセージ・ドメイン」には、 ドロップダウン・リストから「MRM」を選択します。
      • 「メッセージ・セット」には、 ドロップダウン・リストから「WSHOST_MS1」を選択します。
      • 「メッセージ・タイプ」には、「エンベロープ (Envelope)」を 入力します。
      • 「メッセージ・フォーマット」には、 ドロップダウン・リストから「XML1」を選択します。
    4. 「OK」をクリックします。
  9. Compute ノードを以下のようにカスタマイズします。
    1. Compute ノードを右クリックし、「ESQL を開く」をクリックします。
    2. このモジュールの BEGIN と END の間に、以下の ESQL をコーディングします。 キーワードを選択するには、コンテンツ・アシスト (Ctrl + スペース) を使用します。 コンテンツ・アシストで初めて SOAP 本体エレメントと IA81CONFIN エレメントを選択するときには、最初の 2 行のコメントに似た DECLARE NAMESPACE ステートメントが生成されるはずです。 このコードをコピーして貼り付けるときには、DECLARE NAMESPACE ステートメントを確実にアンコメントしてください。
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      CALL CopyMessageHeaders();
      
      -- Output is MQ, so remove HTTP headers
      	SET OutputRoot.HTTPInputHeader = null;
      
      -- Output is legacy, so set wire format and message name
      	SET OutputRoot.Properties.MessageType = 'msg_tagIA81CONF';
      	SET OutputRoot.Properties.MessageFormat = 'CWF1';
      
      -- Add an MQMD
      	CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
      
      -- Build message to be sent to legacy
      	SET OutputRoot.MRM.MessageId
      	    = InputBody.tns:Body.ns:IA81CONFIN.MessageId;
      	SET OutputRoot.MRM.OrderNumber
          	= InputBody.tns:Body.ns:IA81CONFIN.OrderNumber;
      	SET OutputRoot.MRM.ItemReference
          	= InputBody.tns:Body.ns:IA81CONFIN.ItemReference;
      	SET OutputRoot.MRM.ItemQuantity
          	= InputBody.tns:Body.ns:IA81CONFIN.ItemQuantity;
      	SET OutputRoot.MRM.CustomerNumber
          	= InputBody.tns:Body.ns:IA81CONFIN.CustomerNumber;
      	SET OutputRoot.MRM.DeliveryRef 
          	= InputBody.tns:Body.ns:IA81CONFIN.DeliveryRef;
      	SET OutputRoot.MRM.Confirm 
          	= InputBody.tns:Body.ns:IA81CONFIN.Confirm;
      	SET OutputRoot.MRM.filler1 
          	= InputBody.tns:Body.ns:IA81CONFIN.filler1;
      
      	RETURN TRUE;
  10. MQOutput (MQOutput to legacy) ノードを以下のようにカスタマイズします。
    1. MQOutput ノードを右クリックし、「プロパティー」をクリックします。
    2. レガシー・アプリケーションをブローカーとは異なる WebSphere MQ キュー・マネージャー上で実行しようと している場合は、「基本」を選択し、「キュー・マネージャー名」を レガシー・アプリケーションのキュー・マネージャーの名前に設定します。 それ以外の場合は、ブランクのままにします。
    3. 「キュー名」「WSHOST1_OUT1」に設定します。
    4. 「拡張」を 選択し、「トランザクション・モード」「はい」に設定します。
    5. 「メッセージ・コンテキスト」「デフォルト」に 設定します。
    6. 「要求」を選択し、「要求」の チェック・ボックスを選択します。
    7. 「応答先キュー」「WSHOST1_IN1」に 設定し、「OK」をクリックします。
  11. Compute1 ノードを以下のようにカスタマイズします。
    1. Compute1 ノードを右クリックし、「ESQL を開く」をクリックします。
    2. このモジュールの BEGIN と END の間に、以下の ESQL をコーディングします。 キーワードを選択するには、コンテンツ・アシスト (Ctrl + スペース) を使用します。 コンテンツ・アシストで初めて SOAP 本体エレメントを選択するときには、最初の行のコメントに似た DECLARE NAMESPACE ステートメントが生成されるはずです。
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      -- The output message built in this node stores the HTTP context.
      -- Any format may be suitable, but we are using a
      -- self-defined field in a SOAP Header to do this
      -- So the wire format is XML
      -- Create the target message set properties
      
      	SET OutputRoot.Properties.MessageSet = InputRoot.Properties.MessageSet;
      	SET OutputRoot.Properties.MessageType = 'Envelope';
      	SET OutputRoot.Properties.MessageFormat = 'XML1';
      
      -- Create the MQMD and set the CorrelId
      -- The CorrelId needs to be set to the MsgId of the message sent
      -- to the legacy application.  When the reply from the legacy
      -- application is received, we will MQGet from the store
      -- queue with correlid equal to the correlid of the legacy reply
      
      	SET OutputRoot.MQMD.CorrelId
      = InputLocalEnvironment.WrittenDestination.MQ.DestinationData.msgId;
      
      -- Build message to store HTTP context
      
      	SET OutputRoot.MRM.tns:Header.HTTP.RequestIdentifier
          = InputLocalEnvironment.Destination.HTTP.RequestIdentifier;
      
      	RETURN TRUE;
  12. MQOutput1 (MQOutput store HTTP state) ノードを以下のようにカスタマイズします。
    1. MQOutput1 ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」を 選択し、「キュー名」「WSHOST1_STATE1」に設定します。
    3. 「拡張」を 選択し、「トランザクション・モード」「はい」に設定します。
    4. 「メッセージ・コンテキスト」「デフォルト」に 設定します。
    5. 「OK」をクリックします。
  13. MQInput (MQInput from legacy) ノードを以下のようにカスタマイズします。
    1. MQInput ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」を 選択し、「キュー名」「WSHOST1_IN1」に設定します。
    3. 「デフォルト」を選択します。
      • 「メッセージ・ドメイン」には、 ドロップダウン・リストから「MRM」を選択します。
      • 「メッセージ・セット」には、 ドロップダウン・リストから「WSHOST_MS1」を選択します。
      • 「メッセージ・タイプ」には、「msg_tagIA81CONF」を 入力します。
      • 「メッセージ・フォーマット」には、 ドロップダウン・リストから「CWF1」を選択します。
    4. 「OK」をクリックします。
  14. MQGet (MQGet stored HTTP state) ノードを以下のようにカスタマイズします。
    1. MQGet ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」を 選択し、「キュー名」「WSHOST1_STATE1」に設定します。
    3. 「デフォルト」を選択します。
      • 「メッセージ・ドメイン」には、 ドロップダウン・リストから「MRM」を選択します。
      • 「メッセージ・セット」には、 ドロップダウン・リストから「WSHOST_MS1」を選択します。
      • 「メッセージ・タイプ」には、「エンベロープ (Envelope)」を 入力します。
      • 「メッセージ・フォーマット」には、 ドロップダウン・リストから「XML1」を選択します。
    4. 「拡張」を選択します。
      • 「生成モード」には、 ドロップダウン・リストから「メッセージと LocalEnvironment」を選択します。
      • 「メッセージのコピー」には、 ドロップダウン・リストから「メッセージ全体のコピー」を選択します。
    5. 「要求」を 選択し、「相関 ID で取得」のチェック・ボックスを選択します。
    6. 「要求」を 選択し、「出力データのロケーション」「OutputLocalEnvironment」に 設定します。
    7. 「OK」をクリックします。
  15. Compute2 ノードを以下のようにカスタマイズします。
    1. Compute2 ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」を 選択し、「計算モード」「LocalEnvironment とメッセージ」に 設定します。
    3. 「OK」をクリックします (HTTP コンテキストを HTTPReply ノードに 渡せるようにするため)。
    4. ノードを右クリックし、「ESQL を開く」を選択します。
    5. このモジュールの BEGIN と END の間に、以下の ESQL をコーディングします。
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      -- Input is CWF, output is SOAP/XML
      	SET OutputRoot.Properties.MessageSet = InputRoot.Properties.MessageSet;
      	SET OutputRoot.Properties.MessageType = 'Envelope';
      	SET OutputRoot.Properties.MessageFormat = 'XML1';
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFOUT = InputRoot.MRM;
      
      -- Set the http reply identifier
      	SET OutputLocalEnvironment.Destination.HTTP.RequestIdentifier =
       CAST(InputLocalEnvironment.MRM.tns:Header.HTTP.RequestIdentifier AS BLOB);
      	
      	RETURN TRUE;
  16. WSHOST_WSHOST1.esql を閉じ、内容を保管します。
  17. WSHOST_WSHOST1.msgflow を閉じ、内容を保管します。
  18. レガシー・アプリケーションをブローカーとは異なる WebSphere MQ キュー・マネージャー上で実行しようとしている場合は、 レガシー・アプリケーションの入力キューをレガシー・アプリケーションのキュー・マネージャーに定義する必要があります。 適切な WebSphere MQ ユーティリティーを使用して、次のキュー定義を入力してください。

    DEFINE QLOCAL(WSHOST1_OUT1) REPLACE

Web Service Client サンプルの作成

これを実行したくない場合は、 完成したメッセージ・セット・プロジェクトとメッセージ・フロー・プロジェクトが このサンプルに用意されています。

Web Service Client サンプルを作成するには、以下を行います。

  1. メッセージ・セットを作成します。 これは、Web サービス・フォーマットのメッセージ (XML) およびレガシー・フォーマット (CWF) の両方で使用できます。
    1. Message Brokers Toolkit を開始します。
    2. 「ブローカー・アプリケーション開発」パースペクティブに入ったことを確認します。
    3. 「ファイル」>「新規」>「メッセージ・セット・プロジェクト」を クリックします。
    4. 「プロジェクト名」「WSCLIENT_MSP1」に 設定し、「次へ」をクリックします。
    5. 「メッセージ・セット名」「WSCLIENT_MS1」に 設定します。
    6. 「ネーム・スペースを使用」を 選択し、「次へ」をクリックします。
    7. 「カスタム・ワイヤー・フォーマット名」および「XML ワイヤー・フォーマット名」を 選択し、「終了」をクリックします。
    8. messageset.mset を閉じ、内容を保管します。
  2. C ヘッダー・ファイルをインポートします。 これは、レガシー・アプリケーションの入出力メッセージ定義を提供します。
    1. プロジェクト WSHOST_LEGACY から ファイル「legacyservice.h」をコピーし、これをプロジェクト WSCLIENT_MSP1 に貼り付けます。
    2. 以下のように、ブローカー・メッセージ定義ファイルを C ヘッダー・ファイルから作成します。
      1. 「リソース・ナビゲーター」で「legacyservice.h」を 右クリックし、「新規」>「メッセージ定義ファイル」をクリックします。
      2. 「C ヘッダー・ファイル」のラジオ・ボタンが事前に選択されている はずです。 選択されていない場合は、それを選択し、「次へ」をクリックします。
      3. プロジェクト WSCLIENT_MSP1 内の「legacyservice.h」が事前に 選択されているはずです。 選択されていない場合は、それを選択し、「次へ」をクリックします。
      4. メッセージ・セット・ペインで、「WSCLIENT_MSP1」を展開し、「WSCLIENT_MS1」を選択した後、「次へ」をクリックします。
      5. ソース構造ペインで、「tagIA81BUY」「>」ボタン、「tagIA81CONF」「>」ボタンの順にクリックした後、 「すべて選択」>「終了」をクリックします。
    3. legacyservice.mxsd を閉じて、内容を保管します。
  3. Web サービス用の WSDL をインポートします。
    1. 「ファイル」>「インポート」> 「ファイル・システム」>「次へ」を クリックします。
    2. 参照を使ってプロジェクト「WSHOST_MSP1」からディレクトリー wsdl を選択します。
    3. 「インポート先フォルダー」「WSCLIENT_MSP1」に 設定し、「終了」をクリックします。
    4. 以下のように、ブローカー・メッセージ定義ファイルを WSDL から作成します。
      1. 「リソース・ナビゲーター」で、プロジェクト「WSCLIENT_MSP1」「wsdl」ディレクトリー内の「WSHOST_MS1Service.wsdl」を右クリックした後、「新規」>「メッセージ定義ファイル」をクリックします。
      2. 「WSDL ファイル」のラジオ・ボタンが事前に選択されている はずです。 選択されていない場合は、それを選択し、「次へ」をクリックします。
      3. プロジェクト WSCLIENT_MSP1 内の「WSHOST_MS1Service.wsdl」が事前に 選択されているはずです。 選択されていない場合は、それを選択し、「次へ」をクリックします。
      4. メッセージ・セット・ペインで、「WSCLIENT_MSP1」を 展開し、「WSCLIENT_MS1」を選択します。
      5. ネーム・スペース・ペインで、ネーム・スペース「http:www.brokersamplewshost.ibm.com」のネーム・スペース接頭部を wshost に設定した後、 「次へ」をクリックします。
      6. 生成されるファイルのリストが表示されます。 「終了」をクリックします。
  4. メッセージ・フローを作成します。 フローは入力として WebSphere MQ メッセージを取り、Web サービス要求を作成し、HTTP を使ってその要求を送信します。 HTTP 応答が受信され、WebSphere MQ 応答メッセージが送信されます。
    1. 「ファイル」>「新規」>「メッセージ・フロー・プロジェクト」を クリックします。
    2. 「プロジェクト名」「WSCLIENT_MFP1」に 設定し、「次へ」をクリックします。
    3. 「参照プロジェクト」ペインで「WSCLIENT_MSP1」を 選択し、「終了」をクリックします。
    4. 「リソース・ナビゲーター」で「WSCLIENT_MFP1」を 右クリックし、「新規」>「メッセージ・フロー」をクリックします。
    5. 「スキーマ」「WSCLIENT_MFP1」に 設定します。
    6. 「名前」「WSCLIENT_WSCLIENT1」に 設定し、「終了」をクリックします。
    7. パレットを表示 (非表示であった場合) して、「メッセージ・フロー」キャンバスに以下のノードを追加します。
      • 1 つの MQInput ノード
      • 2 つの Compute ノード
      • 1 つの MQReply ノード
      • 1 つの HTTPRequest ノード
    8. このパレットの「接続」をクリックし、以下のノードおよびターミナルを 接続します。
      • MQInput (out) - Compute (in)
      • Compute (out) - HTTPRequest (in)
      • HTTPRequest (out) - Compute1 (in)
      • Compute1 (out) - MQreply (in)
  5. MQInput (MQInput from legacy) ノードを以下のようにカスタマイズします。
    1. MQInput ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」を 選択し、「キュー名」「WSCLIENT1_IN1」に設定します。
    3. 「デフォルト」を選択します。
      • 「メッセージ・ドメイン」には、 ドロップダウン・リストから「MRM」を選択します。
      • 「メッセージ・セット」には、 ドロップダウン・リストから「WSCLIENT_MS1」を選択します。
      • 「メッセージ・タイプ」には、ドロップダウン・リストから 「msg_tagIA81BUY」を選択します。
      • 「メッセージ・フォーマット」には、 ドロップダウン・リストから「CWF1」を選択します。
    4. 「OK」をクリックします。
  6. Compute ノードを以下のようにカスタマイズします。
    1. Compute ノードを右クリックし、「ESQL を開く」をクリックします。
    2. このモジュールの BEGIN と END の間に、以下の ESQL をコーディングします。 キーワードを選択するには、コンテンツ・アシスト (Ctrl + スペース) を使用します。 コンテンツ・アシストで初めて SOAP 本体エレメントと IA81CONFIN エレメントを選択するときには、最初の 2 行のコメントに似た DECLARE NAMESPACE ステートメントが生成されるはずです。 このコードをコピーして貼り付けるときには、DECLARE NAMESPACE ステートメントを確実にアンコメントしてください。
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      CALL CopyMessageHeaders();
      
      -- Save the MQMD; sending to HTTP later in the flow destroys it
      	SET Environment.MQMD = InputRoot.MQMD;
          
      -- Input is CWF, Output is SOAP, so set wire format and message name
      	SET OutputRoot.Properties.MessageType = 'Envelope';
      	SET OutputRoot.Properties.MessageFormat = 'XML1';
      
      -- Build message to be sent to web service
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.MessageId = 'IA81CONF';
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.OrderNumber = InputBody.OrderNumber;
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.ItemReference = InputBody.ItemReference;
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.ItemQuantity = InputBody.ItemQuantity;
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.CustomerNumber = InputBody.CustomerNumber;
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.DeliveryRef = ' ';
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.Confirm = ' ';
      	SET OutputRoot.MRM.tns:Body.ns:IA81CONFIN.filler1 = ' ';
      
      	RETURN TRUE;
  7. HTTPRequest ノードを以下のようにカスタマイズします。
    1. HTTPRequest ノードを右クリックし、「プロパティー」をクリックします。
    2. 「基本」を選択し、「Web サービス URL」http://localhost:7080/samplebrokerwshost に設定します。Web サービスをホスティングするブローカーがこのブローカーとは別のマシン上にあるか、またはデフォルト以外のポート番号を使用しているか、あるいはその両方の場合、この URL を必要に応じて修正してください。
    3. 「デフォルト」を選択します。
      • 「メッセージ・ドメイン」には、 ドロップダウン・リストから「MRM」を選択します。
      • 「メッセージ・セット」には、 ドロップダウン・リストから「WSCLIENT_MS1」を選択します。
      • 「メッセージ・タイプ」には、ドロップダウン・リストから「エンベロープ」を選択します。
      • 「メッセージ・フォーマット」には、 ドロップダウン・リストから「XML1」を選択します。
    4. 「OK」をクリックします。
  8. Compute1 ノードを以下のようにカスタマイズします。
    1. Compute1 ノードを右クリックし、「ESQL を開く」をクリックします。
    2. このモジュールの BEGIN と END の間に、以下の ESQL をコーディングします。 キーワードを選択するには、コンテンツ・アシスト (Ctrl + スペース) を使用します。 コンテンツ・アシストで初めて SOAP 本体エレメントを選択するときには、最初の行のコメントに似た DECLARE NAMESPACE ステートメントが生成されるはずです。
      --DECLARE tns NAMESPACE 'http://schemas.xmlsoap.org/soap/envelope/';
      --DECLARE ns NAMESPACE 'http://www.brokersamplewshost.ibm.com';
      
      CALL CopyMessageHeaders();
      
      -- Output is MQ, so remove HTTP headers
          SET OutputRoot.HTTPResponseHeader = NULL;
              
      -- Output is CWF, so set the target message set properties
      
      	SET OutputRoot.Properties.MessageType = 'msg_tagIA81CONF';
      	SET OutputRoot.Properties.MessageFormat = 'CWF1';
      
      -- Create an MQMD and restore it to the saved values
      
      	CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
          SET OutputRoot.MQMD = Environment.MQMD;
      
      -- Build message to be sent
      
      	SET OutputRoot.MRM.MessageId - InputBody.tns:Body.ns:IA81CONFOUT.MessageId;
      	SET OutputRoot.MRM.OrderNumber = InputBody.tns:Body.ns:IA81CONFOUT.OrderNumber;
      	SET OutputRoot.MRM.ItemReference = InputBody.tns:Body.ns:IA81CONFOUT.ItemReference;
      	SET OutputRoot.MRM.ItemQuantity = InputBody.tns:Body.ns:IA81CONFOUT.ItemQuantity;
      	SET OutputRoot.MRM.CustomerNumber = InputBody.tns:Body.ns:IA81CONFOUT.CustomerNumber;
      	SET OutputRoot.MRM.DeliveryRef = InputBody.tns:Body.ns:IA81CONFOUT.DeliveryRef;
      	SET OutputRoot.MRM.Confirm = InputBody.tns:Body.ns:IA81CONFOUT.Confirm;						
      	SET OutputRoot.MRM.filler1 = InputBody.tns:Body.ns:IA81CONFOUT.filler1;	
      
      	RETURN TRUE;
  9. MQReply ノードを以下のようにカスタマイズします。
    1. カスタマイズは行われません。
  10. WSCLIENT_WSCLIENT1.esql を閉じ、内容を保管します。
  11. WSCLIENT_WSCLIENT1.msgflow を閉じ、内容を保管します。

メインページのアイコン   サンプルのホームに戻る