方法: ビジネス ルール ポリシーを使用して、日程を選択

目標

このセクションでは、受信したメッセージの内容に基づいてスケジュールを選択するために使用できるビジネス ルールを作成する方法と、これらのルールを呼び出すために一般的なスケジュール オンランプ内でスケジュール セレクター パイプライン コンポーネントを構成する方法について説明します。 このセクションでは、顧客が存在するリージョンに基づいて、メッセージのルーティング方法が異なるビジネス シナリオについて説明します。

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

  • 顧客グローバル銀行の西部部門と東部部門の旅程をモデル化します。

  • 要求を処理するスケジュールを選択するために使用されるビジネス ルール ポリシーを作成します。

  • ビジネス ルール ポリシーを使用して適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。

前提条件

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

はじめに

この操作方法に関するトピックで後述する手順を実行する前に、次のタスクを完了してください。

  • GlobalBank West テスト メッセージを作成します。

  • GlobalBank East テスト メッセージを作成します。

    次の手順では、これらのそれぞれを実行する方法について説明します。

GlobalBank West テスト メッセージを作成するには

  1. Windows エクスプローラーで、C:\HowTos に移動します。

  2. NAOrderDoc.xml のコピーを作成し、コピーに West.xml という名前を付けます。

  3. メモ帳で West.xml を開き、 customerName 要素の値を GlobalBankWest に変更します。

  4. West.xml UTF-8 として保存し、メモ帳を閉じます。

GlobalBank East テスト メッセージを作成するには

  1. Windows エクスプローラーで、C:\HowTos に移動します。

  2. NAOrderDoc.xml のコピーを作成し、コピーに East.xml という名前を付けます。

  3. メモ帳で、East.xml を開き、 customerName 要素の値を GlobalBankEast に変更します。

  4. East.xml UTF-8 として保存し、メモ帳を閉じます。

手順

カスタム メッセージ プロパティを使用してスケジュールを選択するビジネス ルール エンジン (BRE) ポリシーを作成するには

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

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

    Note

    このハウツー トピックでは、「 方法: インターチェンジを分割し、結果のメッセージを個別のスケジュールを使用して複数のファイルの場所にルーティングする」トピックで作成したものと同じビジネス ルール ポリシーとスケジュールを使用します。 このセクションを既に完了している場合は、このトピックで後述する「ESB on-ramp を作成して構成するには」の手順に進むことができます。

顧客 GlobalBank West の選択規則を追加するには

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

  2. [ファクト] エクスプローラーで、[XML スキーマ] タブをクリックし、[スキーマ] を右クリックし、[参照] をクリックします。

  3. [ スキーマ ファイル ] ダイアログ ボックスで、C:\Projects\Microsoft.Practices.ESB\Source\Samples\DynamicResolution\Source\ESB に移動します。DynamicResolution.Schemas を選択し、[ NAOrderDoc.xsd] を選択し、[ 開く] をクリックします。

    Note

    これは、テストに使用する西と東のメッセージを作成するために使用された NAOrderDoc.xml メッセージを定義するスキーマです。

  4. ファクト エクスプローラーで、[NAOrderDoc.xsd] をクリックし、[プロパティ] ウィンドウで [ドキュメントの種類] プロパティをクリックし、「GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc」と入力します。

    Note

    これはスキーマの完全修飾名です。

  5. [ファクト] エクスプローラーで、[NAOrderDoc.xsd] を展開し、[OrderDoc] を展開します。

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

  7. ファクト エクスプローラーから、customerName 要素を [条件] の下の argument1 ノードにドラッグします。

  8. argument2 ノードをクリックし、「GlobalBankWest」と入力します。

  9. [ファクト] エクスプローラーで、[ボキャブラリ] タブをクリックします。ESB を展開します。[スケジュールボキャブラリ] で、[バージョン 1.1] を展開し、[スケジュール名の設定] 定義を [アクション] にドラッグします。

  10. [空の文字列>] をクリック<し、「GlobalBankWestItinerary」と入力します。

    Note

    このハウツー トピックの後半では、GlobalBank West からのメッセージを処理するためにこのスケジュールを作成します。

