方法: 要求 - 応答メッセージ交換パターンを利用し、メッセージを変換してサービス エンドポイントに送信する
目標
このセクションでは、ESB Designer ドメイン固有言語 (DSL) を使用して、双方向のオンランプで使用できる要求/応答のスケジュールを作成する方法について説明します。 メッセージを受信し、メッセージを変換し、サービスにメッセージを送信し、元のメッセージの送信者にサービス応答メッセージを返すルーティング スリップを作成します。
このハウツー トピックでは、次の手順を実行します。
Microsoft BizTalk Server マップを実装する変換スケジュール サービスを使用して、旅程ルーティング スリップを作成します。
変換されたメッセージをサービス エンドポイントにルーティングするようにスケジュールを構成します。
元の送信側にサービス応答メッセージを返すようにスケジュールを構成します。
スケジュール テスト クライアント サンプル アプリケーションを使用して、スケジュールをテストします。
前提条件
このハウツー トピックの手順では、 開発アクティビティの前提条件を完了する必要があります。
手順
ESB スケジュール DSL モデルを作成するには
Visual Studio で、C:\HowTos\Patterns\Patterns.sln を開きます。
ソリューション エクスプローラーで、ItineraryLibrary プロジェクトを右クリックし、[追加] をポイントして、[新しいスケジュール] をクリックします。
[ 新しい項目の追加 ] ダイアログ ボックスの [名前 ] ボックスに「 RequestResponse」と入力し、[ 追加] をクリックします。
スケジュールのプロパティを構成するには
Visual Studio で、 RequestResponse.itinerary のデザイン画面をクリックします。 RequestResponse プロパティ ウィンドウで、次のプロパティを構成します。
[ 要求応答] ドロップダウン リストで、[True] をクリック します。
[ モデル エクスポーター ] ドロップダウン リストで、[ XML スケジュール エクスポーター] をクリックします。
[ エクステンダー設定] セクションの [ スケジュール XML ファイル ] プロパティの横にある省略記号ボタン (...) をクリックします。
[ XML ファイルの選択 ] ダイアログ ボックスの [ ファイル名 ] ボックスに 「C:\HowTos\Itineraries\RequestResponse」と入力し、[ 保存] をクリックします。
Note
この手順では、スケジュールを XML としてローカル ファイルの場所にエクスポートできます。 スケジュール をスケジュール データベースではなくローカル ファイルの場所にエクスポートすることで、ESB テスト クライアント アプリケーションを使用して旅程のテストを行えます。 このプロセスは、このハウツー トピックの後半で完了します。
旅程の構造を定義するには
ツールボックスから、 On-Ramp モデル要素をデザイン サーフェイスにドラッグします。 OnRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「ReceiveNAOrder」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ On-Ramp ESB エクステンダー] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[Microsoft.Practices.ESB] をクリックします。
[ 受信ポート ] ドロップダウン リスト で、[OnRamp.Itinerary.Response] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 On-Ramp モデル要素の右側に配置します。 ItineraryService1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「MapNAOrderToCNOrder」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ メッセージング エクステンダー] をクリックします。
Note
このプロパティは、プロセスがパイプライン (メッセージング) で実行されることを定義します。 または、プロセスがオーケストレーションで行われる場合は、 スケジュール サービス エクステンダー プロパティを オーケストレーション エクステンダーに設定します。
[ コンテナー ] ドロップダウン リストで、[ ReceiveNAOrder] を展開し、[ Receive Handlers]\(ハンドラーの受信\) をクリックします。
[ サービス名 ] ドロップダウン リストで、[ Microsoft.Practices.ESB.Services.Transform] をクリックします。
MapNAOrderToCNOrder モデル要素の Resolver コレクションを右クリックし、[Add new Resolver]\(新しいリゾルバーの追加\) をクリックします。 Resolver1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「StaticallySpecifyTheMap」と入力します。
[ リゾルバーの実装 ] ドロップダウン リストで、[ Static Resolver Extension]\(静的リゾルバー拡張機能\) をクリックします。
[ 変換の種類 ] ドロップダウン リストで、[ GlobalBank.ESB.DynamicResolution.Transforms.SubmitOrderRequestNA_To_SubmitOrderRequestCN] をクリックします。
ツールボックスで、[ コネクタ] をクリックします。 ReceiveNAOrder モデル要素から MapNAOrderToCNOrder モデル要素に接続をドラッグします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 MapNAOrderToCNOrder モデル要素の右側に配置します。 ItineraryService1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「RouteToCNService」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ メッセージング エクステンダー] をクリックします。
Note
このプロパティは、プロセスがパイプライン (メッセージング) で実行されることを定義します。 または、プロセスがオーケストレーションで行われる場合は、 スケジュール サービス エクステンダー プロパティを オーケストレーション エクステンダーに設定します。
[ コンテナー ] ドロップダウン リストで、[ ReceiveNAOrder] を展開し、[ Receive Handlers]\(ハンドラーの受信\) をクリックします。
[ サービス名 ] ドロップダウン リストで、[ Microsoft.Practices.ESB.Services.Routing] をクリックします。
RouteToCNService モデル要素の Resolver コレクションを右クリックし、[Add new Resolver]\(新しいリゾルバーの追加\) をクリックします。 Resolver1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「StaticallySpecifyTheService」と入力します。
[ リゾルバーの実装 ] ドロップダウン リストで、[ Static Resolver Extension]\(静的リゾルバー拡張機能\) をクリックします。
[ トランスポート名 ] ドロップダウン リストで、[ WCF-BasicHttp] をクリックします。
[ トランスポートの場所 ] プロパティをクリックし、「」と入力します http://localhost/ESB.CanadianServices/SubmitPOService.asmx。
[ ターゲット名前空間] プロパティをクリックし、「」と入力します http://globalbank.esb.dynamicresolution.com/canadianservices。
Action プロパティをクリックし、「submitOrder」と入力します。
ツールボックスで、[ コネクタ] をクリックします。 MapNAOrderToCNOrder モデル要素から RouteToCNService モデル要素に接続をドラッグします。
ツールボックスから 、Off-Ramp モデル要素をデザインサーフェイスにドラッグし、 RouteToCNService モデル要素の右側に配置します。 OffRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「InvokeCNService」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ Off-Ramp ESB エクステンダー] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[GlobalBank.ESB] をクリックします。
[ 送信ポート ] ドロップダウン リストで、[ DynamicResolutionSolicitResp] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 RouteToCNService モデル要素と InvokeCNService モデル要素の間に配置します。 ItineraryService1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「SendPortFilter」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ オフランプ エクステンダー] をクリックします。
[ オフランプ ] ドロップダウン リストで、[ InvokeCNService] を展開し、[ハンドラーの 送信] をクリックします。
ツールボックスで、[ コネクタ] をクリックします。 接続を RouteToCNService モデル要素から SendPortFilter モデル要素にドラッグします。
ツールボックスで、[ コネクタ] をクリックします。 接続を SendPortFilter モデル要素から InvokeCNService モデル要素にドラッグします。
デザイン サーフェイスを右クリックし、[ 検証] をクリックします。
Note
旅程は検証します。応答メッセージを要求側に送り返すために、オフランプをオンランプに接続する必要はありません。 双方向のオンランプを使用すると、最終的なメッセージが要求側に自動的に返されます。
スケジュール テスト クライアントで使用するモデルをエクスポートするには
Visual Studio で、 RequestResponse スケジュールのデザイン画面を右クリックし、[ モデルのエクスポート] をクリックします。
Note
スケジュールの XML バージョンが Visual Studio で開きます。
すべてのプロジェクト成果物を保存します。
Windows エクスプローラーで、C:\HowTos\Itineraries に移動します。 スケジュール XML (RequestResponse.xml) の作成に注目してください。
旅程をテストするには
開発アクティビティの前提条件 (C:\HowTos\ESB.Itinerary.Test.exe - ショートカット) の間に作成されたショートカットを使用して、Itinerary Test Client サンプル アプリケーションを開きます。
[スケジュール テスト クライアント] で、[WCF サービス チェックを使用する] ボックスをオフにします。
[Web サービス オプション] セクションで、[双方向サービス チェック] ボックスを選択し、[スケジュールの読み込み] をクリックします。
[ スケジュール ファイルを開く ] ダイアログ ボックスで、C:\HowTos\Itineraries に移動します。 [RequestResponse.xml] を選択し、[開く] をクリックして旅程を読み込みます。
[ OK] をクリックして 、[ スケジュールが正常に読み込まれました ] メッセージをクリアします。
[スケジュール テスト クライアント] で、[ メッセージの読み込み ] ボックスの横にある省略記号ボタン (...) をクリックします。
[ 読み込む XML ドキュメントの選択 ] ダイアログ ボックスで、C:\HowTos を参照します。 [NAOrderDoc.xml] を選択し、[開く] をクリックしてテスト メッセージを読み込みます。
[ 要求の送信] ボタンをクリックします。 テストが完了したら、[OK] を クリックして、表示される確認を閉じます。
[ 結果 ] ボックスで、メッセージのルート ノードが submitOrderResponse で、既定の名前空間が ..であることに注意してください。 canadianservices。
Note
応答メッセージが要求側に送信される前に追加の変換が必要な場合は、ESB フォワーダー コンポーネントを含むパイプラインを使用する必要があります。 この機能の例については、「 複数 Web サービスのインストールと実行のサンプル」を参照してください。
その他のリソース
詳細については、次の関連項目を参照してください。