共用方式為


錯誤處理 (BizTalk Server Samples 資料夾)

此範例的目的是要建立「根據訊息內容決定路由」(CBR) 應用程式的錯誤處理功能。

必要條件

若要執行範例,建議您安裝 Microsoft Office InfoPath 2010 或更新版本。 若不使用 InfoPath,也可以執行範例,但是在此情況下,則無法透過 HTTP 配接器檢視經費支出報表或提交經費支出報表。

此範例的用途

此範例會實作經費支出報表處理系統的一部分。 具體來說,本範例執行下列工作:

  1. 定義經費支出報表結構描述,其中包含經費支出報表和內含部門名稱的個別傳送者相關資訊。

  2. 提供透過目錄或使用 InfoPath 的 Web 服務提交經費支出報表的功能。

  3. 升級訊息檔中 的 DepartmentcorrelationID 屬性,使其可用於埠篩選以控制路由。

  4. 將屬於行銷部門的經費支出報表路由傳送至目錄中的檔案,模擬部門的後端系統傳遞作業。

  5. 針對非行銷部門的經費支出報表,產生失敗的訊息。 失敗的訊息包含錯誤資訊,包括錯誤碼和錯誤描述。

  6. 將失敗的訊息路由傳送至收件人 (商務使用者或應用程式操作人員) 來更正並重新提交。

  7. 根據上述部門,路由傳送重新提交的經費支出報表。

    這項工作的大部分是透過 BizTalk 協調流程排程所完成。

此範例的設計方式和原因

其設計依賴 BizTalk Server 中的預設傳送和接收 XML 管線、屬性升級、訂閱篩選器和協調流程排程來路由傳送訊息。 下表列出設計元素及其理由。

設計元素 已選取的原因
預設 XML 接收管線 - XMLReceive 管線支援屬性升級;PassThruReceive 管線沒有。
- 輸入訊息已經是 XML 格式,不需要處理超過基本反組解碼和合作物件解析。
失敗訊息的路由 - 接收埠暫停失敗的訊息,並預設產生負面通知。 啟用路由時,BizTalk Server 會嘗試將處理失敗的訊息路由傳送至訂閱應用程式 (例如其他接收埠或協調流程排程)。
屬性升級 - BizTalk Server取決於要執行路由的屬性欄位。 辨別欄位可用於協調流程,不能用於路由。
訂閱篩選器 - 訂用帳戶篩選準則會根據屬性欄位擷取符合一或多個準則的訊息來執行路由。
BizTalk 協調流程排程 - 提供將資訊新增至失敗訊息的機會。
- 允許將失敗訊息路由傳送至專用位置,以進行人為介入。
- 處理重新提交的費用報告。
XMLTransmit - 執行傳出 XML 訊息的基本元件。 PassThruTransmit 管線不會提供其他支援。

可在何處找到此範例

此範例位於 <Samples Path> \Messaging\ErrorHandling\。

下表包含此範例的檔案清單。

檔案 描述
Cleanup.bat 用來解除部署組件,以及將它從全域組件快取中移除。

移除傳送埠和接收埠。

視需要移除 Internet Information Services (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
此範例的屬性結構描述。

如何使用此範例

以此範例做為起點,可讓您建立專屬錯誤處理程序。

建置和初始化此範例

若要建置及初始化「編輯」範例

  1. 在命令視窗中,瀏覽至下列資料夾:

    <Samples Path>\Messaging\ErrorHandling

  2. 執行 Setup.bat執行下列動作:

    • 建立三個資料夾: ExpenseReportInExpenseReportOutResubmittedReportIn 在下列路徑下:

      <Samples Path>\Messaging\ErrorHandling

    • 將 InfoPath 表單 Expense Report.xsnExpense Report – Resubmit.xsn 複製到 C:\Temp\InfoPathForms資料夾中。

    • 編譯此範例的 Visual Studio 專案。

    • 建立名為 ExpenseReports 的虛擬目錄。

    • 建立稱為 「錯誤處理範例 」的新 BizTalk 應用程式,並將範例元件部署到其中。

    • 建立並繫結 BizTalk Server 接收位置,以及傳送和接收埠。

    • 登錄和啟動協調流程,啟用接收位置,並啟動傳送埠。

      如果您選擇不執行 Setup.bat 就開啟和建置此範例中的專案,則必須先使用 .NET Framework Strong Name Utility (sn.exe) 建立強式名稱金鑰組。 您可以使用此金鑰組簽署範例組件。

  3. 在嘗試執行此範例之前,請確認 BizTalk Server 沒有在建置或初始化的程序中報告任何錯誤。

    注意

    若要復原 Setup.bat 所進行的變更,請執行 Cleanup.bat。 您必須先執行 Cleanup.bat 才能再度執行 Setup.bat。

  4. 如果您使用 Internet Information Services (IIS) 7.0,您必須執行其他設定步驟,以調整對應至範例所使用之BizTalk Server HTTP 接收位置的虛擬目錄設定。 請執行下列動作來設定 IIS:

    1. 使用 [IIS 7.0 管理員],建立「BizTalk 外掛式主控件使用者」群組的新應用程式集區。

    2. 將應用程式集區設定為以「BizTalk 外掛式主控件」使用者的身分執行 (如果您已經為其他 BizTalk Server HTTP 接收位置設定應用程式集區,可以略過這個步驟)。

    3. 設定虛擬目錄 ExpenseReport ,以使用在上一個步驟中建立的 HTTP 接收應用程式集區。

      如果您還沒有 BTSHTTPReceive.dll ISAPI 延伸模組的網頁伺服器延伸,請建立並將它的狀態設定為「允許」來啟用它。 您可以在 IIS 7.0 中使用 IIS 管理主控台 (直接在 [ 系統 管理工具] 底下或透過 [電腦管理主控台]) 來執行此動作,如下所示:

    4. 展開 [Internet Information Services Manager ] 樹狀結構。

    5. 按一下 [Web 服務延伸模組 ] 資料夾。

    6. 在管理主控台的右窗格中,按一下 [ 新增 Web 服務延伸模組]。

    7. 在 [ 新增 Web 服務延伸模組 ] 對話方塊中,按一下 [ 新增]。

    8. 在 [新增檔案] 對話方塊中,按一下 [流覽] 以選取檔案 <BizTalkInstallPath>\HttpReceive\BTSHTTPReceive.dll,然後按一下 [確定]。

    9. 將虛擬目錄ExpenseReport設定為使用本機路徑 \Program Files (x86) \Microsoft BizTalk Server < VERSION > HTTPReceive

      如需詳細資訊,請參閱 如何設定 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>的新檔案.xml放入ExpenseReportOut資料夾中。

    開啟這個檔案,觀察這是上一個步驟中所提交,但是開頭包含錯誤資訊的經費支出報表。

  4. 將錯誤的部門值取代為 「Marketing」,然後按一下 InfoPath 視窗左上角的 [ 提交 ]。

    -或-

    將此檔案複製並貼到 ResubmittedReportIn 資料夾中。

  5. 您應該會看到 ExpenseReportOut 資料夾中建立的新檔案。 這個檔案是更正後重新提交至伺服器的經費支出報表。

另請參閱

使用失敗訊息路由
傳訊 (BizTalk Server Samples 資料夾)