次の方法で共有


方法: Request-Response メッセージ交換パターンを使用してメッセージを変換し、サービス エンドポイントにルーティングする

目標

このセクションでは、ESB Designer ドメイン固有言語 (DSL) を使用して、双方向オンランプで使用できる要求/応答スケジュールを作成する方法について説明します。 メッセージを受信し、メッセージを変換し、サービスにメッセージを送信し、元のメッセージの送信者にサービス応答メッセージを返すルーティング スリップを作成します。

このハウツー トピックでは、次の手順を実行します。

  • Microsoft BizTalk Server マップを実装する変換スケジュール サービスを使用して、スケジュール ルーティング スリップを作成します。

  • 変換されたメッセージをサービス エンドポイントにルーティングするようにスケジュールを構成します。

  • 元の送信側にサービス応答メッセージを返すようにスケジュールを構成します。

  • スケジュール テスト クライアント サンプル アプリケーションを使用して、スケジュールをテストします。

[前提条件]

このハウツー トピックの手順では、 開発アクティビティの前提条件を完了する必要があります。

ステップス

ESB イテナラリー DSL モデルを作成するには

  1. Visual Studio で、C:\HowTos\Patterns\Patterns.sln を開きます。

  2. ソリューション エクスプローラーで、 ItineraryLibrary プロジェクトを右クリックし、[ 追加] をポイントして、[ 新しいスケジュール] をクリックします。

  3. [ 新しい項目の追加 ] ダイアログ ボックスの [名前 ] ボックスに「 RequestResponse」と入力し、[ 追加] をクリックします。

スケジュールのプロパティを構成するには

  1. Visual Studio で、 RequestResponse.itinerary のデザイン画面をクリックします。 [ RequestResponse のプロパティ] ウィンドウで、次のプロパティを構成します。

    1. [ Is Request Response ]\(要求応答\) ドロップダウン リストで、[ True] をクリックします。

    2. [ モデル エクスポーター ] ドロップダウン リストで、[ XML スケジュール エクスポーター] をクリックします。

    3. [ エクステンダーの設定] セクションで、[ スケジュール XML ファイル ] プロパティの横にある省略記号ボタン (...) をクリックします。

    4. [ XML ファイルの選択 ] ダイアログ ボックスの [ ファイル名 ] ボックスに「 C:\HowTos\Itineraries\RequestResponse」と入力し、[ 保存] をクリックします。

      この手順では、スケジュールを XML としてローカル ファイルの場所にエクスポートできます。 スケジュールデータベースではなく、ローカルファイルの場所に旅程をエクスポートすることで、ESBテストクライアントアプリケーションを使用して旅程のテストを可能にします。 このプロセスは、このハウツー トピックの後半で完了します。

