次の方法で共有


方法: ビジネス ルール ポリシーを利用し、メッセージ コンテキストに基づき、メッセージの経路を動的に決定する

目標

このセクションでは、メッセージ コンテキスト プロパティに基づいて、BizTalk Server ビジネス ルール エンジン (BRE) ポリシーを使用してメッセージ エンドポイントを決定し、BizTalk Server FILE アダプターを使用してメッセージをルーティングするスケジュールを作成する方法について説明します。

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

  • メッセージの種類を評価するビジネス ルール ポリシーを作成します。

  • ビジネス ルール ポリシーを使用して動的にルーティングする旅程ルーティング スリップを作成します。

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

前提条件

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

手順

メッセージ コンテキスト プロパティを使用してメッセージをルーティングする BRE ポリシーを作成するには

  1. タスク バーの [スタート] をクリックし、[すべてのプログラム] をポイントし、[BizTalk Server] をポイントして、[ビジネス ルール作成ツール] をクリックします。

  2. [ポリシー エクスプローラー] で、[ポリシー] を右クリックし、[新しいポリシーの追加] をクリックします。 ポリシーに RouteBasedOnMessageType という名前を付けます

    北米の注文のルーティング規則を追加するには

  3. RouteBasedOnMessageType ポリシーで、バージョン 1.0 (保存されていない) を右クリックし、[新しい規則の追加] をクリックします。 ルールに SetNAOrderEndpoint という名前を付けます

  4. [ルール] ウィンドウで、[ 条件] を右クリックし、[ 述語] をポイントして、[ 等しい] をクリックします。

  5. [ファクト] エクスプローラーで、ESB を展開します。ContextInfo ボキャブラリで、バージョン 1.0 を展開し、コンテキスト メッセージの種類のファクトを [条件] の下の argument1 ノードにドラッグします。

    Note

    Microsoft BizTalk ESB Toolkit には、ルールの作成に使用できる複数の語彙が含まれています。 これらの一部は、独自の語彙に置き換えるか、拡張する必要があります。 たとえば、 DynamicRunTimeMaptypes ポリシーには、 GlobalBank サンプルで提供されているマップの定義があります。

  6. argument2 ノードをクリックし、「」と入力します。http://globalbank.esb.dynamicresolution.com/northamericanservices/#OrderDoc

  7. [ファクト] エクスプローラーで、ESB を展開します。EndPointInfo ボキャブラリで、[バージョン 1.0] を展開し、[エンドポイントの送信トランスポートの場所の設定] 定義を [アクション] にドラッグします。

  8. 空の文字列>をクリック<し、「C:\HowTos\Out\NorthAmerica%MessageID%.xml

  9. [ファクト] エクスプローラーから、[エンドポイント送信トランスポートの種類の設定] 定義を [アクション] にドラッグします。

  10. [ファクト] エクスプローラーで、ESB を展開します。TansportTypes ボキャブラリ、バージョン 1.0 を展開し、アダプター プロバイダー定義を空の文字列に<ドラッグします>

  11. [操作] ウィンドウで、[ アダプター プロバイダー ] ドロップダウン リストを展開し、[ ファイル] をクリックします。

    ポリシーを発行して展開するには

  12. [ポリシー エクスプローラー] の [RouteBasedOnMessageType] ポリシーで、[バージョン 1.0 (保存されていません)] を右クリックし、[発行] をクリックします。

  13. [ポリシー エクスプローラー] の [RouteBasedOnMessageType] ポリシーで、[バージョン 1.0 - 発行済み] を右クリックし、[デプロイ] をクリックします。

    ESB スケジュール ドメイン固有言語 (DSL) モデルを作成するには

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

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

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

    旅程のプロパティを構成するには

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

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

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

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

      Note

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

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

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

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

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

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

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

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

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

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

      Note

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

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

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

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

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

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

    3. [ ポリシー ] ドロップダウン リストで、[ RouteBasedOnMessageType v 1.0] をクリックします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Note

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

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

  28. Windows エクスプローラーで、C:\HowTos\Itineraries に移動し、旅程 XML (MessageType.xml) の作成に注目します。

    旅程をテストするには

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

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

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

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

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

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

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

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

その他のリソース

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