目標
このセクションでは、 ItinerarySelectReceiveXml パイプラインを使用する ESB オンランプを作成する方法と、受信インターチェンジを分割し、メッセージ コンテキストに基づいて結果のメッセージごとに適切なルーティング スリップを選択するようにパイプラインのコンポーネントを構成する方法について説明します。 スケジュールの選択はビジネス ルール ポリシーを使用して解決され、メッセージは顧客が存在するリージョンに基づいて異なる方法でルーティングされます。
このハウツー トピックでは、次の手順を実行します。
XML インターチェンジを分割する ESB オンランプを作成します。
ビジネス ルール ポリシーを使用して適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。
[前提条件]
このハウツー トピックの手順では、 開発アクティビティの前提条件を完了する必要があります。
開始する前に
このハウツー トピックの後の手順を実行する前に、次のタスクを完了してください。
必要な成果物を作成します。
パターン ソリューションにスキーマ プロジェクトを追加します。
スキーマ プロジェクトに成果物を追加します。
カスタム メッセージ プロパティを使用してスケジュールを選択する 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 folder, create a new text document named 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]\(厳密な名前のキー ファイルの選択\) ドロップダウン リストで、[<New...> をクリックします。
[ 厳密な名前キーの作成 ] ダイアログ ボックスで、次のプロパティを構成します。
[ キー ファイル名 ] ボックスに、「 分割」と入力します。
[ パスワードでキー ファイルを保護 する] チェック ボックスをオフにし、[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 を右クリックし、[ 配置] をクリックします。
注
このハウツー トピックでは、「方法: ビジネス ルール ポリシーを 使用してスケジュールを選択する 」トピックで作成したものと同じビジネス ルール ポリシーとスケジュールを使用します。 このセクションをまだ完了していない場合は、次の追加手順を完了してください。 そのセクションを完了した場合は、「ステップ」セクションに直接進みます。
カスタム メッセージ プロパティを使用してスケジュールを選択するビジネス ルール エンジン (BRE) ポリシーを作成するには
タスク バーの [ スタート] をクリックし、[ すべてのプログラム] をポイントし、 BizTalk Server をポイントして、[ ビジネス ルールコンポーザー] をクリックします。
ポリシー エクスプローラーで、[ ポリシー] を右クリックし、[ 新しいポリシーの追加] をクリックします。 ポリシーに ResolveItineraryBasedOnCustomer という名前を付けます。
顧客 GlobalBank West の選択規則を追加するには
ResolveItineraryBasedOnCustomer ポリシーで、バージョン 1.0 (保存されていない) を右クリックし、[新しい規則の追加] をクリックします。 規則 SetGlobalBankWestItinerary に名前を付けます。
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」と入力します。
ファクト エクスプローラーで、[ボキャブラリ] タブをクリックします。ESB.Itinerary ボキャブラリを展開し、バージョン 1.1 を展開した後、[旅程名の設定] 定義を[アクション]にドラッグします。
<空の文字列>をクリックして、GlobalBankWestItinerary と入力します。
注
このハウツー トピックの後半では、GlobalBank West からのメッセージを処理するためにこのスケジュールを作成します。
顧客 GlobalBank East の選択規則を追加するには
ポリシー エクスプローラーで、 SetGlobalBankWestItinerary 規則を右クリックし、[ コピー] をクリックします。
バージョン 1.0 (保存されていません) を右クリックし、[貼り付け] をクリックします。
[ 新しい規則名 ] ダイアログ ボックスで、「 SetGlobalBankEastItinerary」と入力し、[OK] をクリック します。
ポリシー エクスプローラーで、 SetGlobalBankEastItinerary ルールをクリックします。
[ 条件 ] セクションで、[ GlobalBankWest] を右クリックし、[ 引数のリセット] をクリックします。
argument2 をクリックし、「GlobalBankEast」と入力します。
[ アクション] セクションで、 GlobalBankWestItinerary を右クリックし、[ 引数のリセット] をクリックします。
空の文字列<をクリックし、その後GlobalBankEastItineraryと入力します。
注
このハウツー トピックの後半では、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 プロパティ ウィンドウで、次のプロパティを構成します。
[ モデル エクスポーター ] ドロップダウン リストで、[ データベース スケジュール エクスポーター] をクリックします。
[ スケジュール データベース ] プロパティの横にある省略記号ボタン (...) をクリックします。
[ 接続のプロパティ ] ダイアログ ボックスで、スケジュール リポジトリ データベースをホストする SQL Server を選択し、データベースの名前を指定します (既定の名前は EsbItineraryDb です)。
[ スケジュールの状態] ドロップダウン リストで、[ デプロイ済み] をクリックします。
注
この手順では、スケジュールを中央リポジトリにエクスポートできます。メッセージを受信するときに、このリポジトリからスケジュールを選択して添付できます。 後で BRI リゾルバーを使用して受信メッセージを評価し、このリポジトリから適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。
GlobalBank West の旅程の構造を定義するには
ツールボックスから、 On-Ramp モデル要素をデザイン サーフェイスにドラッグします。 OnRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「ReceiveNAOrder」と入力します。
[ エクステンダー ]ドロップダウン リストで、[ On-Ramp ESB サービス拡張機能]をクリックします。
BizTalk アプリケーションのドロップダウン リストで、Microsoft.Practices.ESB をクリックします。
[受信ポート] ドロップダウン リストで、[OnRamp.Itinerary] をクリックします。
ツールボックスから 、Off-Ramp モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素の右側に配置します。 [OffRamp1 プロパティ] ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「SendNAOrder」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ ESB サービス拡張機能Off-Ramp クリックします。
BizTalk アプリケーションのドロップダウン リストで、[GlobalBank.ESB] をクリックします。
[送信ポート] ドロップダウン リストで、[DynamicResolutionOneWay] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素と SendNAOrder モデル要素の間に配置します。 [ ItineraryService1 プロパティ] ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「RouteMessage」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ スケジュール サービス拡張機能Off-Ramp クリックします。
[オフランプ] ドロップダウン リストで、[SendNAOrder] を展開し、[Send Handlers] をクリックします。
RouteMessage モデル要素のリゾルバー コレクションを右クリックし、[新しいリゾルバーの追加] をクリックします。 [ 競合回避モジュール 1 のプロパティ] ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「StaticResolver」と入力します。
[ リゾルバーの実装 ] ドロップダウン リストで、[ 静的リゾルバー拡張機能] をクリックします。
[ トランスポート名 ] ドロップダウン リストで、[ ファイル] をクリックします。
[ トランスポートの場所 ] プロパティをクリックし、「 C:\HowTos\Out\West%MessageID%.xml」と入力します。
ツールボックスで、[ コネクタ] をクリックします。 ReceiveNAOrder モデル要素から RouteMessage モデル要素に接続をドラッグします。
ツールボックスで、[ コネクタ] をクリックします。 接続を RouteMessage モデル要素から SendNAOrder モデル要素にドラッグします。
GlobalBank West モデルをスケジュール データベースにエクスポートするには
Visual Studio で、 GlobalBankWestItinerary スケジュールのデザイン 画面を右クリックし、[ モデルのエクスポート] をクリックします。
注
旅程はスケジュール データベースにエクスポートされ、スケジュール セレクター コンポーネントで使用できるようになりました。
すべてのプロジェクト成果物を保存します。
GlobalBank East メッセージの ESB スケジュール DSL モデルを作成するには
Visual Studio で、C:\HowTos\Patterns.sln を開きます。
ソリューション エクスプローラーで、 ItineraryLibrary プロジェクトを右クリックし、[ 追加] をポイントして、[ 新しいスケジュール] をクリックします。
[ 新しい項目の追加 ] ダイアログ ボックスの [テンプレート] ウィンドウで、[ ItineraryDsl] をクリックします。
[ 名前 ] ボックスに「 GlobalBankEastItinerary」と入力し、[ 追加] をクリックします。
GlobalBank East 旅程のプロパティを設定するには
Visual Studio で、 GlobalBankEastItinerary.itinerary のデザイン画面をクリックします。 GlobalBankEastItinerary プロパティ ウィンドウで、次のプロパティを構成します。
[ モデル エクスポーター ] ドロップダウン リストで、[ データベース スケジュール エクスポーター] をクリックします。
[ スケジュール データベース ] プロパティの横にある省略記号ボタン (...) をクリックします。
[ 接続のプロパティ ] ダイアログ ボックスで、スケジュール リポジトリ データベースをホストする SQL Server を選択し、データベースの名前を指定します (既定の名前は EsbItineraryDb です)。
[ スケジュールの状態] ドロップダウン リストで、[ デプロイ済み] をクリックします。
注
この手順では、スケジュールを中央リポジトリにエクスポートできます。メッセージを受信するときに、このリポジトリからスケジュールを選択して添付できます。 後で BRI リゾルバーを使用して受信メッセージを評価し、このリポジトリから適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。
GlobalBank Eastの旅程の構造を定義するには
ツールボックスから、 On-Ramp モデル要素をデザイン サーフェイスにドラッグします。 OnRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「ReceiveNAOrder」と入力します。
[ エクステンダー ]ドロップダウン リストで、[ On-Ramp ESB サービス拡張機能]をクリックします。
BizTalk アプリケーションのドロップダウン リストで、Microsoft.Practices.ESB をクリックします。
[受信ポート] ドロップダウン リストで、[OnRamp.Itinerary] をクリックします。
ツールボックスから 、Off-Ramp モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素の右側に配置します。 [OffRamp1 プロパティ] ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「SendNAOrder」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ ESB サービス拡張機能Off-Ramp クリックします。
BizTalk アプリケーションのドロップダウン リストで、[GlobalBank.ESB] をクリックします。
[送信ポート] ドロップダウン リストで、[DynamicResolutionOneWay] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素と SendNAOrder モデル要素の間に配置します。 [ ItineraryService1 プロパティ] ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「RouteMessage」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ スケジュール サービス拡張機能Off-Ramp クリックします。
[オフランプ] ドロップダウン リストで、[SendNAOrder] を展開し、[Send Handlers] をクリックします。
RouteMessage モデル要素のリゾルバー コレクションを右クリックし、[新しいリゾルバーの追加] をクリックします。 [ 競合回避モジュール 1 のプロパティ] ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「StaticResolver」と入力します。
[ リゾルバーの実装 ] ドロップダウン リストで、[ 静的リゾルバー拡張機能] をクリックします。
[ トランスポート名 ] ドロップダウン リストで、[ ファイル] をクリックします。
[ トランスポートの場所 ] プロパティをクリックし、「 C:\HowTos\Out\East%MessageID%.xml」と入力します。
ツールボックスで、[ コネクタ] をクリックします。 ReceiveNAOrder モデル要素から RouteMessage モデル要素に接続をドラッグします。
ツールボックスで、[ コネクタ] をクリックします。 接続を RouteMessage モデル要素から SendNAOrder モデル要素にドラッグします。
GlobalBank East モデルをスケジュール データベースにエクスポートするには
Visual Studio で、 GlobalBankEastItinerary スケジュールのデザイン画面を右クリックし、[ モデルのエクスポート] をクリックします。
注
旅程はスケジュール データベースにエクスポートされ、スケジュール セレクター コンポーネントで使用できるようになりました。
すべてのプロジェクト成果物を保存します。
ステップス
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] を クリックして、[ パイプラインの構成 ] ダイアログ ボックスを閉じます。
注
この受信場所は XML インターチェンジを逆アセンブルしているため、XML 逆アセンブラー コンポーネントの構成は必要ありません。
[ OK] を クリックして、[ 受信場所のプロパティ ] ダイアログ ボックスを閉じます。
BizTalk Server 管理コンソールで、 OnRamp.Itinerary.HowTo 受信場所を右クリックし、[ 有効] をクリックします。
スケジュール セレクターとビジネス ルールをテストするには
Windows エクスプローラーで、C:\HowTos に移動します。
Batch.xml を DropFolder フォルダーにコピー (移動しない) します。
ディレクトリにC:\HowTos\Out. Verify that one West%MessageID%.xml message and two East%MessageID%.xmlメッセージが書き込まれました。参照してください。
注
メッセージは顧客要素の値を除いて同じですが、スケジュール セレクター パイプライン コンポーネントの解決に基づいて、異なるスケジュールを使用して処理されました。
BizTalk Server 管理コンソールで、OnRamp.Itinerary.HowTo 受信場所を右クリックし、[無効] をクリックします。
OnRamp.Itinerary.HowTo 受信場所が無効になった後、それを右クリックし、[削除] をクリックします。 [ 受信場所の削除の確認 ] ダイアログ ボックスで、[ はい] をクリックします。
その他のリソース
詳細については、次の関連項目を参照してください。