方法: 別個のスケジュールを利用し、インターチェンジを分割して結果的に生成されたメッセージを複数のファイルの場所に送る
目標
このセクションでは、 ItinerarySelectReceiveXml パイプラインを使用する ESB オンランプを作成する方法と、受信インターチェンジを分割するようにパイプラインのコンポーネントを構成し、メッセージ コンテキストに基づいて、結果のメッセージごとに適切なルーティング スリップを選択する方法について説明します。 スケジュールの選択はビジネス ルール ポリシーを使用して解決され、メッセージは顧客が存在するリージョンに基づいて異なる方法でルーティングされます。
このハウツー トピックでは、次の手順を実行します。
XML インターチェンジを分割する ESB オンランプを作成します。
ビジネス ルール ポリシーを使用して適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。
前提条件
このハウツー トピックの手順では、 開発アクティビティの前提条件を完了する必要があります。
はじめに
この操作方法に関するトピックで後述する手順を実行する前に、次のタスクを完了してください。
必要な成果物を作成します。
パターン ソリューションにスキーマ プロジェクトを追加します。
成果物を Schemas プロジェクトに追加します。
カスタム メッセージ プロパティを使用して旅程を選択する BRE ポリシーを作成します。
顧客 GlobalBank West の選択規則を追加します。
顧客 GlobalBank East の選択規則を追加します。
ポリシーを発行して展開します。
GlobalBank West メッセージ用の ESB スケジュール ドメイン固有言語 (DSL) モデルを作成します。
GlobalBank West の旅程のプロパティを構成します。
GlobalBank West の旅程の構造を定義します。
GlobalBank West モデルをスケジュール データベースにエクスポートします。
GlobalBank East メッセージ用の ESB スケジュール DSL モデルを作成します。
GlobalBank East のスケジュールのプロパティを構成します。
GlobalBank East の旅程の構造を定義します。
GlobalBank East モデルをスケジュール データベースにエクスポートします。
次の手順では、これらのそれぞれを実行する方法について説明します。
必要な成果物を作成するには
Windows エクスプローラーで、C:\HowTos に移動します。
OrderDocEnvelope.xsd という名前の新しいテキスト ドキュメントを作成します。
メモ帳で OrderDocEnvelope.xsd スキーマを開きます。
次のコードを使用してドキュメントを編集します。
<?xml version="1.0" ?> <xs:schema xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://ESB.BizUnit.Map.Test" targetNamespace="http://ESB.BizUnit.Map.Test" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:import schemaLocation="GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc" namespace="http://globalbank.esb.dynamicresolution.com/northamericanservices/" /> <xs:annotation> <xs:appinfo> <b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" /> <b:references> <b:reference targetNamespace="http://globalbank.esb.dynamicresolution.com/northamericanservices/" /> </b:references> </xs:appinfo> </xs:annotation> <xs:element name="OrderEnvelope"> <xs:annotation> <xs:appinfo> <b:recordInfo body_xpath="/*[local-name()='OrderEnvelope' and namespace-uri()='http://ESB.BizUnit.Map.Test']" /> </xs:appinfo> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="ns0:OrderDoc" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
OrderDocEnvelope.xsd を UTF-8 として保存し、メモ帳を閉じます。
C:\HowTos フォルダーに、Batch.xml という名前の新しいテキスト ドキュメントを作成します。
メモ帳で、Batch.xml を開きます。
次のコードを使用してドキュメントを編集します。
<?xml version="1.0" ?> <ns0:OrderEnvelope xmlns:ns0="http://ESB.BizUnit.Map.Test"> <ns0:OrderDoc xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/"> <ns0:customerName>GlobalBankWest</ns0:customerName> <ns0:ID>ns0:ID_0</ns0:ID> <ns0:requestType>10</ns0:requestType> </ns0:OrderDoc> <ns0:OrderDoc xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/"> <ns0:customerName>GlobalBankEast</ns0:customerName> <ns0:ID>ns0:ID_0</ns0:ID> <ns0:requestType>11</ns0:requestType> </ns0:OrderDoc> <ns0:OrderDoc xmlns:ns0="http://globalbank.esb.dynamicresolution.com/northamericanservices/"> <ns0:customerName>GlobalBankEast</ns0:customerName> <ns0:ID>ns0:ID_0</ns0:ID> <ns0:requestType>12</ns0:requestType> </ns0:OrderDoc> </ns0:OrderEnvelope>
Batch.xml を保存して閉じます。
パターン ソリューションにスキーマ プロジェクトを追加するには
Visual Studio で、C:\HowTos\Patterns\Patterns.sln を開きます。
ソリューション エクスプローラーで、[ソリューションのパターン] を右クリックし、[追加] をポイントして、[新しいプロジェクト] をクリックします。
[ 新しいプロジェクトの追加 ] ダイアログ ボックスの [プロジェクトの種類] ウィンドウで、[ BizTalk プロジェクト] をクリックし、次の操作を行います。
[テンプレート] ウィンドウで、[プロジェクトBizTalk Server空にする] をクリックします。
[ 名前 ] ボックスに「 Patterns.Schemas」と入力し、[OK] をクリック します。
ソリューション エクスプローラーで、[Patterns.Schemas] を右クリックし、[プロパティ] をクリックします。
プロパティ ウィンドウの [署名] タブで、[アセンブリ チェックに署名する] ボックスを選択します。
[Choose a strong name key file]\(厳密な名前のキー ファイルの選択\) ドロップダウン リストで、[新規...>] をクリックします<。
[ 厳密な名前キーの作成 ] ダイアログ ボックスで、次のプロパティを構成します。
[ キー ファイル名 ] ボックスに「 分割」と入力します。
[パスワードチェックでキー ファイルを保護する] ボックスをオフにし、[OK] をクリックします。
プロパティ ウィンドウの [展開] タブの [アプリケーション名] ボックスに「Microsoft.Practices.ESB」と入力します。
[プロパティ] ウィンドウを閉じます。
スキーマ プロジェクトに成果物を追加するには
ソリューション エクスプローラーで、[Patterns.Schemas] を右クリックし、[参照の追加] をクリックします。
[参照の追加] ダイアログ ボックスの [参照] タブで、C:\Projects\Microsoft.Practices.ESB\Source\Samples\DynamicResolution\Source\ESB.DynamicResolution.Schemas\bin\Debug\GlobalBank.ESB.DynamicResolution.Schemas.dll を参照して選択し、[OK] をクリックします。
ソリューション エクスプローラーで、[Patterns.Schemas] を右クリックし、[追加] をポイントして、[既存の項目] をクリックします。
[ 既存の項目の追加 ] ダイアログ ボックスで、C:\HowTos\OrderDocEnvelope.xsd を参照して選択し、[ 追加] をクリックします。
すべてのソリューション成果物を保存します。
ソリューション エクスプローラーで、[Patterns.Schemas] を右クリックし、[配置] をクリックします。
Note
このハウツー トピックでは、「方法: ビジネス ルール ポリシーを使用して旅程を選択する」トピックで作成したものと同じ ビジネス ルール ポリシーとスケジュールを使用 します。 このセクションをまだ完了していない場合は、次の追加手順を完了してください。 そのセクションを完了した場合は、"ステップ" セクションに直接進みます。
カスタム メッセージ プロパティを使用してスケジュールを選択するビジネス ルール エンジン (BRE) ポリシーを作成するには
タスク バーの [スタート] をクリックし、[すべてのプログラム] をポイントし、[BizTalk Server] をポイントして、[ビジネス ルール作成ツール] をクリックします。
[ポリシー エクスプローラー] で、[ポリシー] を右クリックし、[新しいポリシーの追加] をクリックします。 ポリシーに ResolveItineraryBasedOnCustomer という名前を付けます。
顧客 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 からのメッセージを処理するためにこのスケジュールを作成します。
顧客 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 リゾルバーを使用して受信メッセージを評価し、このリポジトリから適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。
GlobalBank West の旅程の構造を定義するには
ツールボックスから、 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 モデル要素にドラッグします。
GlobalBank West モデルをスケジュール データベースにエクスポートするには
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 リゾルバーを使用して受信メッセージを評価し、このリポジトリから適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。
GlobalBank East の旅程の構造を定義するには
ツールボックスから、 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 モデル要素にドラッグします。
GlobalBank East モデルをスケジュール データベースにエクスポートするには
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] をクリックして [ パイプラインの構成 ] ダイアログ ボックスを閉じます。
Note
この受信場所は XML インターチェンジを逆アセンブルしているため、XML 逆アセンブラー コンポーネントの構成は必要ありません。
[ OK] をクリックして 、[ 受信場所のプロパティ ] ダイアログ ボックスを閉じます。
BizTalk Server管理コンソールで、OnRamp.Itinerary.HowTo 受信場所を右クリックし、[有効にする] をクリックします。
スケジュール セレクターとビジネス ルールをテストするには
Windows エクスプローラーで、C:\HowTos に移動します。
Batch.xml を DropFolder フォルダーにコピー (移動しない) します。
C:\HowTos\Out に移動します。1 つの West%MessageID%.xml メッセージと 2 つの East%MessageID%.xml メッセージがディレクトリに書き込まれたことを確認します。
Note
メッセージは customer 要素の値を除いて同じですが、スケジュール セレクター パイプライン コンポーネントの解決に基づいて、異なるスケジュールを使用して処理されました。
BizTalk Server管理コンソールで、OnRamp.Itinerary.HowTo 受信場所を右クリックし、[無効にする] をクリックします。
OnRamp.Itinerary.HowTo 受信場所が無効になった後、それを右クリックし、[削除] をクリックします。 [ 受信場所の削除の確認 ] ダイアログ ボックスで、[ はい] をクリックします。
その他のリソース
詳細については、次の関連項目を参照してください。