Customer GlobalBank East の選択規則を追加するには

  1. [ポリシー エクスプローラーで、SetGlobalBankWestItinerary ルールを右クリックし、[コピー] をクリックします。

  2. [バージョン 1.0 (保存されていません)] を右クリックし、[貼り付け] をクリックします。

  3. [ 新しい規則名 ] ダイアログ ボックスで、「 SetGlobalBankEastItinerary」と入力し、[OK] をクリック します

  4. [ポリシー エクスプローラー] で、SetGlobalBankEastItinerary ルールをクリックします。

  5. [ 条件 ] セクションで、[ GlobalBankWest] を右クリックし、[ 引数のリセット] をクリックします。

  6. argument2 をクリックし、「GlobalBankEast」と入力します。

  7. [ アクション] セクションで、[ GlobalBankWestItinerary] を右クリックし、[ 引数のリセット] をクリックします。

  8. [空の文字列>] をクリック<し、「GlobalBankEastItinerary」と入力します。

    Note

    ハウツー トピックの後半では、GlobalBank East からのメッセージを処理するためにこのスケジュールを作成します。

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

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

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

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

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

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

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

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

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

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

    1. [ Model Exporter]\(モデル エクスポーター\) ドロップダウン リストで、[ Database Itinerary Exporter]\(データベース スケジュール エクスポーター\) をクリックします。

    2. [ スケジュール データベース ] プロパティの横にある省略記号ボタン (...) をクリックします。

    3. [接続のプロパティ] ダイアログ ボックスで、スケジュール リポジトリ データベースをホストするSQL Serverを選択し、データベースの名前を指定します (既定の名前は EsbItineraryDb)。

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

    Note

    この手順により、スケジュールを中央リポジトリにエクスポートできます。メッセージ受信時に、このリポジトリからスケジュールを選択してアタッチできます。 後で、ビジネス ルール エンジン リゾルバー (BRI) を使用して受信メッセージを評価し、このリポジトリから適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。

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

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

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

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

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

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

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

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

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

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

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

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

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

    2. [ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ Off-Ramp Itinerary Service Extension] をクリックします。

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

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

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

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

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

    4. [ トランスポートの場所 ] プロパティをクリックし、「 C:\HowTos\Out\West%MessageID%.xml」と入力します。

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

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

モデルをスケジュール データベースにエクスポートするには

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

    Note

    スケジュールはスケジュール データベースにエクスポートされ、スケジュール セレクター コンポーネントで使用できるようになりました。

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

GlobalBank East メッセージの ESB スケジュール DSL モデルを作成するには

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

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

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

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

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

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

    1. [ Model Exporter]\(モデル エクスポーター\) ドロップダウン リストで、[ Database Itinerary Exporter]\(データベース スケジュール エクスポーター\) をクリックします。

    2. [ スケジュール データベース ] プロパティの横にある省略記号ボタン (...) をクリックします。

    3. [接続のプロパティ] ダイアログ ボックスで、スケジュール リポジトリ データベースをホストするSQL Serverを選択し、データベースの名前を指定します (既定の名前は EsbItineraryDb)。

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

    Note

    この手順により、スケジュールを中央リポジトリにエクスポートできます。メッセージの受信時に、このリポジトリからスケジュールを選択してアタッチできます。 後で BRI リゾルバーを使用して受信メッセージを評価し、このリポジトリから適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。

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

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

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

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

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

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

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

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

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

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

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

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

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

    2. [ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ Off-Ramp Itinerary Service Extension] をクリックします。

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

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

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

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

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

    4. [ トランスポートの場所 ] プロパティをクリックし、「 C:\HowTos\Out\East%MessageID%.xml」と入力します。

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

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

モデルをスケジュール データベースにエクスポートするには

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

    Note

    スケジュールはスケジュール データベースにエクスポートされ、スケジュール セレクター コンポーネントで使用できるようになりました。

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

ESB オンランプを作成して構成するには

  1. タスク バーの [スタート] をクリックし、[すべてのプログラム] をポイントし、[BizTalk Server] をポイントして、[BizTalk Server管理] をクリックします。

  2. BizTalk Server管理コンソールで、[BizTalk グループ]、[アプリケーション]、[Microsoft.Practices.ESB] の順に展開します。

  3. [ 受信場所] を右クリックし、[ 新規] をポイントして、[ 一方向の受信場所] をクリックします。

  4. [ 受信ポートの選択 ] ダイアログ ボックスで、[ OnRamp.Itinerary] をクリックし、[OK] をクリック します

  5. [ 受信場所のプロパティ ] ダイアログ ボックスの [名前 ] ボックスに 「OnRamp.Itinerary.HowTo」と入力します。

  6. [ 種類 ] ドロップダウン リストで、[ ファイル] をクリックし、[ 構成] をクリックします。

  7. [ ファイル トランスポートのプロパティ ] ダイアログ ボックスの [ 受信フォルダー ] ボックスに「 C:\HowTos\DropFolder」と入力し、[OK] をクリック します

スケジュール セレクター パイプライン コンポーネントを構成するには

  1. [ 受信場所のプロパティ ] ダイアログ ボックスの [ 受信パイプライン ] ドロップダウン リストで、[ ItinerarySelectReceiveXml] をクリックし、省略記号ボタン (...) をクリックします。

  2. [ パイプラインの構成 ] ダイアログ ボックスを使用して、次の スケジュール セレクター コンポーネントのプロパティを構成します。

    1. [ ItineraryFactKey ] プロパティをクリックし、「 Resolver.Itinerary」と入力します。

    2. ResolverConnectionString プロパティをクリックし、「BRI:\\policy=ResolveItineraryBasedOnCustomer」と入力します。useMsg=true;recognizeMessageFormat=true;

    3. [ OK] をクリックして 、[ パイプラインの構成 ] ダイアログ ボックスを閉じます。

  3. [ OK] をクリックして 、[ 受信場所のプロパティ ] ダイアログ ボックスを閉じます。

  4. BizTalk Server管理コンソールで、OnRamp.Itinerary.HowTo 受信場所を右クリックし、[有効にする] をクリックします。

旅程セレクターとビジネス ルールをテストするには

  1. Windows エクスプローラーで、C:\HowTos に移動します。

  2. East.xml ファイルをコピー (移動しない) し、DropFolder フォルダーに West.xml します。

  3. C:\HowTos\Out に移動します。East%MessageID%.xml メッセージと West%MessageID%.xml メッセージがディレクトリに書き込まれたことを確認します。

    Note

    customer 要素の値を除いて同じですが、メッセージは、Itinerary Selector パイプライン コンポーネントの解決に基づいて、異なるスケジュールを使用して処理されました。

  4. BizTalk Server管理コンソールで、OnRamp.Itinerary.HowTo 受信場所を右クリックし、[無効] をクリックします。

  5. OnRamp.Itinerary.HowTo 受信場所が無効になった後、それを右クリックし、[削除] をクリックします。 [ 受信場所の削除の確認 ] ダイアログ ボックスで、[ はい] をクリックします。

その他のリソース

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