次の方法で共有


エラー処理 (BizTalk Server サンプル フォルダー)

このサンプルの目的は、コンテンツ ベースのルーティング (CBR) アプリケーション用のエラー処理機能を構築することです。

前提条件

サンプルを実行するには、Microsoft Office InfoPath 2010 以降がインストールされていることをお勧めします。 InfoPath を使用せずにサンプルを実行することもできますが、その場合、経費報告書の内容および HTTP アダプターを経由した経費報告書の送信は確認できません。

このサンプルの処理

このサンプルは、経費報告書処理システムの一部を実装します。 具体的には、このサンプルは以下の処理を行います。

  1. 経費報告書に関する情報を含む経費報告書のスキーマおよび部門名を含む個々の送信者を定義します。

  2. ディレクトリを経由した、または InfoPath を使用する Web サービスを経由した経費報告書の送信を可能にします。

  3. メッセージ ドキュメントの Department プロパティと correlationID プロパティを昇格させ、ポート フィルターでルーティングを制御できるようにします。

  4. マーケティング部門に属する経費報告書をディレクトリ内のファイルにルーティングし、この部門のバックエンド システムへの配信をシミュレートします。

  5. マーケティング以外の部門に属する経費報告書について失敗したメッセージを生成します。 失敗したメッセージには、エラー コードやエラーの説明など、エラーに関する情報が含まれます。

  6. 失敗したメッセージを、手動で修正および再送信されるように、受信者 (ビジネス ユーザーまたはアプリケーション オペレーター) にルーティングします。

  7. 再送信された経費報告書を前述の部門に基づいてルーティングします。

    この作業の多くは BizTalk のオーケストレーション スケジュールによって行われます。

このサンプルのデザイン方法とその理由

このデザインでは、BizTalk Server 内の既定の送受信 XML パイプライン、プロパティの昇格、サブスクリプション フィルタ、およびオーケストレーション スケジュールを使用して、メッセージがルーティングされます。 デザイン要素とその選択理由を次の表に示します。

デザイン要素 選択理由
既定の XML 受信パイプライン - XMLReceive パイプラインでは、プロパティの昇格がサポートされています。PassThruReceive パイプラインでは実行されません。
- 受信メッセージは既に XML 形式であり、基本的な逆アセンブルとパーティ解決以外の処理は必要ありません。
失敗したメッセージのルーティング - 受信ポートは失敗したメッセージを中断し、既定で否定受信確認を生成します。 ルーティングが有効の場合は、処理に失敗したメッセージは、別の受信ポートやオーケストレーション スケジュールなど、メッセージをサブスクライブするアプリケーションにルーティングされます。
プロパティの昇格 - BizTalk Serverは、ルーティングを実行するプロパティ フィールドによって異なります。 識別フィールドはオーケストレーションによって使用されるため、ルーティングには使用できません。
サブスクリプション フィルター - サブスクリプション フィルターは、プロパティ フィールドに基づいて 1 つ以上の条件を満たすメッセージをキャプチャすることによってルーティングを実行します。
BizTalk オーケストレーション スケジュール - 失敗したメッセージに情報を追加する機会を提供します。
- 失敗したメッセージを人間の介入のために専用の場所にルーティングできるようにします。
- 再送信された経費報告書を処理します。
XMLTransmit - 送信 XML メッセージの基本的なアセンブリを実行します。 PassThruTransmit パイプラインでは追加のサポートは行われません。

このサンプルの場所

このサンプルは\Messaging\ErrorHandling\ にあります <Samples Path>

次の表に、このサンプルのファイルの一覧を示します。

ファイル 説明
Cleanup.bat アセンブリの展開を解除し、グローバル アセンブリ キャッシュからアセンブリを削除するために使用されます。

送信ポートと受信ポートが削除されます。

