方法: ビジネス ルール ポリシーを利用し、メッセージ コンテキストに基づき、メッセージの経路を動的に決定する
目標
このセクションでは、メッセージ コンテキスト プロパティに基づいて、BizTalk Server ビジネス ルール エンジン (BRE) ポリシーを使用してメッセージ エンドポイントを決定し、BizTalk Server FILE アダプターを使用してメッセージをルーティングするスケジュールを作成する方法について説明します。
このハウツー トピックでは、次の手順を実行します。
メッセージの種類を評価するビジネス ルール ポリシーを作成します。
ビジネス ルール ポリシーを使用して動的にルーティングする旅程ルーティング スリップを作成します。
スケジュール テスト クライアント サンプル アプリケーションを使用して、旅程をテストします。
前提条件
このハウツー トピックの手順では、 開発アクティビティの前提条件を完了する必要があります。
手順
メッセージ コンテキスト プロパティを使用してメッセージをルーティングする BRE ポリシーを作成するには
タスク バーの [スタート] をクリックし、[すべてのプログラム] をポイントし、[BizTalk Server] をポイントして、[ビジネス ルール作成ツール] をクリックします。
[ポリシー エクスプローラー] で、[ポリシー] を右クリックし、[新しいポリシーの追加] をクリックします。 ポリシーに RouteBasedOnMessageType という名前を付けます。
北米の注文のルーティング規則を追加するには
RouteBasedOnMessageType ポリシーで、バージョン 1.0 (保存されていない) を右クリックし、[新しい規則の追加] をクリックします。 ルールに SetNAOrderEndpoint という名前を付けます。
[ルール] ウィンドウで、[ 条件] を右クリックし、[ 述語] をポイントして、[ 等しい] をクリックします。
[ファクト] エクスプローラーで、ESB を展開します。ContextInfo ボキャブラリで、バージョン 1.0 を展開し、コンテキスト メッセージの種類のファクトを [条件] の下の argument1 ノードにドラッグします。
Note
Microsoft BizTalk ESB Toolkit には、ルールの作成に使用できる複数の語彙が含まれています。 これらの一部は、独自の語彙に置き換えるか、拡張する必要があります。 たとえば、 DynamicRunTimeMaptypes ポリシーには、 GlobalBank サンプルで提供されているマップの定義があります。
argument2 ノードをクリックし、「」と入力します。http://globalbank.esb.dynamicresolution.com/northamericanservices/#OrderDoc
[ファクト] エクスプローラーで、ESB を展開します。EndPointInfo ボキャブラリで、[バージョン 1.0] を展開し、[エンドポイントの送信トランスポートの場所の設定] 定義を [アクション] にドラッグします。
空の文字列>をクリック<し、「C:\HowTos\Out\NorthAmerica%MessageID%.xml
[ファクト] エクスプローラーから、[エンドポイント送信トランスポートの種類の設定] 定義を [アクション] にドラッグします。
[ファクト] エクスプローラーで、ESB を展開します。TansportTypes ボキャブラリ、バージョン 1.0 を展開し、アダプター プロバイダー定義を空の文字列に<ドラッグします>。
[操作] ウィンドウで、[ アダプター プロバイダー ] ドロップダウン リストを展開し、[ ファイル] をクリックします。
ポリシーを発行して展開するには
[ポリシー エクスプローラー] の [RouteBasedOnMessageType] ポリシーで、[バージョン 1.0 (保存されていません)] を右クリックし、[発行] をクリックします。
[ポリシー エクスプローラー] の [RouteBasedOnMessageType] ポリシーで、[バージョン 1.0 - 発行済み] を右クリックし、[デプロイ] をクリックします。
ESB スケジュール ドメイン固有言語 (DSL) モデルを作成するには
Visual Studio で C:\HowTos\Patterns\Patterns.sln を開きます。
ソリューション エクスプローラーで、ItineraryLibrary プロジェクトを右クリックし、[追加] をポイントして、[新しいスケジュール] をクリックします。
[ 名前 ] ボックスに 「MessageType」と入力し、[ 追加] をクリックします。
旅程のプロパティを構成するには
Visual Studio で、 MessageType.itinerary のデザイン画面をクリックします。 MessageType プロパティ ウィンドウで、次のプロパティを構成します。
[ モデル エクスポーター ] ドロップダウン リストで、[ XML スケジュール エクスポーター] をクリックします。
[ エクステンダーの設定] セクションの [ スケジュール XML ファイル ] プロパティの横にある省略記号ボタン (...) をクリックします。
[ XML ファイルの選択 ] ダイアログ ボックスの [ ファイル名 ] ボックスに 「C:\HowTos\Itineraries\MessageType」と入力し、[ 保存] をクリックします。
Note
この手順では、スケジュールを XML としてローカル ファイルの場所にエクスポートできます。 スケジュールデータベースではなく、ローカルファイルの場所に旅程をエクスポートすると、ESBテストクライアントアプリケーションを使用して旅程のテストが可能になります。 このプロセスは、このハウツー トピックの後半で完了します。
旅程の構造を定義するには
ツールボックスから、 On-Ramp モデル要素をデザインサーフェイスにドラッグします。 OnRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「ReceiveOrders」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ On-Ramp ESB エクステンダー] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[Microsoft.Practices.ESB] をクリックします。
[ 受信ポート ] ドロップダウン リストで、[ OnRamp.Itinerary] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 On-Ramp モデル要素の右側に配置します。 ItineraryService1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「BreRoute」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ メッセージング エクステンダー] をクリックします。
Note
このプロパティは、プロセスがパイプライン (メッセージング) で実行されることを定義します。 または、プロセスがオーケストレーションで行われる場合は、 スケジュール サービス エクステンダー プロパティを オーケストレーション エクステンダーに設定します。
[ コンテナー ] ドロップダウン リストで[ ReceiveOrders]\(受信順序\) を展開し、[ Receive Handlers]\(受信ハンドラー\) をクリックします。
[ サービス名] ドロップダウン リストで、[ Microsoft.Practices.ESB.Services.Routing] をクリックします。
BreRoute モデル要素の Resolver コレクションを右クリックし、[新しい競合回避モジュールの追加] をクリックします。 Resolver1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「ByMessageType」と入力します。
[ 競合回避モジュールの実装 ] ドロップダウン リストで、[ Bre Resolver Extension]\(リゾルバー拡張機能\) をクリックします。
[ ポリシー ] ドロップダウン リストで、[ RouteBasedOnMessageType v 1.0] をクリックします。
[ツールボックス] で、[ コネクタ] をクリックします。 ReceiveOrders モデル要素から BreRoute モデル要素に接続をドラッグします。
ツールボックスから 、Off-Ramp モデル要素をデザインサーフェイスにドラッグし、 BreRoute モデル要素の右側に配置します。 OffRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「SendBasedOnType」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ Off-Ramp ESB エクステンダー] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[GlobalBank.ESB] をクリックします。
[ 送信ポート ] ドロップダウン リストで、[ DynamicResolutionOneWay] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 BreRoute モデル要素と SendBasedOnType モデル要素の間に配置します。 ItineraryService1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「SendPortFilter」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ オフランプ エクステンダー] をクリックします。
[ オフランプ ] ドロップダウン リストで、[ SendBasedOnType] を展開し、[ 送信ハンドラー] をクリックします。
[ツールボックス] で、[ コネクタ] をクリックします。 接続を BreRoute モデル要素から SendPortFilter モデル要素にドラッグします。
[ツールボックス] で、[ コネクタ] をクリックします。 接続を SendPortFilter モデル要素から SendBasedOnType モデル要素にドラッグします。
スケジュール テスト クライアントで使用するモデルをエクスポートするには
Visual Studio で、 MessageType スケジュールのデザイン画面を右クリックし、[ モデルのエクスポート] をクリックします。
Note
スケジュールの XML バージョンが Visual Studio で開きます。
すべてのプロジェクト成果物を保存します。
Windows エクスプローラーで、C:\HowTos\Itineraries に移動し、旅程 XML (MessageType.xml) の作成に注目します。
旅程をテストするには
開発アクティビティの前提条件 (C:\HowTos\ESB.Itinerary.Test.exe - ショートカット) の間に作成されたショートカットを使用して、Itinerary Test Client サンプル アプリケーションを開きます。
[スケジュール テスト クライアント] で、[WCF サービス チェックを使用する] ボックスをオフにし、[スケジュールの読み込み] をクリックします。
[ スケジュール ファイルを開く ] ダイアログ ボックスで、C:\HowTos\Itineraries に移動します。 [MessageType.xml] を選択し、[開く] をクリックして旅程を読み込みます。
[ OK] をクリックして 、[ スケジュールが正常に読み込まれました ] メッセージをクリアします。
[スケジュール テスト クライアント] で、[ メッセージの読み込み ] ボックスの横にある省略記号ボタン (...) をクリックします。
[ 読み込む XML ドキュメントの選択 ] ダイアログ ボックスで、C:\HowTos を参照します。 [NAOrderDoc.xml] を選択し、[開く] をクリックしてテスト メッセージを読み込みます。
[ 要求の送信] ボタンをクリックします。 テストが完了したら、[OK] を クリックして、表示される確認を閉じます。
Windows エクスプローラーで、C:\HowTos\Out\ に移動します。 NorthAmerica%MessageID%.xml メッセージがディレクトリに書き込まれたことを確認します。
その他のリソース
詳細については、次の関連項目を参照してください。