共用方式為


在 OrderBroker 協調流程中處理

本節說明 OrderBroker 協調流程如何取得訂單,並為進程管理員做好準備。 這節的開始會討論協調流程的一般工作。 下一部分則會討論協調流程處理訊息的方法。 然後會著重在協調流程如何使用不可部分完成交易來改進效能。

注意

由於 OrderBroker 程式碼的長度長度,您可能會想要閱讀本節,並在 Microsoft® Visual Studio 中開啟協調流程。

為什麼要使用 Order Broker?

OrderBroker協調流程的目的是預先處理訂單,並將其路由至正確的進程管理員。 這裡的預先處理包含為歷程資料庫及服務系統產生資訊訊息,並確認訂單的接收。 OrderBroker也會從客戶服務要求建立一般訂單訊息。 這樣的訂單標準化可讓商務程序元件,以一般的方式來使用訂單。

訂單訊息是一種多部分訊息,其中的路由資訊是與訂單資訊分開的。 路由資訊也是一般性的資訊,設計來讓訂單管理員使用。 這樣,便可輕易的擴充解決方案。 如需多部分訊息的相關資訊,請參閱 如何使用多部分訊息類型

獨立出仲介的功能也可讓您將仲介功能移到其他 BizTalk 群組中。 因為 OrderBroker 會發佈至 MessageBox 資料庫,也就是說,它是直接系結的,也可讓您更輕鬆地將訊息代理程式放在另一個群組中--您可以移動訊息代理程式,而不需要變更協調流程。 如需將 OrderBroker 放在另一個群組的詳細資訊,請參閱 OrderBroker 與 OrderManager 之間的通訊

注意

OrderBroker協調流程,因為它只有一個OrderManager要與其通訊,所以只會將常數位符串指派給訂單管理員訊息中的OrderMgrType欄位。 一般來說,在具有多個訂單管理員的應用程式中,應用程式會使用商務規則引擎來判斷這個欄位及其他訂單路由的值。 如需商務規則引擎的詳細資訊,請參閱 建立和使用商務規則

訂單處理

OrderBroker協調流程會從接圖形內的兩個Receive圖形開始。 一個 接收 圖形會從客戶支援系統取得訊息;另一個來自廠商系統的訊息。 來自任一來源的訊息都有相同的結構描述。

協調流程會從訊息擷取傳回位址,並用它來設定動態埠 CSRPort的位址。 協調流程會使用這個連接埠來傳送確認及錯誤訊息。

OrderBroker協調流程中的後續步驟會建立歷程記錄訊息、服務訊息、確認訊息,以及要傳送至OrderManager協調流程的順序訊息。 協調流程會使用 InsertOrderBody 公用程式函式,將訂單訊息新增至歷程記錄訊息。

注意

在某些狀況下,解決方案可能會產生傳送但沒有用的訊息。 Order Broker 協調流程會使用傳送埠將資訊插入歷程資料庫。 這個傳送埠會使用傳遞通知。 組態會將傳送埠對應至包含兩個埠的傳送埠群組:一個埠用於測試組態 (HistoryInsert-Test-SP) ,一個用於一般設定 (HistoryInsert-SP) 。 若您讓群組中兩個連接埠同時執行,解決方案會在兩個連接埠上都傳送訊息。 因此它會要求兩個傳遞通知,但只會處理其中一個。

若要避免這種情況,請將測試埠取消列出 (HistoryInsert-Test-SP) ,或停止應用程式的測試版本 BTSScn.BPM.OrderBrokerApp.Test。 如需傳遞通知的詳細資訊,請參閱 使用通知

建構要傳送至 OrderManager 協調流程的訊息時, OrderBroker 協調流程會建立包含兩個部分的多部分訊息。 一個部分包含路由資訊;另一個部分包含訂單本身。 Message OrderMgrMsg.Routing的路由部分會使用SchemaClasses元件中 C# 類別所定義的架構。 訊息代理程式會將訊息的順序部分視為泛型或與類型無關的 XML 檔 (System.Xml。XmlDocument) ,並將它指派給 OrderMgrMsg.Order

路由資訊中有兩個欄位對訂單管理員、 OrderMgrMsg.Routing.OrderMgrTypeOrderMgrMsg.Routing.Status特別重要。 訊息代理程式會將 OrderMgrType 設定為處理訂單的訂單管理員類型。 在解決方案中,只有一個訂單管理員,而欄位則設定為 CABLEORDER。 訊息代理程式也會將 [ 狀態 ] 欄位設定為 ACCEPTED。 這個值會告訴訂單管理員,該訊息為新的訂單。 方案 OrderManager 協調流程中的訂單管理員會使用 Receive 圖形,篩選順序類型等於 CABLEORDER 且狀態等於 ACCEPTED 的 接收 圖形。

OrderBroker協調流程中的其餘步驟會將不同的訊息傳送至適當的埠。

使用巢狀範圍改善效能

OrderBroker協調流程的其中一個明顯事項是其使用巢狀範圍。 這裡的巢狀範圍可限制持續點,因此可改善效能。

協調流程引擎會在稱為持續點的執行點間,定期地儲存整個協調流程的狀態。 協調流程引擎會自動將數個協調流程圖形視為持續性點,包括 傳送 圖形。 如需持續性點的清單及其詳細資訊,請參閱 持續性和協調流程引擎

使用五個 傳送 圖形時, OrderBroker 協調流程應該有五個持續性點。 不過,當您將 傳送 圖形分組在不可部分完成的交易範圍內時,引擎會辨識它只需要一個範圍的持續性點。 由於OrderBroker協調流程中的四個傳送圖形不是例外狀況處理常式的一部分,而且傳送之後不需要執行任何動作,所以它們可以進入不可部分完成的交易範圍。 這樣可減少持續點的數目。 如需不可部分完成交易的詳細資訊,請參閱 不可部分完成的交易

此外,若交易會在同時結束,協調流程引擎會使用單一個持續點來進行巢狀交易。 因此, OrderBroker 協調流程巢狀交易的方式會進一步減少持續性點:協調流程因為使用 範圍 圖形而具有單一持續性點。

提示

您可將協調流程中持續點的數目降到最低,來改進效能。 您可以將不可部分完成交易中的 傳送 圖形分組,為所有 傳送 圖形產生單一持續性點。 在同時結束巢狀交易會產生交易的單一個持續點。

不可部分完成交易範圍無法擁有例外狀況處理常式。 因此,協調流程會將不可部分完成範圍巢狀嵌入長時間執行的交易內。 此外部交易可以有例外狀況處理常式,而且此處理程式會處理 來自傳送 圖形的例外狀況。

提示

將不可部分完成交易巢狀嵌入長時間執行的交易中,是一種允許例外狀況處理的常見模式。

另請參閱

商務程式管理解決方案中的處理
處理序管理員邏輯
中斷商務程序管理解決方案中的處理
ExceptionHandler 協調流程