必要に応じて、インターネット インフォメーション サービス (IIS) の仮想ディレクトリが削除されます。
ErrorHandling.sln サンプルの Visual Studio ソリューション ファイルです。
ErrorHandlingBinding.xml サンプルのバインド ファイルです。
Setup.bat このサンプルをビルドおよび初期化するために使用されます。
Expense Report – John Doe.xml 経費報告書の InfoPath ドキュメント例です。
Invalid Expense Report – John Doe.xml 無効なデータを含む経費報告書の InfoPath ドキュメント例です。
ErrorHandler フォルダー内 :

ErrorHandler.btproj
オーケストレーションの BizTalk プロジェクトです。
ErrorHandler フォルダー内 :

ResubmitLogic.odx
失敗したメッセージをサブスクライブし、手動で修正できるように受信者に送信し、修正されたメッセージをルーティングするためにサーバーに再送信するオーケストレーションです。
ErrorHandler フォルダー内 :

SuspendMessage.odx
エラー処理オーケストレーション内で処理できない中断メッセージに使用するオーケストレーションです。
InfoPathForms フォルダー内:

Expense Report.xsn

Expense Report - Resubmit.xsn
経費報告書の InfoPath フォームと、失敗したメッセージの表示と再送信に使用されるフォームです。
PipelinesAndSchemas フォルダー内:

ExpenseReportSchema.xsd
経費報告ドキュメントの XML スキーマです。
PipelinesAndSchemas フォルダー内:

PipelinesAndSchemas.btproj
サンプルの BizTalk プロジェクトです。
PipelinesAndSchemas フォルダー内:

PropertySchema.xsd
サンプルのプロパティ スキーマです。

このサンプルの使用方法

このサンプルは、独自のエラー処理手順を作成するための開始点として使用できます。

このサンプルのビルドと初期化

Compose サンプルをビルドして初期化するには

  1. コマンド ウィンドウで、次のフォルダーに移動します。

    <Samples Path>\Messaging\ErrorHandling

  2. Setup.batを実行します。これにより、次のアクションが実行されます。

    • 次のパスの下に、 ExpenseReportInExpenseReportOutResubmittedReportIn の 3 つのフォルダーを作成します。

      <Samples Path>\Messaging\ErrorHandling

    • InfoPath フォームの Expense Report.xsnExpense Report – Resubmit.xsnC:\Temp\InfoPathForms フォルダーにコピーして発行します。

    • このサンプル用に Visual Studio プロジェクトをコンパイルします。

    • ExpenseReports という名前の仮想ディレクトリを作成します。

    • エラー処理サンプルと呼ばれる新しい BizTalk アプリケーションを作成し、その中にサンプル アセンブリを展開します。

    • BizTalk Server の受信場所、送信ポート、および受信ポートを作成してバインドします。

    • オーケストレーションを参加させて開始し、受信場所を有効にしてから、送信ポートを開始します。

      Setup.bat を実行せずに、このサンプルのプロジェクトを開いてビルドする場合は、最初に .NET Framework の厳密名ユーティリティ (sn.exe) を使用して、厳密な名前のキー ペアを作成する必要があります。 このキー ペアは、サンプル アセンブリの署名に使用します。

  3. このサンプルを実行する前に、BizTalk がビルド プロセス中または初期化プロセス中にエラーを報告していないことを確認してください。

    Note

    Setup.bat によって行われた変更を元に戻すには、Cleanup.bat を実行します。 Setup.bat を 2 回目に実行する場合は、その前に Cleanup.bat を実行してください。

  4. インターネット インフォメーション サービス (IIS) 7.0 を使用している場合は、追加の構成手順を実行して、サンプルで使用されるBizTalk Server HTTP 受信場所に対応する仮想ディレクトリの設定を調整する必要があります。 IIS を構成するには、次の手順を実行します。

    1. IIS 7.0 マネージャーを使用して、BizTalk 分離ホスト ユーザー グループ用の新しいアプリケーション プールを作成します。

    2. BizTalk Server 分離ホスト ユーザーの ID で実行するようにアプリケーション プールを構成します (他の BizTalk Server HTTP 受信場所用に構成されているアプリケーション プールがある場合は、この手順を省略できます)。

    3. 前の手順で作成した HTTP 受信アプリケーション プールを使用するように仮想ディレクトリ ExpenseReport を構成します。

      BTSHTTPReceive.dll ISAPI 拡張機能用の Web サーバー拡張をまだ作成していない場合は、ここで作成し、そのステータスを [許可] に設定して有効にします。 IIS 7.0 では、IIS 管理コンソール ( 管理ツール の直下またはコンピューター管理コンソール) を使用して、次のように実行できます。

    4. [インターネット インフォメーション サービス マネージャー] ツリーを展開します。

    5. [ Web サービス拡張機能 ] フォルダーをクリックします。

    6. 管理コンソールの右側のウィンドウで、[新しい Web サービス拡張機能の追加] をクリックします。

    7. [ 新しい Web サービス拡張機能 ] ダイアログ ボックスで、[ 追加] をクリックします。

    8. [ファイルの追加] ダイアログ ボックスで、[参照] をクリックして\HttpReceive\BTSHTTPReceive.dllファイル<BizTalkInstallPath>を選択し、[OK] をクリックします

    9. ローカル パス \Program Files (x86)\Microsoft BizTalk Server <VERSION>HTTPReceive を使用するように仮想ディレクトリ ExpenseReport を構成する

      詳細については、「 HTTP 受信場所用に IIS を構成する方法」を参照してください。

