Web Service サンプルの作成
Web Service のサンプルには次の 2 つの部分があります。
- Web Service Host サンプル
- Web Service Client サンプル
Web Service Host サンプルの作成
これを実行したくない場合は、 完成したメッセージ・セット・プロジェクトとメッセージ・フロー・プロジェクトが
このサンプルに用意されています。
Web Service Host サンプルを作成するには、以下を行います。
- メッセージ・セットを作成します。
これは、Web サービス・フォーマットのメッセージ (XML) およびレガシー・フォーマット (CWF) の両方で使用できます。
- Message Brokers Toolkit を開始します。
- 「ブローカー・アプリケーション開発」パースペクティブに入ったことを確認します。
- 「ファイル」>「新規」>「メッセージ・セット・プロジェクト」を
クリックします。
- 「プロジェクト名」を「WSHOST_MSP1」に
設定し、「次へ」をクリックします。
- 「メッセージ・セット名」を「WSHOST_MS1」に
設定します。
- 「ネーム・スペースを使用」を
選択し、「次へ」をクリックします。
- 「カスタム・ワイヤー・フォーマット名」および「XML ワイヤー・フォーマット名」を
選択し、「終了」をクリックします。
- messageset.mset を閉じ、内容を保管します。
- C ヘッダー・ファイルをインポートします。
これは、レガシー・アプリケーションの入出力メッセージにマップされます。
- 「ファイル」>「インポート」> 「ファイル・システム」>「次へ」を
クリックします。
- 参照を使ってプロジェクト WSHOST_LEGACY から「legacyservice.h」を
選択します。
- 「インポート先フォルダー」を「WSHOST_MSP1」に
設定し、「終了」をクリックします。
- 以下のように、ブローカー・メッセージ定義ファイルを C ヘッダー・ファイルから作成します。
- 「リソース・ナビゲーター」で「legacyservice.h」を
右クリックし、「新規」>「メッセージ定義ファイル」をクリックします。
- 「C ヘッダー・ファイル」のラジオ・ボタンが事前に選択されている
はずです。
選択されていない場合は、それを選択し、「次へ」をクリックします。
- プロジェクト WSHOST_MSP1 内の「legacyservice.h」が事前に
選択されているはずです。
選択されていない場合は、それを選択し、「次へ」をクリックします。
- メッセージ・セット・ペインで、「WSHOST_MSP1」を
展開し、「WSHOST_MS1」を選択します。
- 「ターゲット・ネーム・スペースを使用」を
選択し、「http://www.brokersamplewshost.ibm.com」を URL として
入力し、「次へ」をクリックします。
- 「ソース構造」ペインで、「tagIA81CONF」を
クリックし、> ボタンを
クリックし、「すべて選択」>「終了」をクリックします。
- legacyservice.mxsd を閉じて、内容を保管します。
- SOAP メッセージ定義を作成します。
- 「リソース・ナビゲーター」でメッセージ・セット「WSHOST_MS1」を
右クリックし、「新規」>「メッセージ定義ファイル」をクリックします。
- ラジオ・ボタン「IBM 提供メッセージ」を
クリックし、「次へ」をクリックします。
- 「IBM 提供メッセージ」ペインで、
メッセージ「ibm¥soap¥envelope¥soapenv11.xsd」を
選択し、「次へ」をクリックします。
- 「WSHOST_MSP1」を
展開し、「WSHOST_MS1」を選択し、「次へ」をクリックします。
- 「メッセージを作成するためのグローバル・エレメントを選択してください」で、エレメントが何も
選択されていないことを確認し、 「終了」をクリックします。
- soapenv11.mxsd を閉じ、内容を保管します。
- 「エンベロープ」がメッセージとして自動的に作成されることに注意してください。
Message Brokers Toolkit の「問題」ビューには、数多くの警告が示されます。
これらの警告は、主に CWF を SOAP メッセージ定義に対して定義したことが原因で生じたもので、無視してもかまいません。
- メッセージのカテゴリーを作成します (WSDL を生成するための前提条件)。
WSDL の場合、操作名はすべて、これを囲むポート・タイプの中で固有のものでなければなりません。
そのため、メッセージ・カテゴリー内で定義される要求と応答メッセージとは、異なっている必要があります。
これを明確にするため、2 つの新しいメッセージをメッセージ・セットに定義します。
1 つは Web サービスの入力用、もう 1 つは Web サービスの出力用です。
これらは、C ヘッダー・ファイルからデータを取り込んだ mxsd ファイル内に作成されます。
- 「legacyservice.mxsd」を開きます。
- 「アウトライン」ビューで、「エレメントと属性」を右マウス・ボタンでクリックし、「グローバル・エレメントの追加」をクリックします。
- エレメントの名前を「IA81CONFIN」に変更し、Enter キーを押します。
- IA81CONFIN エレメント用の「タイプ」セルを選択します。
リストから「(続く...)」 を選択します。
- tagIA81CONF を選択し、「OK」をクリックします。
- 「アウトライン」ビューで、「メッセージ」を
右クリックし、「グローバル・エレメントからメッセージを追加」をクリックします。
- プルダウン・リストから tns:IA81CONFIN を選択し、Enter を押します。
- 「アウトライン」ビューで、「エレメントと属性」を右マウス・ボタンでクリックし、「グローバル・エレメントの追加」をクリックします。
- エレメントの名前を「IA81CONFOUT」に変更し、Enter キーを押します。
- IA81CONFOUT エレメント用の「タイプ」セルを選択します。
リストから 「(続く...)」 を選択します。
- tagIA81CONF を選択し、「OK」をクリックします。
- 「アウトライン」ビューで、「メッセージ」を
右クリックし、「グローバル・エレメントからメッセージを追加」 をクリックします。
- プルダウン・リストから tns:IA81CONFOUT を選択し、Enter を押します。
- legacyservice.mxsd を閉じて、内容を保管します。
- 「ファイル」>「新規」>「メッセージ・カテゴリー・ファイル」を
クリックします。
- 「カテゴリーの種類」を「wsdl」に
設定します。
- 「カテゴリーの使用法」を「wsdl:requestresponse」に
設定し、「次へ」をクリックします。
- メッセージ・セット・プロジェクト WSHOST_MSP1 内の
メッセージ・セット「WSHOST_MS1」を選択します。
- 「ファイル名」フィールドで、「cat1」と
入力し、「次へ」をクリックします。
- 上部のペインで、「IA81CONFIN」 および「IA81CONFOUT」を選択します (複数選択を行うには、CTRL キーを押しながら選択します)。
- 下部のペインの、IA81CONFOUT の 「種類」セルの値を output に設定します (値を選択できるメニューを表示するには、セルをクリックします)。
- 下部のペインで、「IA81CONFIN」を選択した後、「終了」をクリックします。
メッセージ・カテゴリー・ファイルが新規作成されます。
- WSDL を生成します。
- 「ファイル」>「新規」>「WSDL 定義」>「次へ」をクリックします。
- メッセージ・セット・プロジェクト WSHOST_MSP1 内の
メッセージ・セット「WSHOST_MS1」を選択し、「次へ」を
クリックします。
- 「WSHOST_MSP1」を選択し、「新規フォルダーの作成」を
クリックします。
- 「wsdl」をフォルダー名として
入力し、「OK」をクリックします。
- 「単一」ラジオ・ボタンが選択されていることを
確認し、「次へ」をクリックします。
- 「WSDL 詳細を指定します」ペインで、「スタイル」が「文書」に
設定されていることを確認し、「次へ」をクリックします。
- 「カテゴリーの選択」ペインで、「すべて選択」>「次へ」を
クリックします。
- 「バインディング」ペインで、「SOAP/HTTP」>「次へ」をクリックします。
- 「サービス・プロパティー」ペイン
で、「ポート・アドレス」を「http://localhost:7080/samplebrokerwshost」に
設定し、「終了」をクリックします。
- メッセージ・フローを作成します。
フローは http 要求を取得してから、MQ を使用してレガシー・アプリケーションを起動し、レガシー・アプリケーションの応答から
HTTP リクエスターに情報を送付します。
- 「ファイル」>「新規」>「メッセージ・フロー・プロジェクト」を
クリックします。
- 「プロジェクト名」を「WSHOST_MFP1」に
設定し、「次へ」をクリックします。
- 「参照プロジェクト」ペインで「WSHOST_MSP1」を
選択し、「終了」をクリックします。
- 「リソース・ナビゲーター」で「WSHOST_MFP1」を
右クリックし、「新規」>「メッセージ・フロー」をクリックします。
- 「スキーマ」を「WSHOST_MFP1」に
設定します。
- 「名前」を「WSHOST_WSHOST1」に
設定し、「終了」をクリックします。
- パレットを表示 (非表示であった場合) して、「メッセージ・フロー」キャンバスに以下のノードを追加します。
- 1 つの HTTPInput ノード
- 3 つの Compute ノード
- 2 つの MQOutput ノード
- 1 つの MQGet ノード
- 1 つの MQInput ノード
- 1 つの HTTPReply ノード
- このパレットの「接続」をクリックし、以下のノードおよびターミナルを
接続します。
- 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)
- いくつかのノードを名前変更すると、理解が容易になるかもしれません。
ノードを名前変更するには、そのノードを右クリックし、「名前変更」をクリックします。
提案されている名前は、以下のとおりです。
- MQOutput -> MQOutput to legacy
- MQOutput1 -> MQOutput store HTTP state
- MQInput -> MQInput from legacy
- MQGet -> MQGet stored HTTP state
- HTTPInput ノードを以下のようにカスタマイズします。
- HTTPInput ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
選択し、「URL セレクター」を「/samplebrokerwshost」に設定します。
- 「デフォルト」を選択します。
- 「メッセージ・ドメイン」には、
ドロップダウン・リストから「MRM」を選択します。
- 「メッセージ・セット」には、
ドロップダウン・リストから「WSHOST_MS1」を選択します。
- 「メッセージ・タイプ」には、「エンベロープ (Envelope)」を
入力します。
- 「メッセージ・フォーマット」には、
ドロップダウン・リストから「XML1」を選択します。
- 「OK」をクリックします。
- Compute ノードを以下のようにカスタマイズします。
- Compute ノードを右クリックし、「ESQL を開く」をクリックします。
- このモジュールの 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;
- MQOutput (MQOutput to legacy) ノードを以下のようにカスタマイズします。
- MQOutput ノードを右クリックし、「プロパティー」をクリックします。
- レガシー・アプリケーションをブローカーとは異なる WebSphere MQ キュー・マネージャー上で実行しようと
している場合は、「基本」を選択し、「キュー・マネージャー名」を
レガシー・アプリケーションのキュー・マネージャーの名前に設定します。
それ以外の場合は、ブランクのままにします。
- 「キュー名」を「WSHOST1_OUT1」に設定します。
- 「拡張」を
選択し、「トランザクション・モード」を「はい」に設定します。
- 「メッセージ・コンテキスト」を「デフォルト」に
設定します。
- 「要求」を選択し、「要求」の
チェック・ボックスを選択します。
- 「応答先キュー」を「WSHOST1_IN1」に
設定し、「OK」をクリックします。
- Compute1 ノードを以下のようにカスタマイズします。
- Compute1 ノードを右クリックし、「ESQL を開く」をクリックします。
- このモジュールの 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;
- MQOutput1 (MQOutput store HTTP state) ノードを以下のようにカスタマイズします。
- MQOutput1 ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
選択し、「キュー名」を「WSHOST1_STATE1」に設定します。
- 「拡張」を
選択し、「トランザクション・モード」を「はい」に設定します。
- 「メッセージ・コンテキスト」を「デフォルト」に
設定します。
- 「OK」をクリックします。
- MQInput (MQInput from legacy) ノードを以下のようにカスタマイズします。
- MQInput ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
選択し、「キュー名」を「WSHOST1_IN1」に設定します。
- 「デフォルト」を選択します。
- 「メッセージ・ドメイン」には、
ドロップダウン・リストから「MRM」を選択します。
- 「メッセージ・セット」には、
ドロップダウン・リストから「WSHOST_MS1」を選択します。
- 「メッセージ・タイプ」には、「msg_tagIA81CONF」を
入力します。
- 「メッセージ・フォーマット」には、
ドロップダウン・リストから「CWF1」を選択します。
- 「OK」をクリックします。
- MQGet (MQGet stored HTTP state) ノードを以下のようにカスタマイズします。
- MQGet ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
選択し、「キュー名」を「WSHOST1_STATE1」に設定します。
- 「デフォルト」を選択します。
- 「メッセージ・ドメイン」には、
ドロップダウン・リストから「MRM」を選択します。
- 「メッセージ・セット」には、
ドロップダウン・リストから「WSHOST_MS1」を選択します。
- 「メッセージ・タイプ」には、「エンベロープ (Envelope)」を
入力します。
- 「メッセージ・フォーマット」には、
ドロップダウン・リストから「XML1」を選択します。
- 「拡張」を選択します。
- 「生成モード」には、
ドロップダウン・リストから「メッセージと LocalEnvironment」を選択します。
- 「メッセージのコピー」には、
ドロップダウン・リストから「メッセージ全体のコピー」を選択します。
- 「要求」を
選択し、「相関 ID で取得」のチェック・ボックスを選択します。
- 「要求」を
選択し、「出力データのロケーション」を「OutputLocalEnvironment」に
設定します。
- 「OK」をクリックします。
- Compute2 ノードを以下のようにカスタマイズします。
- Compute2 ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
選択し、「計算モード」を「LocalEnvironment とメッセージ」に
設定します。
- 「OK」をクリックします (HTTP コンテキストを HTTPReply ノードに
渡せるようにするため)。
- ノードを右クリックし、「ESQL を開く」を選択します。
- このモジュールの 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;
- WSHOST_WSHOST1.esql を閉じ、内容を保管します。
- WSHOST_WSHOST1.msgflow を閉じ、内容を保管します。
- レガシー・アプリケーションをブローカーとは異なる WebSphere MQ キュー・マネージャー上で実行しようとしている場合は、
レガシー・アプリケーションの入力キューをレガシー・アプリケーションのキュー・マネージャーに定義する必要があります。
適切な WebSphere MQ ユーティリティーを使用して、次のキュー定義を入力してください。
DEFINE QLOCAL(WSHOST1_OUT1) REPLACE
Web Service Client サンプルの作成
これを実行したくない場合は、 完成したメッセージ・セット・プロジェクトとメッセージ・フロー・プロジェクトが
このサンプルに用意されています。
Web Service Client サンプルを作成するには、以下を行います。
- メッセージ・セットを作成します。
これは、Web サービス・フォーマットのメッセージ (XML) およびレガシー・フォーマット (CWF) の両方で使用できます。
- Message Brokers Toolkit を開始します。
- 「ブローカー・アプリケーション開発」パースペクティブに入ったことを確認します。
- 「ファイル」>「新規」>「メッセージ・セット・プロジェクト」を
クリックします。
- 「プロジェクト名」を「WSCLIENT_MSP1」に
設定し、「次へ」をクリックします。
- 「メッセージ・セット名」を「WSCLIENT_MS1」に
設定します。
- 「ネーム・スペースを使用」を
選択し、「次へ」をクリックします。
- 「カスタム・ワイヤー・フォーマット名」および「XML ワイヤー・フォーマット名」を
選択し、「終了」をクリックします。
- messageset.mset を閉じ、内容を保管します。
- C ヘッダー・ファイルをインポートします。
これは、レガシー・アプリケーションの入出力メッセージ定義を提供します。
- プロジェクト WSHOST_LEGACY から ファイル「legacyservice.h」をコピーし、これをプロジェクト WSCLIENT_MSP1 に貼り付けます。
- 以下のように、ブローカー・メッセージ定義ファイルを C ヘッダー・ファイルから作成します。
- 「リソース・ナビゲーター」で「legacyservice.h」を
右クリックし、「新規」>「メッセージ定義ファイル」をクリックします。
- 「C ヘッダー・ファイル」のラジオ・ボタンが事前に選択されている
はずです。
選択されていない場合は、それを選択し、「次へ」をクリックします。
- プロジェクト WSCLIENT_MSP1 内の「legacyservice.h」が事前に
選択されているはずです。
選択されていない場合は、それを選択し、「次へ」をクリックします。
- メッセージ・セット・ペインで、「WSCLIENT_MSP1」を展開し、「WSCLIENT_MS1」を選択した後、「次へ」をクリックします。
- ソース構造ペインで、「tagIA81BUY」、
「>」ボタン、「tagIA81CONF」、「>」ボタンの順にクリックした後、
「すべて選択」>「終了」をクリックします。
- legacyservice.mxsd を閉じて、内容を保管します。
- Web サービス用の WSDL をインポートします。
- 「ファイル」>「インポート」> 「ファイル・システム」>「次へ」を
クリックします。
- 参照を使ってプロジェクト「WSHOST_MSP1」からディレクトリー wsdl を選択します。
- 「インポート先フォルダー」を「WSCLIENT_MSP1」に
設定し、「終了」をクリックします。
- 以下のように、ブローカー・メッセージ定義ファイルを WSDL から作成します。
- 「リソース・ナビゲーター」で、プロジェクト「WSCLIENT_MSP1」の「wsdl」ディレクトリー内の「WSHOST_MS1Service.wsdl」を右クリックした後、「新規」>「メッセージ定義ファイル」をクリックします。
- 「WSDL ファイル」のラジオ・ボタンが事前に選択されている
はずです。
選択されていない場合は、それを選択し、「次へ」をクリックします。
- プロジェクト WSCLIENT_MSP1 内の「WSHOST_MS1Service.wsdl」が事前に
選択されているはずです。
選択されていない場合は、それを選択し、「次へ」をクリックします。
- メッセージ・セット・ペインで、「WSCLIENT_MSP1」を
展開し、「WSCLIENT_MS1」を選択します。
- ネーム・スペース・ペインで、ネーム・スペース「http:www.brokersamplewshost.ibm.com」のネーム・スペース接頭部を wshost に設定した後、
「次へ」をクリックします。
- 生成されるファイルのリストが表示されます。
「終了」をクリックします。
- メッセージ・フローを作成します。
フローは入力として WebSphere MQ メッセージを取り、Web サービス要求を作成し、HTTP を使ってその要求を送信します。
HTTP 応答が受信され、WebSphere MQ 応答メッセージが送信されます。
- 「ファイル」>「新規」>「メッセージ・フロー・プロジェクト」を
クリックします。
- 「プロジェクト名」を「WSCLIENT_MFP1」に
設定し、「次へ」をクリックします。
- 「参照プロジェクト」ペインで「WSCLIENT_MSP1」を
選択し、「終了」をクリックします。
- 「リソース・ナビゲーター」で「WSCLIENT_MFP1」を
右クリックし、「新規」>「メッセージ・フロー」をクリックします。
- 「スキーマ」を「WSCLIENT_MFP1」に
設定します。
- 「名前」を「WSCLIENT_WSCLIENT1」に
設定し、「終了」をクリックします。
- パレットを表示 (非表示であった場合) して、「メッセージ・フロー」キャンバスに以下のノードを追加します。
- 1 つの MQInput ノード
- 2 つの Compute ノード
- 1 つの MQReply ノード
- 1 つの HTTPRequest ノード
- このパレットの「接続」をクリックし、以下のノードおよびターミナルを
接続します。
- MQInput (out) - Compute (in)
- Compute (out) - HTTPRequest (in)
- HTTPRequest (out) - Compute1 (in)
- Compute1 (out) - MQreply (in)
- MQInput (MQInput from legacy) ノードを以下のようにカスタマイズします。
- MQInput ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
選択し、「キュー名」を「WSCLIENT1_IN1」に設定します。
- 「デフォルト」を選択します。
- 「メッセージ・ドメイン」には、
ドロップダウン・リストから「MRM」を選択します。
- 「メッセージ・セット」には、
ドロップダウン・リストから「WSCLIENT_MS1」を選択します。
- 「メッセージ・タイプ」には、ドロップダウン・リストから 「msg_tagIA81BUY」を選択します。
- 「メッセージ・フォーマット」には、
ドロップダウン・リストから「CWF1」を選択します。
- 「OK」をクリックします。
- Compute ノードを以下のようにカスタマイズします。
- Compute ノードを右クリックし、「ESQL を開く」をクリックします。
- このモジュールの 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;
- HTTPRequest ノードを以下のようにカスタマイズします。
- HTTPRequest ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を選択し、「Web サービス URL」を http://localhost:7080/samplebrokerwshost に設定します。Web サービスをホスティングするブローカーがこのブローカーとは別のマシン上にあるか、またはデフォルト以外のポート番号を使用しているか、あるいはその両方の場合、この URL を必要に応じて修正してください。
- 「デフォルト」を選択します。
- 「メッセージ・ドメイン」には、
ドロップダウン・リストから「MRM」を選択します。
- 「メッセージ・セット」には、
ドロップダウン・リストから「WSCLIENT_MS1」を選択します。
- 「メッセージ・タイプ」には、ドロップダウン・リストから「エンベロープ」を選択します。
- 「メッセージ・フォーマット」には、
ドロップダウン・リストから「XML1」を選択します。
- 「OK」をクリックします。
- Compute1 ノードを以下のようにカスタマイズします。
- Compute1 ノードを右クリックし、「ESQL を開く」をクリックします。
- このモジュールの 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;
- MQReply ノードを以下のようにカスタマイズします。
- カスタマイズは行われません。
- WSCLIENT_WSCLIENT1.esql を閉じ、内容を保管します。
- WSCLIENT_WSCLIENT1.msgflow を閉じ、内容を保管します。
サンプルのホームに戻る