旅程の構造を定義するには

  1. ツールボックスから、 On-Ramp モデル要素をデザイン サーフェイスにドラッグします。 OnRamp1 プロパティ ウィンドウで、次のプロパティを構成します。

    1. Name プロパティをクリックし、「ReceiveNAOrder」と入力します。

    2. [ エクステンダー ]ドロップダウン リストで、[ On-Ramp ESB エクステンダー]をクリックします。

    3. BizTalk アプリケーションのドロップダウン リストで、Microsoft.Practices.ESB をクリックします。

    4. [受信ポート] ドロップダウン リストで、[OnRamp.Itinerary.Response] をクリックします。

  2. ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 On-Ramp モデル要素の右側に配置します。 [ ItineraryService1 プロパティ] ウィンドウで、次のプロパティを構成します。

    1. Name プロパティをクリックし、「MapNAOrderToCNOrder」と入力します。

    2. [ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ メッセージング エクステンダー] をクリックします。

      このプロパティは、プロセスがパイプライン (メッセージング) で実行されることを定義します。 または、プロセスがオーケストレーションで行われる場合は、 スケジュール サービス エクステンダー プロパティを オーケストレーション エクステンダーに設定します。

    3. [コンテナー] ドロップダウン リストで、[ReceiveNAOrder] を展開し、[受信ハンドラー] をクリックします。

    4. [ サービス名 ] ドロップダウン リストで、[ Microsoft.Practices.ESB.Services.Transform] をクリックします。

  3. MapNAOrderToCNOrder モデル要素のリゾルバー コレクションを右クリックし、[新しいリゾルバーの追加] をクリックします。 [ 競合回避モジュール 1 のプロパティ] ウィンドウで、次のプロパティを構成します。

    1. Name プロパティをクリックし、「StaticallySpecifyTheMap」と入力します。

    2. [ リゾルバーの実装 ] ドロップダウン リストで、[ 静的リゾルバー拡張機能] をクリックします。

    3. [ 変換の種類 ] ドロップダウン リストで、[ GlobalBank.ESB.DynamicResolution.Transforms.SubmitOrderRequestNA_To_SubmitOrderRequestCN] をクリックします。

  4. ツールボックスで、[ コネクタ] をクリックします。 ReceiveNAOrder モデル要素から MapNAOrderToCNOrder モデル要素に接続をドラッグします。

  5. ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 MapNAOrderToCNOrder モデル要素の右側に配置します。 [ ItineraryService1 プロパティ] ウィンドウで、次のプロパティを構成します。

    1. Name プロパティをクリックし、「RouteToCNService」と入力します。

    2. [ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ メッセージング エクステンダー] をクリックします。

      このプロパティは、プロセスがパイプライン (メッセージング) で実行されることを定義します。 または、プロセスがオーケストレーションで行われる場合は、 スケジュール サービス エクステンダー プロパティを オーケストレーション エクステンダーに設定します。

    3. [コンテナー] ドロップダウン リストで、[ReceiveNAOrder] を展開し、[受信ハンドラー] をクリックします。

    4. [ サービス名 ] ドロップダウン リストで、[ Microsoft.Practices.ESB.Services.Routing] をクリックします。

  6. RouteToCNService モデル要素のリゾルバー コレクションを右クリックし、[新しいリゾルバーの追加] をクリックします。 [ 競合回避モジュール 1 のプロパティ] ウィンドウで、次のプロパティを構成します。

    1. Name プロパティをクリックし、「StaticallySpecifyTheService」と入力します。

    2. [ リゾルバーの実装 ] ドロップダウン リストで、[ 静的リゾルバー拡張機能] をクリックします。

    3. [ トランスポート名 ] ドロップダウン リストで、[ WCF-BasicHttp] をクリックします。

    4. [ トランスポートの場所 ] プロパティをクリックし、「 http://localhost/ESB.CanadianServices/SubmitPOService.asmx」と入力します。

    5. [ ターゲット名前空間 ] プロパティをクリックし、「 http://globalbank.esb.dynamicresolution.com/canadianservices」と入力します。

    6. Action プロパティをクリックし、「submitOrder」と入力します。

  7. ツールボックスで、[ コネクタ] をクリックします。 MapNAOrderToCNOrder モデル要素から RouteToCNService モデル要素に接続をドラッグします。

  8. ツールボックスから 、Off-Ramp モデル要素をデザインサーフェイスにドラッグし、 RouteToCNService モデル要素の右側に配置します。 [OffRamp1 プロパティ] ウィンドウで、次のプロパティを構成します。

    1. Name プロパティをクリックし、「InvokeCNService」と入力します。

    2. [ エクステンダー ] ドロップダウン リストで、[ ESB エクステンダーOff-Ramp クリックします。

    3. BizTalk アプリケーションのドロップダウン リストで、[GlobalBank.ESB] をクリックします。

    4. [送信ポート] ドロップダウン リストで、[DynamicResolutionSolicitResp] をクリックします。

  9. ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 RouteToCNService モデル要素と InvokeCNService モデル要素の間に配置します。 [ ItineraryService1 プロパティ] ウィンドウで、次のプロパティを構成します。

    1. Name プロパティをクリックし、「SendPortFilter」と入力します。

    2. Itinerary Service Extenderのドロップダウン リストで、エクステンダーOff-Rampをクリックします。

    3. オフランプ のドロップダウン リストで、InvokeCNService を展開し、送信ハンドラー をクリックします。

  10. ツールボックスで、[ コネクタ] をクリックします。 RouteToCNService モデル要素から SendPortFilter モデル要素に接続をドラッグします。

  11. ツールボックスで、[ コネクタ] をクリックします。 接続を SendPortFilter モデル要素から InvokeCNService モデル要素にドラッグします。

  12. デザイン サーフェイスを右クリックし、[ 検証] をクリックします。

    旅程が検証されます。応答メッセージを要求側に送り返すために、オフランプをオンランプに戻す必要はありません。 双方向のオンランプを使用すると、最終的なメッセージが要求側に自動的に返されます。

スケジュール テスト クライアントで使用するモデルをエクスポートするには

  1. Visual Studio で、 RequestResponse スケジュールのデザイン画面を右クリックし、[ モデルのエクスポート] をクリックします。

    スケジュールの XML バージョンが Visual Studio で開きます。

  2. すべてのプロジェクト成果物を保存します。

  3. Windows エクスプローラーで、C:\HowTos\Itineraries に移動します。 旅程 XML (RequestResponse.xml) の作成に注目してください。

旅程をテストするには

  1. 開発アクティビティの前提条件 (C:\HowTos\ESB.Itinerary.Test.exe - ショートカット) で作成したショートカットを使用して、Itinerary Test Client サンプル アプリケーションを開きます。

  2. スケジュール テスト クライアントで、[ WCF サービスの使用 ] チェック ボックスをオフにします。

  3. [ Web サービス オプション] セクションで、[ 双方向サービス ] チェック ボックスをオンにし、[ スケジュールの読み込み] をクリックします。

  4. [ スケジュール ファイルを開く ] ダイアログ ボックスで、C:\HowTos\Itineraries に移動します。 RequestResponse.xmlを選択し、[開く] をクリックして旅程を読み込みます。

  5. [ OK] を クリックして、 スケジュールが正常に読み込まれたメッセージを クリアします。

  6. スケジュール テスト クライアントで、[ メッセージの読み込み ] ボックスの横にある省略記号ボタン (...) をクリックします。

  7. [ 読み込む XML ドキュメントの選択 ] ダイアログ ボックスで、C:\HowTos を参照します。 NAOrderDoc.xml選択し、[開く] をクリックしてテスト メッセージを読み込みます。

  8. [ 要求の送信] ボタンをクリックします。 テストが完了したら、[ OK] をクリックして、表示される確認を閉じます。

  9. [結果] ボックスで、メッセージのルート ノードが submitOrderResponse で、既定の名前空間が ... であることに注意してください。canadianservices

    応答メッセージが要求側に送信される前に追加の変換が必要な場合は、ESB フォワーダー コンポーネントを含むパイプラインを使用する必要があります。 この機能の例については、「 複数の Web サービスのインストールと実行」サンプルを参照してください。

その他のリソース

詳細については、次の関連項目を参照してください。