サンプルの実行

正しい経費報告書でサンプルを実行する前に、次の手順に従って、"エラーなし" のケース サンプルが正しく機能することを確認します。

"エラーなし" のケース サンプルが正しく機能することを確認するには

  1. InfoPath フォーム Expense Report - John Doe.xmlを開きます。 フォーム内の [部署 ] フィールドを確認します。 このフィールドは "Marketing" に設定されている必要があります。

  2. InfoPath ウィンドウの左上隅にある [ 送信 ] をクリックするか、[ 経費報告書の再送信] をクリックします。 経費報告書が正常に送信されたことを示す確認ウィンドウが表示されるまで待ちます。

    \- または -

    このファイルをコピーして ExpenseReportIn フォルダーに貼り付けます。

  3. ExpenseReportOut フォルダーに新しいファイルがドロップされていることがわかります。 このファイルは、前の手順で送信された経費報告書レポート フォームと同じです。

    "エラーなし" ケースを確認した後、次の手順に従って、正しい経費報告書のサンプルを実行し、エラー処理機能をトリガーします。

エラー処理をトリガーするには

  1. InfoPath フォーム [無効な経費報告書 - John Doe.xml] を開きます。 フォーム内の [部署 ] フィールドを確認します。 このフィールドは、無効な値に設定されています。

  2. InfoPath ウィンドウの左上隅にある [ 送信] をクリックします。 経費報告書が正常に送信されたことを示す確認ウィンドウが表示されるまで待ちます。

    \- または -

    このファイルをコピーして ExpenseReportIn フォルダーに貼り付けます。

  3. ErrorReport_date_time> という名前の<新しいファイルが ExpenseReportOut フォルダーにドロップ.xml表示されます。

    このファイルを開き、前の手順で送信された経費報告書の先頭にエラー情報が追加されていることを確認します。

  4. 誤った部署の値を "Marketing" に置き換え、InfoPath ウィンドウの左上隅にある [ 送信 ] をクリックします。

    \- または -

    このファイルをコピーして ResubmittedReportIn フォルダーに貼り付けます。

  5. ExpenseReportOut フォルダーに作成された新しいファイルが表示されます。 このファイルが、サーバーに再送信された修正済みの費用報告書です。

参照

失敗したメッセージのルーティングの使用
Messaging (BizTalk Server Samples フォルダー)