方法: ビジネス ルール ポリシーを使用して、日程を選択
目標
このセクションでは、受信したメッセージの内容に基づいてスケジュールを選択するために使用できるビジネス ルールを作成する方法と、これらのルールを呼び出すために一般的なスケジュール オンランプ内でスケジュール セレクター パイプライン コンポーネントを構成する方法について説明します。 このセクションでは、顧客が存在するリージョンに基づいて、メッセージのルーティング方法が異なるビジネス シナリオについて説明します。
このハウツー トピックでは、次の手順を実行します。
顧客グローバル銀行の西部部門と東部部門の旅程をモデル化します。
要求を処理するスケジュールを選択するために使用されるビジネス ルール ポリシーを作成します。
ビジネス ルール ポリシーを使用して適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。
前提条件
このハウツー トピックの手順では、 開発アクティビティの前提条件を完了する必要があります。
はじめに
この操作方法に関するトピックで後述する手順を実行する前に、次のタスクを完了してください。
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] をポイントして、[ビジネス ルール作成ツール] をクリックします。
[ポリシー エクスプローラー] で、[ポリシー] を右クリックし、[新しいポリシーの追加] をクリックします。 ポリシーに ResolveItineraryBasedOnCustomer という名前を付けます。
Note
このハウツー トピックでは、「 方法: インターチェンジを分割し、結果のメッセージを個別のスケジュールを使用して複数のファイルの場所にルーティングする」トピックで作成したものと同じビジネス ルール ポリシーとスケジュールを使用します。 このセクションを既に完了している場合は、このトピックで後述する「ESB on-ramp を作成して構成するには」の手順に進むことができます。
顧客 GlobalBank West の選択規則を追加するには
ResolveItineraryBasedOnCustomer ポリシーで、[バージョン 1.0 (保存されていません)] を右クリックし、[新しい規則の追加] をクリックします。 規則に SetGlobalBankWestItinerary という名前を付けます。
[ファクト] エクスプローラーで、[XML スキーマ] タブをクリックし、[スキーマ] を右クリックし、[参照] をクリックします。
[ スキーマ ファイル ] ダイアログ ボックスで、C:\Projects\Microsoft.Practices.ESB\Source\Samples\DynamicResolution\Source\ESB に移動します。DynamicResolution.Schemas を選択し、[ NAOrderDoc.xsd] を選択し、[ 開く] をクリックします。
Note
これは、テストに使用する西と東のメッセージを作成するために使用された NAOrderDoc.xml メッセージを定義するスキーマです。
ファクト エクスプローラーで、[NAOrderDoc.xsd] をクリックし、[プロパティ] ウィンドウで [ドキュメントの種類] プロパティをクリックし、「GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc」と入力します。
Note
これはスキーマの完全修飾名です。
[ファクト] エクスプローラーで、[NAOrderDoc.xsd] を展開し、[OrderDoc] を展開します。
[ルール] ウィンドウで [ 条件] を右クリックし、[ 述語] をポイントして、[ 等しい] をクリックします。
ファクト エクスプローラーから、customerName 要素を [条件] の下の argument1 ノードにドラッグします。
argument2 ノードをクリックし、「GlobalBankWest」と入力します。
[ファクト] エクスプローラーで、[ボキャブラリ] タブをクリックします。ESB を展開します。[スケジュールボキャブラリ] で、[バージョン 1.1] を展開し、[スケジュール名の設定] 定義を [アクション] にドラッグします。
[空の文字列>] をクリック<し、「GlobalBankWestItinerary」と入力します。
Note
このハウツー トピックの後半では、GlobalBank West からのメッセージを処理するためにこのスケジュールを作成します。
Customer GlobalBank East の選択規則を追加するには
[ポリシー エクスプローラーで、SetGlobalBankWestItinerary ルールを右クリックし、[コピー] をクリックします。
[バージョン 1.0 (保存されていません)] を右クリックし、[貼り付け] をクリックします。
[ 新しい規則名 ] ダイアログ ボックスで、「 SetGlobalBankEastItinerary」と入力し、[OK] をクリック します。
[ポリシー エクスプローラー] で、SetGlobalBankEastItinerary ルールをクリックします。
[ 条件 ] セクションで、[ GlobalBankWest] を右クリックし、[ 引数のリセット] をクリックします。
argument2 をクリックし、「GlobalBankEast」と入力します。
[ アクション] セクションで、[ GlobalBankWestItinerary] を右クリックし、[ 引数のリセット] をクリックします。
[空の文字列>] をクリック<し、「GlobalBankEastItinerary」と入力します。
Note
ハウツー トピックの後半では、GlobalBank East からのメッセージを処理するためにこのスケジュールを作成します。
ポリシーを発行して展開するには
[ポリシー エクスプローラー] の [ResolveItineraryBasedOnCustomer] ポリシーで、[バージョン 1.0 (保存されていません)] を右クリックし、[発行] をクリックします。
[ポリシー エクスプローラー] の [ResolveItineraryBasedOnCustomer] ポリシーで、[バージョン 1.0 - 発行済み] を右クリックし、[展開] をクリックします。
GlobalBank West メッセージの ESB スケジュール ドメイン固有言語 (DSL) モデルを作成するには
Visual Studio で、C:\HowTos\Patterns\Patterns.sln を開きます。
ソリューション エクスプローラーで、ItineraryLibrary プロジェクトを右クリックし、[追加] をポイントして、[新しいスケジュール] をクリックします。
[ 新しい項目の追加 ] ダイアログ ボックスの [テンプレート] ウィンドウで、[ ItineraryDsl] をクリックします。
[ 名前 ] ボックスに「 GlobalBankWestItinerary」と入力し、[ 追加] をクリックします。
GlobalBank West 旅程のプロパティを構成するには
Visual Studio で、 GlobalBankWestItinerary.itinerary のデザイン画面をクリックします。 GlobalBankWestItinerary プロパティ ウィンドウで、次のプロパティを構成します。
[ Model Exporter]\(モデル エクスポーター\) ドロップダウン リストで、[ Database Itinerary Exporter]\(データベース スケジュール エクスポーター\) をクリックします。
[ スケジュール データベース ] プロパティの横にある省略記号ボタン (...) をクリックします。
[接続のプロパティ] ダイアログ ボックスで、スケジュール リポジトリ データベースをホストするSQL Serverを選択し、データベースの名前を指定します (既定の名前は EsbItineraryDb)。
[ スケジュールの状態] ドロップダウン リストで、[ デプロイ済み] をクリックします。
Note
この手順により、スケジュールを中央リポジトリにエクスポートできます。メッセージ受信時に、このリポジトリからスケジュールを選択してアタッチできます。 後で、ビジネス ルール エンジン リゾルバー (BRI) を使用して受信メッセージを評価し、このリポジトリから適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。
旅程の構造を定義するには
ツールボックスから、 On-Ramp モデル要素をデザイン サーフェイスにドラッグします。 OnRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「ReceiveNAOrder」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ On-Ramp ESB サービス拡張機能] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[Microsoft.Practices.ESB] をクリックします。
[ 受信ポート ] ドロップダウン リストで、[ OnRamp.Itinerary] をクリックします。
ツールボックスから 、Off-Ramp モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素の右側に配置します。 OffRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「SendNAOrder」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ Off-Ramp ESB サービス拡張機能] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[GlobalBank.ESB] をクリックします。
[ 送信ポート ] ドロップダウン リストで、[ DynamicResolutionOneWay] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素と SendNAOrder モデル要素の間に配置します。 ItineraryService1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「RouteMessage」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ Off-Ramp Itinerary Service Extension] をクリックします。
[ オフランプ ] ドロップダウン リストで、[ SendNAOrder] を展開し、[ハンドラーの 送信] をクリックします。
RouteMessage モデル要素の Resolver コレクションを右クリックし、[Add new Resolver]\(新しいリゾルバーの追加\) をクリックします。 Resolver1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「StaticResolver」と入力します。
[ リゾルバーの実装 ] ドロップダウン リストで、[ Static Resolver Extension]\(静的リゾルバー拡張機能\) をクリックします。
[ トランスポート名 ] ドロップダウン リストで、[ ファイル] をクリックします。
[ トランスポートの場所 ] プロパティをクリックし、「 C:\HowTos\Out\West%MessageID%.xml」と入力します。
ツールボックスで、[ コネクタ] をクリックします。 ReceiveNAOrder モデル要素から RouteMessage モデル要素に接続をドラッグします。
ツールボックスで、[ コネクタ] をクリックします。 接続を RouteMessage モデル要素から SendNAOrder モデル要素にドラッグします。
モデルをスケジュール データベースにエクスポートするには
Visual Studio で、 GlobalBankWestItinerary スケジュールのデザイン 画面を右クリックし、[ モデルのエクスポート] をクリックします。
Note
スケジュールはスケジュール データベースにエクスポートされ、スケジュール セレクター コンポーネントで使用できるようになりました。
すべてのプロジェクト成果物を保存します。
GlobalBank East メッセージの ESB スケジュール DSL モデルを作成するには
Visual Studio で C:\HowTos\Patterns.sln を開きます。
ソリューション エクスプローラーで、ItineraryLibrary プロジェクトを右クリックし、[追加] をポイントして、[新しいスケジュール] をクリックします。
[ 新しい項目の追加 ] ダイアログ ボックスの [テンプレート] ウィンドウで、[ ItineraryDsl] をクリックします。
[ 名前 ] ボックスに 「GlobalBankEastItinerary」と入力し、[ 追加] をクリックします。
GlobalBank East 旅程のプロパティを構成するには
Visual Studio で、 GlobalBankEastItinerary.itinerary のデザイン画面をクリックします。 GlobalBankEastItinerary プロパティ ウィンドウで、次のプロパティを構成します。
[ Model Exporter]\(モデル エクスポーター\) ドロップダウン リストで、[ Database Itinerary Exporter]\(データベース スケジュール エクスポーター\) をクリックします。
[ スケジュール データベース ] プロパティの横にある省略記号ボタン (...) をクリックします。
[接続のプロパティ] ダイアログ ボックスで、スケジュール リポジトリ データベースをホストするSQL Serverを選択し、データベースの名前を指定します (既定の名前は EsbItineraryDb)。
[ スケジュールの状態] ドロップダウン リストで、[ デプロイ済み] をクリックします。
Note
この手順により、スケジュールを中央リポジトリにエクスポートできます。メッセージの受信時に、このリポジトリからスケジュールを選択してアタッチできます。 後で BRI リゾルバーを使用して受信メッセージを評価し、このリポジトリから適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。
旅程の構造を定義するには
ツールボックスから、 On-Ramp モデル要素をデザイン サーフェイスにドラッグします。 OnRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「ReceiveNAOrder」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ On-Ramp ESB サービス拡張機能] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[Microsoft.Practices.ESB] をクリックします。
[ 受信ポート ] ドロップダウン リストで、[ OnRamp.Itinerary] をクリックします。
ツールボックスから 、Off-Ramp モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素の右側に配置します。 OffRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「SendNAOrder」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ Off-Ramp ESB サービス拡張機能] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[GlobalBank.ESB] をクリックします。
[ 送信ポート ] ドロップダウン リストで、[ DynamicResolutionOneWay] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素と SendNAOrder モデル要素の間に配置します。 ItineraryService1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「RouteMessage」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ Off-Ramp Itinerary Service Extension] をクリックします。
[ オフランプ ] ドロップダウン リストで、[ SendNAOrder] を展開し、[ハンドラーの 送信] をクリックします。
RouteMessage モデル要素の Resolver コレクションを右クリックし、[Add new Resolver]\(新しいリゾルバーの追加\) をクリックします。 Resolver1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「StaticResolver」と入力します。
[ リゾルバーの実装 ] ドロップダウン リストで、[ Static Resolver Extension]\(静的リゾルバー拡張機能\) をクリックします。
[ トランスポート名 ] ドロップダウン リストで、[ ファイル] をクリックします。
[ トランスポートの場所 ] プロパティをクリックし、「 C:\HowTos\Out\East%MessageID%.xml」と入力します。
ツールボックスで、[ コネクタ] をクリックします。 ReceiveNAOrder モデル要素から RouteMessage モデル要素に接続をドラッグします。
ツールボックスで、[ コネクタ] をクリックします。 接続を RouteMessage モデル要素から SendNAOrder モデル要素にドラッグします。
モデルをスケジュール データベースにエクスポートするには
Visual Studio で、 GlobalBankEastItinerary スケジュールのデザイン画面を右クリックし、[ モデルのエクスポート] をクリックします。
Note
スケジュールはスケジュール データベースにエクスポートされ、スケジュール セレクター コンポーネントで使用できるようになりました。
すべてのプロジェクト成果物を保存します。
ESB オンランプを作成して構成するには
タスク バーの [スタート] をクリックし、[すべてのプログラム] をポイントし、[BizTalk Server] をポイントして、[BizTalk Server管理] をクリックします。
BizTalk Server管理コンソールで、[BizTalk グループ]、[アプリケーション]、[Microsoft.Practices.ESB] の順に展開します。
[ 受信場所] を右クリックし、[ 新規] をポイントして、[ 一方向の受信場所] をクリックします。
[ 受信ポートの選択 ] ダイアログ ボックスで、[ OnRamp.Itinerary] をクリックし、[OK] をクリック します。
[ 受信場所のプロパティ ] ダイアログ ボックスの [名前 ] ボックスに 「OnRamp.Itinerary.HowTo」と入力します。
[ 種類 ] ドロップダウン リストで、[ ファイル] をクリックし、[ 構成] をクリックします。
[ ファイル トランスポートのプロパティ ] ダイアログ ボックスの [ 受信フォルダー ] ボックスに「 C:\HowTos\DropFolder」と入力し、[OK] をクリック します。
スケジュール セレクター パイプライン コンポーネントを構成するには
[ 受信場所のプロパティ ] ダイアログ ボックスの [ 受信パイプライン ] ドロップダウン リストで、[ ItinerarySelectReceiveXml] をクリックし、省略記号ボタン (...) をクリックします。
[ パイプラインの構成 ] ダイアログ ボックスを使用して、次の スケジュール セレクター コンポーネントのプロパティを構成します。
[ ItineraryFactKey ] プロパティをクリックし、「 Resolver.Itinerary」と入力します。
ResolverConnectionString プロパティをクリックし、「BRI:\\policy=ResolveItineraryBasedOnCustomer」と入力します。useMsg=true;recognizeMessageFormat=true;
[ OK] をクリックして 、[ パイプラインの構成 ] ダイアログ ボックスを閉じます。
[ OK] をクリックして 、[ 受信場所のプロパティ ] ダイアログ ボックスを閉じます。
BizTalk Server管理コンソールで、OnRamp.Itinerary.HowTo 受信場所を右クリックし、[有効にする] をクリックします。
旅程セレクターとビジネス ルールをテストするには
Windows エクスプローラーで、C:\HowTos に移動します。
East.xml ファイルをコピー (移動しない) し、DropFolder フォルダーに West.xml します。
C:\HowTos\Out に移動します。East%MessageID%.xml メッセージと West%MessageID%.xml メッセージがディレクトリに書き込まれたことを確認します。
Note
customer 要素の値を除いて同じですが、メッセージは、Itinerary Selector パイプライン コンポーネントの解決に基づいて、異なるスケジュールを使用して処理されました。
BizTalk Server管理コンソールで、OnRamp.Itinerary.HowTo 受信場所を右クリックし、[無効] をクリックします。
OnRamp.Itinerary.HowTo 受信場所が無効になった後、それを右クリックし、[削除] をクリックします。 [ 受信場所の削除の確認 ] ダイアログ ボックスで、[ はい] をクリックします。
その他のリソース
詳細については、次の関連項目を参照してください。