方法: ESB オンランプを利用し、メッセージを検証する
目標
このセクションでは、ESB ディスパッチャー逆アセンブリ パイプライン コンポーネントを構成して、ESB オンランプに送信された XML メッセージのメッセージ検証を実行する方法について説明します。
このハウツー トピックでは、次の手順を実行します。
ItinerarySelectReceiveXml パイプラインを使用する ESB オンランプを作成します。
ESB ディスパッチャー逆アセンブリ パイプライン コンポーネントを構成して、メッセージの内容を検証します。
適切なスケジュールを解決するには、スケジュール セレクター パイプライン コンポーネントを構成します。
有効なメッセージと無効なメッセージを使用して、メッセージの検証をテストします。
前提条件
このハウツー トピックの手順では、 開発アクティビティの前提条件を完了する必要があります。
はじめに
このハウツー トピックで後述する手順を実行する前に、次のタスクを実行します。
無効なテスト メッセージを作成します。
ESB スケジュール ドメイン固有言語 (DSL) モデルを作成します。
旅程のプロパティを構成します。
旅程の構造を定義します。
モデルを Itinerary データベースにエクスポートします。
次の手順では、これらのそれぞれを実行する方法について説明します。
無効なテスト メッセージを作成するには
Windows エクスプローラーで、C:\HowTos に移動します。
NAOrderDoc.xml のコピーを作成し、コピー Invalid.xml の名前を変更します。
メモ帳で、Invalid.xml を開きます。
ns0:requestType>10</ns0:requestType> を ns0:requestType>TEN</ns0:requestType> に<変更<します。
Invalid.xml UTF-8 として保存し、メモ帳を閉じます。
Note
この要素の数値をテキストに変更すると、メッセージはスキーマに従って有効ではなくなります。
ESB スケジュール DSL モデルを作成するには
Visual Studio で C:\HowTos\Patterns\Patterns.sln を開きます。
ソリューション エクスプローラーで、[スケジュール][ライブラリ] を右クリックし、[追加] をポイントして、[新しい旅程] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、[名前] ボックスに「Validation」と入力し、[追加] をクリックします。
旅程のプロパティを構成するには
Visual Studio で、 Validation.itinerary のデザイン画面をクリックします。 [検証] プロパティ ウィンドウで、次のプロパティを構成します。
[ Model Exporter]\(モデル エクスポーター \) ドロップダウン リストで、[ Database Itinerary Exporter]\(データベース スケジュール エクスポーター\) をクリックします。
[ スケジュール データベース ] プロパティの横にある省略記号ボタン (...) をクリックします。
[接続のプロパティ] ダイアログ ボックスで、スケジュール リポジトリ データベースをホストするSQL Serverを選択し、データベースの名前を指定します (既定の名前は EsbItineraryDb)。
[ スケジュールの状態] ドロップダウン リストで、[ デプロイ済み] をクリックします。
Note
この手順では、旅程を中央リポジトリにエクスポートできます。メッセージを受信すると、このリポジトリから旅程を選択してアタッチできます。 後で、静的リゾルバーを使用してこのリポジトリから適切なスケジュールを選択するように、スケジュール セレクター パイプライン コンポーネントを構成します。
旅程の構造を定義するには
ツールボックスから、 On-Ramp モデル要素をデザインサーフェイスにドラッグします。 OnRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「ReceiveNAOrder」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ On-Ramp ESB エクステンダー] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[Microsoft.Practices.ESB] をクリックします。
[ 受信ポート ] ドロップダウン リストで、[ OnRamp.Itinerary] をクリックします。
ツールボックスから 、Off-Ramp モデル要素をデザインサーフェイスにドラッグし、既存のモデル要素の右側に配置します。 OffRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「SendNAOrder」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ Off-Ramp ESB エクステンダー] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[GlobalBank.ESB] をクリックします。
[ 送信ポート ] ドロップダウン リストで、[ DynamicResolutionOneWay] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 ReceiveNAOrder モデル要素と SendNAOrder モデル要素の間に配置します。 ItineraryService1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「SendPortFilter」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ オフランプ エクステンダー] をクリックします。
[ オフランプ ] ドロップダウン リストで、[ SendNAOrder] を展開し、[ 送信ハンドラー] をクリックします。
SendPortFilter 要素の Resolver コレクションを右クリックし、[新しい競合回避モジュールの追加] をクリックします。 Resolver1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「ConfigureOffRamp」と入力します。
[ 競合回避モジュールの実装] ドロップダウン リストで、[ Static Resolver Extension]\(静的リゾルバー拡張機能\) をクリックします。
[ トランスポート名 ] ドロップダウン リストで、[ ファイル] をクリックします。
[ トランスポートの場所 ] プロパティをクリックし、「 C:\HowTos\Out\Validated%MessageID%.xml」と入力します。
[ツールボックス] で、[ コネクタ] をクリックします。 ReceiveNAOrder モデル要素から SendPortFilter モデル要素に接続をドラッグします。
[ツールボックス] で、[ コネクタ] をクリックします。 接続を SendPortFilter モデル要素から SendNAOrder モデル要素にドラッグします。
モデルをスケジュール データベースにエクスポートするには
Visual Studio で、 検証 スケジュールのデザイン画面を右クリックし、[ モデルのエクスポート] をクリックします。
Note
旅程はスケジュール データベースにエクスポートされ、スケジュール セレクター パイプライン コンポーネントで使用できるようになりました。
すべてのプロジェクト成果物を保存します。
手順
ESB オンランプを作成して構成するには
タスク バーの [スタート] をクリックし、[すべてのプログラム] をポイントし、[BizTalk Server] をポイントして、[BizTalk Server管理] をクリックします。
BizTalk Server管理コンソールで、BizTalk グループを展開し、[アプリケーション] を展開して、[Microsoft.Practices.ESB] を展開します。
[ 受信場所] を右クリックし、[ 新規] をポイントして、[ 一方向の受信場所] をクリックします。
[ 受信ポートの選択 ] ダイアログ ボックスで、[ OnRamp.Itinerary] をクリックし、[OK] をクリック します。
[受信場所のプロパティ] ダイアログ ボックスの [名前] ボックスに「OnRamp.Itinerary.HowTo」と入力します。
[ 種類 ] ドロップダウン リストで、[ ファイル] をクリックし、[ 構成] をクリックします。
[ファイル トランスポートのプロパティ] ダイアログ ボックスの [受信フォルダー] ボックスに「C:\HowTos\DropFolder」と入力し、[OK] をクリックします。
メッセージ検証を実行するようにオンランプを構成するには
[ 受信場所のプロパティ ] ダイアログ ボックスの [ 受信パイプライン ] ドロップダウン リストで、[ ItinerarySelectReceiveXml] をクリックし、省略記号ボタン (...) をクリックします。
[ パイプラインの構成 ] ダイアログ ボックスを使用して、次の XML 逆アセンブラー コンポーネントのプロパティを構成します。
GlobalBank.Esb アプリケーションを展開し、[ スキーマ] をクリックします。 GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc を右クリックし、[プロパティ] をクリックします。 Name プロパティと Assembly プロパティをコピーし、テキスト ファイルに貼り付けます。
[逆アセンブリ] コンポーネントの [ValidateDocument] ドロップダウン リストで [True] をクリックします。
DocumentSpecNames プロパティをクリックし、スキーマの完全修飾名を入力します。 完全修飾名は名前で始まり、その後にコンマとステップ a で抽出されたアセンブリ情報が続きます。 以下に例を示します。
GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc, GlobalBank.ESB.DynamicResolution.Schemas, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c2c8b2b87f54180a
Note
これは、検証するスキーマの完全修飾名です。スキーマ名と 4 つのアセンブリ プロパティ (アセンブリ名、バージョン、カルチャ、公開キー トークン) で構成されます。 複数の値を使用できます。複数のスキーマをパイプ (|) 記号で区切ります。
スケジュール セレクター パイプライン コンポーネントを構成するには
[ パイプラインの構成 ] ダイアログ ボックスで、次の スケジュール セレクター コンポーネントのプロパティを構成します。
[ ItineraryFactKey ] プロパティをクリックし、「 Resolver.Itinerary」と入力します。
ResolverConnectionString プロパティをクリックし、「ITINERARY:\\name=Validation;」と入力します。
[ OK] をクリックして 、[ パイプラインの構成 ] ダイアログ ボックスを閉じます。
[ OK] をクリックして 、[ 受信場所のプロパティ ] ダイアログ ボックスを閉じます。
BizTalk Server管理コンソールで、OnRamp.Itinerary.HowTo 受信場所を右クリックし、[有効にする] をクリックします。
メッセージの検証とスケジュールの選択をテストするには
Windows エクスプローラーで、C:\HowTos に移動します。
NAOrderDoc.xml を DropFolder フォルダーにコピー (移動しない) します。
C:\HowTos\Out に移動します。Validated%MessageID%.xml がディレクトリに書き込まれたことを確認します。
Note
有効なメッセージは、予定どおりにスケジュールベースのルーティングを完了しました。
[出力] フォルダーから Validated%MessageID%.xml を削除します。
Windows エクスプローラーで、C:\HowTos に移動します。
Invalid.xml を DropFolder フォルダーにコピー (移動しない) します。
C:\HowTos\Out に移動します。新しいメッセージが配信されていないことを確認します。
Note
メッセージを検証できませんでした。そのため、旅程ベースのルーティングを完了できませんでした。
タスク バーの [スタート] をクリックし、[管理ツール] をポイントして、[イベント ビューアー] をクリックします。
イベント ビューアーで、[Windows ログ] を展開し、[アプリケーション] をクリックします。
Source がBizTalk Serverされ、イベント ID が 5719 である最近のイベントを見つけます。
Note
無効なメッセージの送信と失敗により、アプリケーション イベント ログへの例外エントリが発生しました。
BizTalk Server管理コンソールで、OnRamp.Itinerary.HowTo 受信場所を右クリックし、[無効] をクリックします。
OnRamp.Itinerary.HowTo 受信場所が無効になった後、それを右クリックし、[削除] をクリックします。 [ 受信場所の削除の確認 ] ダイアログ ボックスで、[ はい] をクリックします。
その他のリソース
詳細については、次の関連項目を参照してください。