目標
このセクションでは、ビジネス ルール ポリシーを使用して、既知のメッセージの種類 (Microsoft BizTalk Server 構成データベースに展開されたスキーマ) の内容に基づいて、メッセージを動的にルーティングするスケジュールを作成する方法について説明します。
このハウツー トピックでは、次の手順を実行します。
コンテンツに基づいてメッセージをルーティングするために使用されるビジネス ルール ポリシーを作成します。
メッセージを動的にルーティングするための BRE リゾルバーを使用して、スケジュール ルーティング スリップを作成します。
スケジュール テスト クライアント サンプル アプリケーションを使用して、スケジュールをテストします。
[前提条件]
このハウツー トピックの手順では、 開発アクティビティの前提条件を完了する必要があります。
開始する前に
このハウツー トピックの後の手順を実行する前に、次のタスクを完了してください。
GlobalBank West テスト メッセージを作成します。
GlobalBank East テスト メッセージを作成します。
次の手順では、それぞれを実行する方法について説明します。
GlobalBank West テスト メッセージを作成するには
Windows エクスプローラーで、C:\HowTos に移動します。
NAOrderDoc.xmlのコピーを作成し、West.xmlコピーに名前を付けます。
メモ帳で West.xml開き、 customerName 要素の値を GlobalBankWest に変更します。
West.xml UTF-8 として保存し、メモ帳を閉じます。
GlobalBank East テスト メッセージを作成するには
Windows エクスプローラーで、C:\HowTos に移動します。
NAOrderDoc.xmlのコピーを作成し、East.xmlコピーに名前を付けます。
メモ帳で East.xmlを開き、 customerName 要素の値を GlobalBankEast に変更します。
East.xml UTF-8 として保存し、メモ帳を閉じます。
ステップス
カスタム メッセージ プロパティを使用してルーティングする BRE ポリシーを作成するには
このルールでは、顧客の名前を使用して、メッセージのルーティングに使用されるエンドポイントを動的に設定します。
タスク バーの [ スタート] をクリックし、[ すべてのプログラム] をポイントし、 BizTalk Server をポイントして、[ ビジネス ルールコンポーザー] をクリックします。
ポリシー エクスプローラーで、[ ポリシー] を右クリックし、[ 新しいポリシーの追加] をクリックします。 ポリシー に RouteBasedOnCustomerKnownType という名前を付けます。
顧客 GlobalBank West のルーティング規則を追加するには
RouteBasedOnCustomerKnownType ポリシーで、バージョン 1.0 (保存されていない) を右クリックし、[新しい規則の追加] をクリックします。 ルール SetWestEndpoint に名前を付けます。
Facts Explorer で、[ XML スキーマ ] タブをクリックし、[ スキーマ] を右クリックし、[ 参照] をクリックします。
[ スキーマ ファイル ] ダイアログ ボックスで、C:\Projects\Microsoft.Practices.ESB\Source\Samples\DynamicResolution\Source\ESB に移動します。DynamicResolution.Schemas で NAOrderDoc.xsd を選択し、[ 開く] をクリックします。
注
これは、テストに使用する西および東のメッセージを作成するために使用された NAOrderDoc.xml メッセージを定義するスキーマです。
Facts Explorer で、[ NAOrderDoc.xsd] をクリックし、[プロパティ] ウィンドウで [ ドキュメントの種類 ] プロパティをクリックし、「 GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc」と入力します。
注
これはスキーマの完全修飾名です。
Facts Explorer で、 NAOrderDoc.xsd を展開し、 OrderDoc を展開します。
[ルール] ウィンドウで、[ 条件] を右クリックし、[ 述語] をポイントして、[ 等しい] をクリックします。
Facts Explorer から、customerName 要素を [条件] の下の argument1 ノードにドラッグします。
argument2 ノードをクリックし、「GlobalBankWest」と入力します。
Facts Explorer で、ボキャブラリ タブをクリックし、ESB.EndPointInfo を展開し、バージョン 1.0 をさらに展開します。
注
Microsoft BizTalk ESB Toolkit には、ESB で使用するルールを作成するために使用できるいくつかのボキャブラリが含まれています。 これらの一部は、独自のボキャブラリに置き換えるか、拡張する必要があります。 たとえば、 DynamicRunTimeMaptypes には、 GlobalBank サンプルで提供されるマップの定義があります。
ファクト エクスプローラーで、[ エンドポイントの送信トランスポートの場所の設定 ] 定義を [アクション] にドラッグします。
「<空の文字列>」をクリックし、次にC:\HowTos\Out\West%MessageID%.xmlを入力します。
Facts Explorer で、[ エンド ポイントの送信トランスポートの種類の設定 ] 定義を [アクション] にドラッグします。
Facts Explorer で ESB.TransportTypes を展開し、バージョン 1.0 を展開した後、アダプタープロバイダー定義を <空の文字列>にドラッグします。
[操作] ウィンドウで、[アダプター プロバイダー] ドロップダウン リストを展開し、[ファイル] をクリックします。
顧客 GlobalBank East のルーティング規則を追加するには
ポリシー エクスプローラーで、 SetWestEndpoint 規則を右クリックし、[ コピー] をクリックします。
バージョン 1.0 (保存されていません) を右クリックし、[貼り付け] をクリックします。
[ 新しい規則名 ] ダイアログ ボックスで、「 SetEastEndpoint」と入力し、[OK] をクリック します。
ポリシー エクスプローラーで、 SetEastEndpoint ルールを クリックします。
[ 条件 ] セクションで、[ GlobalBankWest] を右クリックし、[ 引数のリセット] をクリックします。
argument2 をクリックし、「GlobalBankEast」と入力します。
[ アクション ] セクションで、 C:\HowTos\Out\West%MessageID%.xmlを右クリックし、[ 引数のリセット] をクリックします。
<空の文字列>をクリックし、C:\HowTos\Out\East%MessageID%.xmlと入力します。
不明な顧客のルーティング規則を追加するには
RouteBasedOnCustomerKnownType ポリシーで、バージョン 1.0 (保存されていない) を右クリックし、[新しい規則の追加] をクリックします。 ルール SetUnknownCustomerEndpoint に名前を付けます。
[ルール] ウィンドウで、[条件] を右クリックし、[論理 AND の追加] をクリックします。
[ルール] ウィンドウで、[AND] を右クリックし、[述語] の上に移動し、[NotEqual] をクリックします。
Facts Explorer で、[XML スキーマ] タブをクリックし、[NAOrderDoc.xsd] を展開して、[OrderDoc] を展開します。
Facts Explorer から、customerName 要素を [条件] の下の argument1 ノードにドラッグします。
argument2 ノードをクリックし、「GlobalBankWest」と入力します。
[ルール] ウィンドウで [AND] を右クリックし、[述語] にカーソルを合わせて、[NotEqual] をクリックします。
Facts Explorer から、customerName 要素を [条件] の下の argument1 ノードにドラッグします。
argument2 ノードをクリックし、「GlobalBankEast」と入力します。
Facts Explorer で、[ボキャブラリ] タブをクリックし、ESB を展開します。EndPointInfo を選択し、バージョン 1.0 を展開します。
ファクト エクスプローラーで、[エンドポイントの送信トランスポートの場所の設定] 定義を [アクション] にドラッグします。
<空の文字列>をクリックし、その後、「C:\HowTos\Out\CustomerUnknown%MessageID%.xml」と入力します。
Facts Explorer で、[エンド ポイントの送信トランスポートの種類の設定] 定義を [アクション] にドラッグします。
Facts Explorer で、ESB.TransportTypes を展開し、バージョン 1.0 を展開してから、アダプター プロバイダーの定義を<空の文字列>にドラッグします。
[操作] ウィンドウで、[アダプター プロバイダー] ドロップダウン リストを展開し、[ファイル] をクリックします。
ポリシーを発行して展開するには
ポリシー エクスプローラーの RouteBasedOnCustomerKnownType ポリシーで、 バージョン 1.0 (保存されていない) を右クリックし、[ 発行] をクリックします。
ポリシー エクスプローラーの RouteBasedOnCustomerKnownType ポリシーで、 バージョン 1.0 - 発行済みを右クリックし、[ 展開] をクリックします。
ESB イテナラリー DSL モデルを作成するには
Visual Studio で、C:\HowTos\Patterns\Patterns.sln を開きます。
ソリューション エクスプローラーで、 ItineraryLibrary プロジェクトを右クリックし、[ 追加] をポイントして、[ 新しいスケジュール] をクリックします。
[ 新しい項目の追加 ] ダイアログ ボックスの [名前 ] ボックスに「 CbrKnownType」と入力し、[ 追加] をクリックします。
スケジュールのプロパティを構成するには
Visual Studio で、 CbrKnownType.itinerary のデザイン画面をクリックします。 CbrKnownType プロパティ ウィンドウで、次のプロパティを構成します。
[ モデル エクスポーター ] ドロップダウン リストで、[ XML スケジュール エクスポーター] をクリックします。
[ エクステンダーの設定] セクションで、[ スケジュール XML ファイル ] プロパティの横にある省略記号ボタン (...) をクリックします。
[XML ファイルの選択] ダイアログ ボックスで、[ファイル名] ボックスに「C:\HowTos\Itineraries\CbrKnownType」と入力し、[保存] をクリックします。
注
この手順では、スケジュールを XML としてローカル ファイルの場所にエクスポートできます。 スケジュールデータベースではなく、ローカルファイルの場所に旅程をエクスポートすることで、ESBテストクライアントアプリケーションを使用して旅程のテストを可能にします。 このプロセスは、このハウツー トピックの後半で完了します。
旅程の構造を定義するには
ツールボックスから、 On-Ramp モデル要素をデザイン サーフェイスにドラッグします。 OnRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「ReceiveNAOrder」と入力します。
[ エクステンダー ]ドロップダウン リストで、[ On-Ramp ESB エクステンダー]をクリックします。
BizTalk アプリケーションのドロップダウン リストで、Microsoft.Practices.ESB をクリックします。
[受信ポート] ドロップダウン リストで、[OnRamp.Itinerary] をクリックします。
ツールボックスから 、Off-Ramp モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素の右側に配置します。 [OffRamp1 プロパティ] ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「SendRegionalOrders」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ ESB エクステンダーOff-Ramp クリックします。
BizTalk アプリケーションのドロップダウン リストで、[GlobalBank.ESB] をクリックします。
[送信ポート] ドロップダウン リストで、[DynamicResolutionOneWay] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素と SendRegionalOrders モデル要素の間に配置します。 [ ItineraryService1 プロパティ] ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「SendPortFilter」と入力します。
Itinerary Service Extenderのドロップダウン リストで、エクステンダーOff-Rampをクリックします。
[オフランプ] ドロップダウン リストで、[SendRegionalOrders] を展開し、[ハンドラーの送信] をクリックします。
SendPortFilter モデル要素のリゾルバー コレクションを右クリックし、[新しいリゾルバーの追加] をクリックします。 [ 競合回避モジュール 1 のプロパティ] ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「RouteRegionalOrders」と入力します。
[ トランスポート名 ] ドロップダウン リストで、[ BRE] をクリックします。
解決モジュールの実装 ドロップダウンリストで、Bre Resolver Extension をクリックします。
[ ポリシー ] ドロップダウン リストで、[ RouteBasedOnCustomerKnownType] をクリックします。
[ メッセージ形式の認識 ] ドロップダウン リストで、[ True] をクリックします。
[ UseMsg ] ドロップダウン リストで、[ True] をクリックします。
注
オーケストレーションから BRE リゾルバー拡張機能を使用する場合は、 recognizeMessageFormat プロパティを False に設定する必要があります。
ツールボックスで、[ コネクタ] をクリックします。 ReceiveNAOrder モデル要素から SendPortFilter モデル要素に接続をドラッグします。
ツールボックスで、[ コネクタ] をクリックします。 接続を SendPortFilter モデル要素から SendRegionalOrders モデル要素にドラッグします。
スケジュール テスト クライアントで使用するモデルをエクスポートするには
Visual Studio で、 CbrKnownType スケジュールのデザイン 画面を右クリックし、[ モデルのエクスポート] をクリックします。
注
スケジュールの XML バージョンが Visual Studio で開きます。
すべてのプロジェクト成果物を保存します。
Windows エクスプローラーで、[C:\HowTos\Itineraries and notice the creation of your itinerary XML (CbrKnownType.xml] を参照します。
スケジュールとビジネス ルールをテストするには
開発アクティビティの前提条件 (C:\HowTos\ESB.Itinerary.Test.exe - ショートカット) で作成したショートカットを使用して、Itinerary Test Client サンプル アプリケーションを開きます。
スケジュール テスト クライアントで、[ WCF サービスの使用 ] チェック ボックスをオフにし、[ スケジュールの読み込み] をクリックします。
[ スケジュール ファイルを開く ] ダイアログ ボックスで、C:\HowTos\Itineraries に移動します。 CbrKnownType.xmlを選択し、[開く] をクリックして旅程を読み込みます。
[ OK] を クリックして、 スケジュールが正常に読み込まれたメッセージを クリアします。
スケジュール テスト クライアントで、[ メッセージの読み込み ] ボックスの横にある省略記号ボタン (...) をクリックします。
[ 読み込む XML ドキュメントの選択 ] ダイアログ ボックスで、C:\HowTos を参照します。 West.xml選択し、[開く] をクリックしてテスト メッセージを読み込みます。
[ 要求の送信] ボタンをクリックします。 テストが完了したら、[ OK] をクリックして、表示される確認を閉じます。
Windows エクスプローラーで、「C:\HowTos\Out. Verify that the West%MessageID%.xml」というメッセージが書き込まれたディレクトリを参照します。
East.xml メッセージを使用してテスト プロセスを繰り返します。
Windows エクスプローラーで、「C:\HowTos\Out. Verify that the East%MessageID%.xml」というメッセージが書き込まれたディレクトリを参照します。
NAOrderDoc.xml メッセージを使用してテスト プロセスを繰り返します。
Windows エクスプローラーで、「C:\HowTos\Out. Verify that the CustomerUnknown%MessageID%.xml」というメッセージが書き込まれたディレクトリを参照します。
その他のリソース
詳細については、次の関連項目を参照してください。