HTTP ノード・サンプルを使用する Web Service の作成
HTTP ノード・サンプルを使用する Web Service には、以下の 2 つの部分が含まれます。
- Web Service Host サンプル
- Web Service Client サンプル
Web Service Host サンプルの作成
Web Service Host サンプルを実行するために必要なすべてのファイルが提供されています。
ただし、独自にサンプルを作成する場合には、以下の指示を使用できます。
Web Service Host サンプルを作成するには、以下を行います。
- Web Service サンプルをインポートし、C ヘッダー・ファイルを使用できるようにします。詳しくは、HTTP ノード・サンプルを使用する Web Serviceを参照してください。
- Web サービス・フォーマットのメッセージ (XML) およびレガシー・フォーマット (CWF) の両方で使用できるメッセージ・セットを作成します。
- WebSphere Message Broker Toolkit を開始します。
- 「ファイル」>「新規」>「メッセージ・セット」をクリックします。
- 「メッセージ・セット名」フィールドに、WSHOST_BUILD_MS1 という名前を入力します。
- 「メッセージ・セット・プロジェクト名」フィールドに、
WSHOST_BUILD_MSP1 という名前を入力して、「次へ」をクリックします。
- 「最も頻繁に作業するメッセージ・データのタイプを選択してください」フィールドで、
「XML 文書 (一般)」を選択し、「バイナリー・データ (例えば C または COBOL 構造)」を選択してから「終了」をクリックします。
- 「messageSet.mset」タブで、プロパティー階層の下の「Binary1」を右クリックし、
「名前変更」を選択してから新しい名前「CWF1」を入力して、
「終了」をクリックします。
- messageSet.mset を保存して閉じます。
- レガシー・アプリケーションの入力メッセージと出力メッセージをマップする C ヘッダー・ファイルをインポートします。
- 「ブローカー開発」ビューで、プロジェクト WSHOST_LEGACY1 から legacyservice.h ファイルをコピーして、プロジェクト WSHOST_BUILD_MSP1 の中に貼り付けます。
- 以下のように、メッセージ定義ファイルを C ヘッダー・ファイルから作成します。
- 「ブローカー開発」ビューで、WSHOST_BUILD_MSP1 の下の 「legacyservice.h」を右クリックし、「新規」>「メッセージ定義ファイルの作成元」>「C ヘッダー・ファイル」をクリックしてから、
「次へ」をクリックします。
- 「メッセージ・セット」フィールドが /WSHOST_BUILD_MSP1/WSHOST_BUILD_MS1 に設定されていることを確認します。
- 「ターゲット・ネーム・スペース」を http://www.brokersamplewshost.ibm.com に設定して、「次へ」をクリックします。
- 「ソース構造」ペインで、「tagIA81CONF」を
クリックし、右矢印 (>) ボタンを
クリックし、「すべて選択」>「終了」をクリックします。
- legacyservice.mxsd ペインで、「メッセージ」を展開して右クリックします。
「メッセージの追加」を選択します。
IA81CONFIN と入力して、「複合タイプ」をクリックしてから、リストから tns:tagIA81CONF を選択します。
IA81CONFOUT について、このステップを繰り返します。
- legacyservice.mxsd を保存して閉じます。
- SOAP メッセージ定義をビルドします。
- 「ブローカー開発」ビューですでに作成したメッセージ・セット WSHOST_BUILD_MS1 を右クリックし、「新規」>「メッセージ定義ファイルの作成元」>「IBM 提供メッセージ」をクリックします。
- 「IBM 提供メッセージ」ペインで、SOAP 1.1 Envelope を選択し、「終了」をクリックします。
- soapenv11.mxsd を保存して閉じます。
Message Broker Toolkit の「問題」ビューには、複数の警告が示されます。
これらの警告は、SOAP メッセージ定義として CWF を定義したことが原因で生じたものです。
これらの警告は無視できます。
- WSDL を生成します。
- 「ブローカー開発」ビューで、メッセージ・セット WSHOST_BUILD_MS1 を右クリックしてから、「生成」>「WSDL 定義」を選択します。
- 「既存のメッセージ定義から新規 WSDL 定義を生成」を選択して、
「次へ」をクリックします。
- 「WSHOST_BUILD_MSP1」を強調表示して、「新規フォルダーの作成」をクリックします。
- 「wsdl」をフォルダー名として入力し、「OK」をクリックして、「次へ」をクリックします。
- 「WSDL 詳細を指定します」ペインで、「スタイル」が「文書」に
設定されていることを確認し、「次へ」をクリックします。
- 「操作」ペインで、リストから入力用に IA81CONFIN、
出力用に IA81CONFOUT を選択して、「次へ」をクリックします。
- 「バインディング」ペインで、「SOAP/HTTP」ラジオ・ボタンを選択し、「ポート・アドレス」を http://localhost:7080/samplebrokerwshost に設定してから、
「終了」をクリックします。
- メッセージ・フローを作成します。
フローは http 要求を取得してから、WebSphere MQ を使用してレガシー・アプリケーションを実行し、レガシー・アプリケーションの応答から
HTTP リクエスターに情報を送付します。
メッセージ・フローを作成するには、次のようにします。
- 「ファイル」>「新規」>「メッセージ・ブローカー・プロジェクト」を
クリックします。
- 「プロジェクト名」を WSHOST_BUILD_MFP1 に
設定し、「次へ」をクリックします。
- 「参照プロジェクト」ペインで「WSHOST_BUILD_MSP1」チェック・ボックスを選択し、「終了」をクリックします。
- 「ブローカー開発」ビューで「WSHOST_BUILD_MFP1」を右クリックし、「新規」>「メッセージ・フロー」をクリックします。
- 「メッセージ・フロー名」を WSHOST_WSHOST1 に設定します。
- 「デフォルト・ブローカー・スキーマの使用」をクリアします。
- 「スキーマ」を WSHOST_MFP1 に設定して、「終了」をクリックします。
- メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
手順については、WebSphere Message Broker 資料の
ノードの追加を参照してください。
パレット・ドロワー |
ノード・タイプ |
ノード名 |
HTTP |
HTTPInput |
HTTP Input |
Transformation |
Compute |
Compute |
Transformation |
Compute |
Compute1 |
Transformation |
Compute |
Compute2 |
WebSphere MQ |
MQOutput |
MQOutput to legacy |
WebSphere MQ |
MQOutput |
MQOutput store HTTP state |
WebSphere MQ |
MQGet |
MQGet stored HTTP state |
WebSphere MQ |
MQInput |
MQInput from legacy |
HTTP |
HTTPReply |
HTTPReply |
- 次の表に示されているように、ノードを接続します。
手順については、WebSphere Message Broker 資料の
ノードの接続を参照してください。
ノード名 |
ターミナル |
接続先のノード |
HTTPInput |
Out |
Compute |
Compute |
Out |
MQOutput to legacy |
MQOutput to legacy |
Out |
Compute1 |
Compute1 |
Out |
MQOutput store HTTP state |
MQInput from legacy |
Out |
MQGet stored HTTP state |
MQGet stored HTTP state |
Out |
Compute2 |
Compute2 |
Out |
HTTPReply |
- HTTPInput ノードを以下のようにカスタマイズします。
- HTTPInput ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
クリックし、「URL のパス接尾部」を /samplebrokerwshost に設定します。
- 「入力メッセージ構文解析」をクリックします。
- 「メッセージ・ドメイン」には、リストから「MRM」を選択します。
- 「メッセージ・セット」には、リストから「WSHOST_BUILD_MS1」を選択します。
- 「メッセージ・タイプ」には、「エンベロープ」を選択します。
- 「メッセージ・フォーマット」には、リストから「XML1」を選択します。
- 「プロパティー」ビューを保存して閉じます。
- Compute ノードを以下のようにカスタマイズします。
- Compute ノードを右クリックし、「ESQL を開く」をクリックします。
- Main() 関数の 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;
- WSHOST_WSHOST1.esql タブを保存して閉じます。
- 次のようにして MQOutput to legacy ノードをカスタマイズします。
- 「MQOutput to legacy」ノードを右クリックし、「プロパティー」をクリックします。
- レガシー・アプリケーションをブローカーとは異なる WebSphere MQ キュー・マネージャー上で実行しようと
している場合は、「基本」を選択し、「キュー・マネージャー名」を
レガシー・アプリケーションのキュー・マネージャーの名前に設定します。
それ以外の場合は、ブランクのままにします。
- 「キュー名」を WSHOST1_OUT1 に設定します。
- 「拡張」をクリックし、「トランザクション・モード」を「はい」に設定します。
- 「メッセージ・コンテキスト」を「デフォルト」に設定します。
- 「要求」をクリックし、「要求」を選択します。
- 「応答先キュー」を WSHOST1_IN1 に設定し、「プロパティー」ビューを保存して閉じます。
- Compute1 ノードを以下のようにカスタマイズします。
- Compute1 ノードを右クリックし、「ESQL を開く」をクリックします。
- Main() 関数の BEGIN と END ステートメントの間に、以下の ESQL をコーディングします。
キーワードを選択するには、コンテンツ・アシスト (Ctrl + スペース) を使用します。
コンテンツ・アシストで初めて SOAP 本体エレメントを選択するときには、最初の行のコメントに似た
DECLARE NAMESPACE ステートメントが生成されるはずです。
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;
- WSHOST_WSHOST1.esql タブを保存して閉じます。
- 次のようにして MQOutput store HTTP state ノードをカスタマイズします。
- MQOutput store HTTP state ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
クリックし、「キュー・マネージャー名」を WSHOST1_STATE1 に設定します。
- 「拡張」を
クリックし、「トランザクション・モード」を「はい」に設定します。
- 「メッセージ・コンテキスト」を「デフォルト」に設定します。
- 「プロパティー」ビューを保存して閉じます。
- 次のようにして MQInput from legacy ノードをカスタマイズします。
- MQInput from legacy ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
クリックし、「キュー名」を WSHOST1_IN1 に設定します。
- 「入力メッセージ構文解析」をクリックします。
- 「メッセージ・ドメイン」には、リストから「MRM」を選択します。
- 「メッセージ・セット」には、リストから「WSHOST_BUILD_MS1」を選択します。
- 「メッセージ・タイプ」には msg_tagIA81CONF を選択します。
- 「メッセージ・フォーマット」には、リストから「CWF1」を選択します。
- 「プロパティー」ビューを保存して閉じます。
- 次のようにして MQGet stored HTTP state ノードをカスタマイズします。
- MQGet stored HTTP ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
クリックし、「キュー名」を WSHOST1_STATE1 に設定します。
- 「入力メッセージ構文解析」をクリックします。
- 「メッセージ・ドメイン」には、リストから「MRM」を選択します。
- 「メッセージ・セット」には、リストから「WSHOST_BUILD_MS1」を選択します。
- 「メッセージ・タイプ」には、「エンベロープ」を入力します。
- 「メッセージ・フォーマット」には、リストから「XML1」を選択します。
- 「拡張」をクリックします。
- 「生成モード」には、リストから「メッセージと LocalEnvironment」を選択します。
- 「メッセージのコピー」には、リストから「メッセージ全体のコピー」を選択します。
- 「要求」を
クリックし、「相関 ID で取得」のチェック・ボックスを選択します。
- 「結果」を
クリックし、「出力データのロケーション」を OutputLocalEnvironment に
設定します。
- 「プロパティー」ビューを保存して閉じます。
- Compute2 ノードを以下のようにカスタマイズします。
- Compute2 ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
クリックし、「計算モード」を「LocalEnvironment とメッセージ」に
設定します。
- 「プロパティー」ビューを保存して閉じます。
- ノードを右クリックし、「ESQL を開く」をクリックします。
- Main() 関数の BEGIN と END ステートメントの間に、以下の ESQL を入力します。
DECLARE NAMESPACE ステートメントは必ずアンコメントしてください。
--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 Service Client サンプルを作成するには、以下を行います。
- Web Service サンプルをサンプル・ギャラリーからインポートし、まだ行っていなければ WEB Service Host サンプルを作成して、C ヘッダー・ファイルを使用できるようにします。
詳しくは、HTTP ノードを使用した Web Service サンプルを参照してください。Web サービス・フォーマットのメッセージ (XML) およびレガシー・フォーマット (CWF) の両方で使用できるメッセージ・セットを作成します。
- WebSphere Message Broker Toolkit を開始します。
- 「ファイル」>「新規」>「メッセージ・セット」をクリックします。
- 「メッセージ・セット名」を WSCLIENT_MS1 に
設定します。
- 「メッセージ・セット・プロジェクト名」を WSCLIENT_BUILD_MSP1 に設定して、「次へ」をクリックします。
- 「最も頻繁に作業するメッセージ・データのタイプを選択してください」フィールドで、
「XML 文書 (一般)」を選択し、「バイナリー・データ (例えば C または COBOL 構造)」を選択してから「終了」をクリックします。
- 「messageSet.mset」タブで、プロパティー階層の下の「Binary1」を右クリックし、
「名前変更」を選択してから新しい名前「CWF1」を入力して、
「終了」をクリックします。
- messageSet.mset を保存して閉じます。
- レガシー・アプリケーションの入力メッセージと出力メッセージをマップする C ヘッダー・ファイルをインポートします。
- プロジェクト WSHOST_LEGACY1 からファイル legacyservice.h をコピーして、プロジェクト WSCLIENT_BUILD_MSP1 の中に貼り付けます。
- 以下のように、メッセージ定義ファイルを C ヘッダー・ファイルから作成します。
- 「ブローカー開発」ビューで WSCLIENT_BUILD_MSP1 の下の「legacyservice.h」を右クリックし、「新規」>「メッセージ定義ファイルの作成元」>「C ヘッダー・ファイル」をクリックします。
- 「メッセージ・セット」が /WSCLIENT_BUILD_MSP1/WSCLIENT_MS1 に設定されていることを確認して、「次へ」をクリックします。
- "ソース構造" ペインで、
「tagIA81BUY」、
右矢印 (「>」) ボタン、
「tagIA81CONF」、
右矢印 (「>」) ボタンの順にクリックした後、
「すべて選択」> 「終了」をクリックします。
- legacyservice.mxsd を保存して閉じます。
- Web サービス用の WSDL をインポートします。
- 「ファイル」>「インポート」>「一般」>「ファイル・システム」>「次へ」をクリックします。
- ワークスペース内をブラウズして、WSHOST_MSP1 プロジェクト内の wsdl ディレクトリーを選択し、「OK」をクリックして、「wsdl」チェック・ボックスを選択します。
- 「インポート先フォルダー」を「WSCLIENT_MSP1」に設定し、「終了」をクリックします。
- 以下のように、メッセージ定義ファイルを WSDL から作成します。
- 「ブローカー開発」ビューで、プロジェクト WSCLIENT_MSP1 内の WSHOST_BUILD_MS1Service.wsdl を右クリックし、「新規」>「メッセージ定義ファイル」をクリックします。
- 「ターゲット・メッセージ・セットの選択」では、WSCLIENT_MSP1/WSCLIENT_MS1 を選択します。
- 「メッセージ定義ファイル名」を WSHOST_BUILD_MS1Service.wsdl に設定します。
- 「ターゲット・ネーム・スペース設定」の下で、「ターゲット・ネーム・スペースの使用」チェック・ボックスを選択します。
「接頭部」を wshost に、そして「ネーム・スペース」を http://www.brokersamplewshost.ibm.com/ に設定します。
- 「終了」をクリックします。
- メッセージ・フローを作成します。
フローは http 要求を取得してから、WebSphere MQ を使用してレガシー・アプリケーションを実行し、レガシー・アプリケーションの応答から
HTTP リクエスターに情報を送付します。
メッセージ・フローを作成するには、次のようにします。
- 「ファイル」>「新規」>「メッセージ・ブローカー・プロジェクト」を
クリックします。
- 「プロジェクト名」を WSCLIENT_BUILD_MFP1 に
設定して、「次へ」をクリックします。
- 「参照プロジェクト」ペインで「WSCLIENT_BUILD_MSP1」チェック・ボックスを選択し、「終了」をクリックします。
- 「ブローカー開発」ビューで WSCLIENT_BUILD_MFP1 を右クリックし、
「新規」>「メッセージ・フロー」をクリックします。
- 「メッセージ・フロー名」を WSCLIENT_WSCLIENT1 に設定します。
- 「ブローカー・デフォルト・スキーマの使用」のチェック・ボックスをクリアして、
「スキーマ」を WSCLIENT_MFP1 に設定し、「終了」をクリックします。
- メッセージ・フロー・エディターで、次の表にリストされているノードを追加して名前変更します。
手順については、WebSphere Message Broker 資料の
ノードの追加を参照してください。
パレット・ドロワー |
ノード・タイプ |
ノード名 |
WebSphere MQ |
MQInput |
MQInput from legacy |
Transformation |
Compute |
Compute |
Transformation |
Compute |
Compute1 |
WebSphere MQ |
MQReply |
MQReply |
HTTP |
HTTPRequest |
HTTPRequest |
- 次の表に示されているように、ノードを接続します。
手順については、WebSphere Message Broker 資料の
ノードの接続を参照してください。
ノード名 |
ターミナル |
接続先のノード |
MQInput from legacy |
Out |
Compute |
Compute |
Out |
HTTPRequest |
HTTPRequest |
Out |
Compute1 |
Compute1 |
Out |
MQReply |
- 次のようにして MQInput from legacy ノードをカスタマイズします。
- MQInput from legacy ノードを右クリックし、「プロパティー」をクリックします。
- 「基本」を
クリックし、「キュー名」を WSCLIENT1_IN1 に設定します。
- 「入力メッセージ構文解析」をクリックします。
- 「メッセージ・ドメイン」には、リストから「MRM」を選択します。
- 「メッセージ・セット」には、リストから「WSCLIENT_MS1」を選択します。
- 「メッセージ・タイプ」には、リストから 「msg_tagIA81BUY」を選択します。
- 「メッセージ・フォーマット」には、リストから「CWF1」を選択します。
- 「プロパティー」ビューを保存して閉じます。
- Compute ノードを以下のようにカスタマイズします。
- Compute ノードを右クリックし、「ESQL を開く」をクリックします。
- Main() 関数の 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;
- WSCLIENT_WSCLIENT1.esql タブを保存して閉じます。
- HTTPRequest ノードを以下のようにカスタマイズします。
- HTTPRequest ノードを右クリックし、「プロパティー」ビューをクリックします。
- 「基本」を選択し、「Web サービス URL」を http://localhost:7080/samplebrokerwshost に設定します。
Web サービスをホスティングするブローカーがこのブローカーとは別のマシン上にあるか、またはデフォルト以外のポート番号を使用しているか、
あるいはその両方の場合、この URL を必要に応じて修正してください。
- 「応答メッセージ構文解析」をクリックします。
- 「メッセージ・ドメイン」には、リストから「MRM」を選択します。
- 「メッセージ・セット」には、リストから「WSCLIENT_MS1」を選択します。
- 「メッセージ・タイプ」には、「エンベロープ」を入力します。
- 「メッセージ・フォーマット」には、リストから「XML1」を選択します。
- 「プロパティー」ビューを保存して閉じます。
- Compute1 ノードを以下のようにカスタマイズします。
- Compute1 ノードを右クリックし、「ESQL を開く」をクリックします。
- Main() 関数の BEGIN と END ステートメントの間に、以下の ESQL を入力します。
キーワードを選択するには、コンテンツ・アシスト (Ctrl + スペース) を使用します。
最初の行にコメント化されているものと同様の DECLARE NAMESPACE ステートメントは、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;
- WSCLIENT_WSCLIENT1.esql タブを保存して閉じます。
- MQReply ノードを以下のようにカスタマイズします。カスタマイズの必要はありません。
- WSCLIENT_WSCLIENT1.msgflow を保存して閉じます。
サンプルのホームに戻る