次の方法で共有


方法: メッセージ コンテキスト プロパティを利用し、コンテンツベース ルーティングを実装する

目標

このセクションでは、Microsoft BizTalk ESB Toolkit のスケジュール Designerを使用して、メッセージ コンテキスト プロパティに基づいてメッセージ受信者を選択し、Itinerary Broker メッセージング サービスを使用してその受信者にメッセージをルーティングするスケジュールを作成する方法について説明します。

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

  • スケジュール ブローカーを使用して旅程を作成し、静的リゾルバーを使用して 2 つのルーティング サービスを作成します。

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

Note

現在の実装では、オーケストレーション ベースのブローカー サービスは提供されていません。

前提条件

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

手順

ESB スケジュール DSL モデルを作成するには

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

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

  3. [ 新しい項目の追加 ] ダイアログ ボックスの [テンプレート] ウィンドウで [ ItineraryDsl ] をクリックします。

  4. [ 名前 ] ボックスに「 ChoiceRouter」と入力し、[ 追加] をクリックします。

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

  1. Visual Studio で、 ChoiceRouter スケジュールのデザイン画面をクリックします。 ChoiceRouter プロパティ ウィンドウで、次のプロパティを構成します。

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

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

    3. [ エクスポート モード ] プロパティドロップダウン リストで、[ 厳密] をクリックします。

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

    Note

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

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

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

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

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

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

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

  2. ツールボックスから、 Itinerary Broker Service モデル要素をデザイナー画面にドラッグし、 On-Ramp モデル要素の右側に配置します。 ItineraryBrokerService1 で、次のプロパティを構成します。

    1. [名前] プロパティをクリックし、「RouteBrokerService」と入力します。

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

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

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

  3. Filter コレクションを右クリックし、[新しいフィルターの追加] をクリックします。 Filter1 プロパティ ウィンドウで、次のプロパティを構成します。

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

    2. [ フィルター の実装] ドロップダウン リストをクリックし、[ XPath フィルター] をクリックします。

    3. [式] プロパティをクリックし、count(/ContextProperties/Property[@name='InboundTransportLocation'][contains(., 'ProcessItinerary.asmx')]) > 0 と入力します。

  4. Filter コレクションを右クリックし、[新しいフィルターの追加] をクリックします。 Filter1 プロパティ ウィンドウで、次のプロパティを構成します。

    1. [名前] プロパティをクリックし、「WCFFilter」と入力します。

    2. [ フィルターの実装 ] ドロップダウン リストをクリックし、[ XPath フィルター] をクリックします。

    3. [式] プロパティをクリックし、「count(/ContextProperties/Property[@name='InboundTransportLocation'][contains(., 'ESB)」と入力します。ItineraryServices.WCF')]) > 0

  5. RouteBrokerService モデル要素の Resolver コレクションを右クリックし、[Add new Resolver]\(新しいリゾルバーの追加\) をクリックします。 Resolver1 プロパティ ウィンドウで、次のプロパティを構成します。

    1. [名前] プロパティをクリックし、「ResolverBrokerRoute」と入力します。

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

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

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

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

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

      Note

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

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

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

  8. RouteToFileFromASMX モデル要素の Resolver コレクションを右クリックし、[新しいリゾルバーの追加] をクリックします。 Resolver1 プロパティ ウィンドウで、次のプロパティを構成します。

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

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

    3. [ トランスポート名 ] ドロップダウン リストで、[ ファイル] をクリックします。

    4. [ トランスポートの場所 ] プロパティをクリックし、「 c:\howtos\out\asmx%MessageId%.xml」と入力します。

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

    1. [名前] プロパティをクリックし、「SendASMXOrder」と入力します。

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

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

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

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

    1. [名前] プロパティをクリックし、「SendPortFilterASMX」と入力します。

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

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

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

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

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

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

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

      Note

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

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

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

  14. RouteToFileFromWCF モデル要素の Resolver コレクションを右クリックし、[新しいリゾルバーの追加] をクリックします。 Resolver1 プロパティ ウィンドウで、次のプロパティを構成します。

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

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

    3. [ トランスポート名 ] ドロップダウン リストで、[ ファイル] をクリックします。

    4. [ トランスポートの場所 ] プロパティをクリックし、「 c:\howtos\out\wcf%MessageId%.xml」と入力します。

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

    1. [名前] プロパティをクリックし、「SendWCFOrder」と入力します。

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

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

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

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

    1. [名前] プロパティをクリックし、「SendPortFilterWCF」と入力します。

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

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

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

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

  19. ツールボックスから、 Itinerary Outport モデル要素を RouteBrokerService の右罫線にドラッグします。 ItineraryBrokerOutPort1 プロパティ ウィンドウで、次のプロパティを構成します。

    1. [名前] プロパティをクリックし、「WCF ポート」と入力します。

    2. [ フィルター ] ドロップダウン リストで、[ WCFFilter] をクリックします。

    3. [ 競合回避モジュール ] ドロップダウン リストで、[ ResolverBrokerRoute] をクリックします。

  20. ツールボックスから、 Itinerary Outport モデル要素を RouteBrokerService の下の境界線にドラッグします。 ItineraryBrokerOutPort1 プロパティ ウィンドウで、次のプロパティを構成します。

    1. [名前] プロパティをクリックし、「ASMX ポート」と入力します。

    2. [ フィルター ] ドロップダウン リストで、[ ASMXFilter] をクリックします。

    3. [ 競合回避モジュール ] ドロップダウン リストで、[ ResolverBrokerRoute] をクリックします。

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

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

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

Note

スケジュールを 2 回エクスポートする必要があります。1 回は XML で、もう 1 回はデータベースにエクスポートして、ブローカー経由でルーティングをテストします。

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

    Note

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

  2. Windows エクスプローラーで、C:\HowTos\Itineraries に移動し、スケジュール XML (ChoiceRouter.xml) の作成に注目します。

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

  4. プロパティ ウィンドウで、[モデル エクスポーター] ドロップダウン リストの [データベース スケジュールエクスポーター] をクリックします。

  5. プロパティ ウィンドウで、[スケジュール データベース] プロパティ接続文字列、スケジュール データベースをポイントするように設定します。

  6. [ スケジュールの状態] プロパティのドロップダウン リストで、[ デプロイ済み] を選択します。

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

旅程をテストするには

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

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

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

  4. [ OK] をクリックして 、"スケジュールが正常に読み込まれました" というメッセージを閉じます。

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

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

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

  8. Windows エクスプローラーで、C:\HowTos\Out に移動します。ASMX%MessageID%.xml メッセージがこのディレクトリに書き込まれたことを確認します。

  9. [Itinerary Test client Use WCF Service チェック] ボックスをクリックします。 [ スケジュール名 ] ボックスに「 ChoiceRouter」と入力し、[ 要求の送信 ] ボタンをクリックします。 テストが完了したら、[ OK] をクリックして 確認メッセージを閉じます。

  10. Windows エクスプローラーで、C:\HowTos\Out に移動します。WCF%MessageID%.xml メッセージがこのディレクトリに書き込まれたことを確認します。

その他のリソース

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