EnvelopeProcessing サンプルでは、BizTalk Server パイプラインでメッセージとメッセージ エンベロープを処理する方法を示します。 さらに、フラット ファイル メッセージを XML メッセージに処理する方法を示します。
このサンプルの役割
このサンプルでは、EnvInput フォルダーを受信場所として構成します。 サンプル ファイル EnvelopeProcessing_in.txtなどのファイルをこのフォルダーに配置すると、BizTalk Server は次の手順を使用してこのファイル内のメッセージを処理します。
BizTalk Server は、受信場所フォルダー EnvInput からメッセージ ファイルを取得します。
受信パイプラインでは、フラット ファイル逆アセンブラー パイプライン コンポーネントは、フラット ファイル メッセージからヘッダーとトレーラーを削除し、それらを個別のメッセージに解析します。
MessageBox データベースでは、メッセージはサブスクリプション フィルターを使用して送信ポートにルーティングされます。
送信ポートの送信パイプラインでは、XML アセンブラー パイプライン コンポーネントはメッセージを XML エンベロープでラップし、送信アダプター フォルダー EnvOutput に配置します。
このサンプルの設計方法と理由
このサンプルの設計では、次の 2 つの基本的な要件に対応する必要がありました。
1 つ以上の発注書を含むフラット ファイル メッセージを受信して処理します。
1 つの発注書と送信者の情報を含む 1 つの XML メッセージを、バックエンド処理システムによる受け取り用のディレクトリに送信します。
これらの要件を満たすために、フラット ファイル/XML スキーマとカスタム パイプラインの組み合わせが使用されました。 これらの設計要素とその他の設計要素を次の表にまとめます。
デザイン要素 | 選択された理由 |
---|---|
カスタム受信パイプライン | - フラット ファイル逆アセンブラーとフラット ファイル スキーマを使用して、受信発注書メッセージを変換します。 |
メッセージ ヘッダー、本文、およびトレーラーのフラット ファイル スキーマ | - XML スキーマと同じレコードとフィールドの特性 (構造体を含む) をすべて定義し、フラット ファイル インスタンス メッセージを同等の XML インスタンス メッセージ (またはその逆) に変換するために必要なすべてのフラット ファイル特性を定義するためのメカニズムを提供します。 - ヘッダー、本文、およびトレーラー スキーマは、本文を個別のチャンクに分割して処理するために使用されます。 |
エンベロープ スキーマ | - ヘッダーからの情報で個々の発注書をラップするために使用されます。 |
サブスクリプション フィルター | - サブスクリプション フィルターは、プロパティ フィールドに基づいて 1 つ以上の条件を満たすメッセージをキャプチャすることによって、実際のルーティングを実行します。 |
カスタム送信パイプライン | - XML アセンブラーとエンベロープ スキーマと本文スキーマの組み合わせを使用して、インスタンス メッセージを XML 形式に変換します。 |
このサンプルの設計には、次の考慮事項が適用されます。
フラット ファイル スキーマ (PO.xsd) には、発注書フラット ファイルの構造を記述する拡張注釈が含まれています。 これらのファイルは手動で作成できますが、多くはフラット ファイル ウィザードを使用して生成できます。
発注書 (PO.xsd) フラットファイルスキーマでは、elementFormDefault 属性の値として Unqualified を使用します。 これにより正しい結果が生成されますが、予期せぬ追加の xmlns の指定があります。 この問題を回避するには、Qualified の elementFormDefault を使用します。
ヘッダーとトレーラーのフラット ファイル スキーマは、メッセージから見出しと末尾のデータを分離するために使用されます。 フラット ファイル逆アセンブラー ヘッダー、ドキュメント、およびトレーラー スキーマのプロパティは、それぞれヘッダー、発注書、およびトレーラー スキーマに設定されました。
XML エンベロープ スキーマは、ヘッダーと発注書の要素を組み合わせて、1 つの XML メッセージを生成します。 ヘッダー スキーマは、source フィールドを BTS.bts_system_properties 名前空間の SourceParty フィールドに昇格させます。エンベロープ スキーマによってこの同じ値が昇格され、送信メッセージに降格されます。
このサンプルを検索する場所
<Samples Path>
\Pipelines\AssemblerDisassembler\EnvelopeProcessing\
次の表に、このサンプルのファイルとその目的を示します。
ファイル(複数可) | 説明 |
---|---|
Cleanup.bat | アセンブリの展開を解除し、グローバル アセンブリ キャッシュからアセンブリを削除するために使用します。 送受信ポートを削除します。 必要に応じて、Microsoft インターネット インフォメーション サービス (IIS) 仮想ディレクトリを削除します。 |
EnvelopeProcessing.btproj、EnvelopeProcessing.sln | このサンプルのプロジェクト ファイルとソリューション ファイル。 |
EnvelopeProcessing_in.txt | サンプル入力ファイル。 |
Header.xsd、PO.xsd、Trailer.xsd | フラットファイルのヘッダー、本文、トレーラーのそれぞれに対するスキーマ。 |
XmlEnvelope.xsd | 送信 XML エンベロープのスキーマ。 |
EnvReceivePipeline.btp、EnvSendPipeline.btp | BizTalk Server は、フラット ファイル逆アセンブラーおよび XML アセンブラー パイプライン コンポーネントを含むパイプライン ファイルをそれぞれ受信および送信します。 |
EnvelopeProcessingBinding.xml | ポート バインドなどの自動セットアップに使用されます。 |
Setup.bat | このサンプルをビルドして初期化するために使用します。 |
このサンプルを使用する方法
このサンプルは、独自のフラット ファイル処理ソリューションの基礎として使用します。 このサンプルで使用される設計要素の多くは、独自の要件に合わせて拡張できます。 いくつかの例を次に示します。
XML バージョンに加えて、各発注書のフラット ファイル バージョンを記述するようにサンプルを強化します。 これを行うには、新しいカスタム送信パイプラインを作成し、フラット ファイル アセンブラーを使用します。 フラット ファイル アセンブラーで、フラット ファイル ヘッダー、発注書、およびトレーラー スキーマを指定します。 送信ポートで使用すると、ヘッダー/トレーラー情報を含む個々の発注書が生成されます。
発注書の詳細情報を使用して封筒を拡張します。 送信メッセージに追加情報を書き込むには、簡易昇格を使用して "出荷先" 名またはその他のフィールドを昇格し、封筒にフィールドを追加してから、封筒フィールドを同じフィールドに昇格します。 メッセージがアセンブラーを介して処理されると、昇格されたプロパティが降格され、送信メッセージにコピーされます。
このサンプルのビルドと初期化
EnvelopeProcessing サンプルをビルドして初期化するには
コマンド ウィンドウで、次のフォルダーに移動します。
<サンプルパス>\パイプライン\アセンブラー・ディスアセンブラー\封筒処理
次のアクションを実行するファイル Setup.batを実行します。
このサンプルの入力 (EnvInput) フォルダーと出力フォルダー (EnvOutput) をフォルダーに作成します。
<サンプルパス>\Pipelines\AssemblerDisassembler\EnvelopeProcessing\
このサンプルの Visual Studio プロジェクトをコンパイルしてデプロイします。
BizTalk Server の受信場所と送受信ポートを作成してバインドします。
このサンプルでは、ポートを作成してバインドするときに、次の警告が表示されます。
Warning: Receive handler not specified for receive ___location "EnvelopeProcessing_RL"; updating with first receive handler with matching transport type. Warning: Host not specified for orchestration "EnvelopeProcessing"; updating with first available host.
これらの警告は無視しても問題ありません。 (ユーザー インストールでの名前付けの違いに対応するため、ホスト名と受信ハンドラーはバインド ファイルから省略されています)。
受信場所を有効にし、送信ポートを開始します。
注
このサンプルを実行する前に、BizTalk Server がビルドおよび初期化プロセス中にエラーを報告していないことを確認する必要があります。
注
Setup.batを実行せずにこのサンプルでプロジェクトを開いてビルドする場合は、最初に .NET Framework Strong Name ユーティリティ (sn.exe) を使用して厳密な名前キー ペアを作成する必要があります。 このキー ペアを使用して、結果のアセンブリに署名します。
注
Setup.batによって行われた変更を元に戻すには、Cleanup.bat実行します。 2 回目 Setup.bat 実行する前に、Cleanup.bat を実行する必要があります。
このサンプルの実行
EnvelopeProcessing サンプルを実行するには
ファイル EnvelopeProcessing_in.txt のコピーを EnvInput フォルダーに配置します。
EnvOutput フォルダーに作成された 3 つの .xml ファイルを確認します。 これらの .xml ファイルの名前は、メッセージ ID GUID に基づいています。 入力ファイルから抽出され、封筒にラップされたメッセージが含まれます。
このサンプルで使用するクラスまたはメソッド
構成スクリプト Setup.bat および Cleanup.bat は、次の管理用 Windows Management Instrumentation (WMI) スクリプトに依存します。
送信ポート\StartSendPort.vbs を開始する
受信場所の有効化\EnableRecLoc
送信ポートの削除\RemoveSendPort
セットアップおよびクリーンアップ バッチ ファイルでは、次のように BTSTask が使用されます。
バインド ファイルを適用し、アプリケーション、ポート、およびバインドを作成するための BTSTask ImportBindings
FLATFileReceiveApplication を削除する BTSTask RemoveApp
こちらもご覧ください
Pipelines-AssemblerDisassembler (BizTalk Server Samples フォルダー)