關鍵訊息和欄位

本節簡短描述 OrderBrokerOrderManager 協調流程所處理的主要訊息和欄位。 如需應用程式中訊息的完整清單,請參閱 商務程式管理解決方案的訊息參考

訂單訊息

OrderBroker 的訂單訊息是多部分訊息。 一部分包含路由資訊;另一部分則為訂單資訊。 定義路由訊息部分的 .NET 類別可讓它的所有欄位成為辨別欄位,如此協調流程便可存取做為訊息屬性的所有類別成員。 類別也包括路由類別中的升級欄位在內,因而能夠路由訊息。 所有升級欄位也是辨別欄位,因此能以較不複雜的註解進行設計程式和參考。

如需使用 .NET 類別定義訊息的詳細資訊,請參閱 在使用者程式碼中建構訊息

識別訂單

解決方案使用路由資訊中的三個欄位來識別訂單。 在這三個清單中,有兩個識別訂單:訂單識別碼 (OrderID) ,而客戶識別碼 (CustomerID) 。 雖然這兩個欄位可識別訂單,但是訂單可有一個以上的執行個體。 例如,客戶可能訂購新的標準網路安裝,而稍後又來電將訂單變更為訂購新的豪華網路安裝。 原始的訂單不大可能在更新訂單送達之前完成。 這便會使訂單產生兩個執行個體。

為了區分訂單的實例,解決方案會使用唯一的訂單序號 (SeqNum) 。 OrderID、 CustomerIDSeqNum 三個欄位會唯一識別訂單的實例。

最後,因為解決方案會針對 SeqNum使用增加的數位,所以解決方案可以區分更新與原始順序,因為更新具有較高的 SeqNum

注意

解決方案依賴系統建立訂單要求,以將遞增值指派給 SeqNum。 如需相關欄位的名稱,請參閱輸入 Web 服務 CSRMainForm.aspx.cs的 ASP 頁面後置程式碼,以及將要求轉換成訂單的對應, CSR_OrderRequest_To_Order.btm

狀態

OrderBrokerOrderManager及其附屬協調流程會使用訂單訊息路由部分的兩個欄位來追蹤狀態:狀態階段。 [ 狀態 ] 欄位會追蹤訂單的狀態。 下表描述 [ 狀態 ] 欄位的值。

設定之處 Description
已接受 OrderBroker 訂單可繼續送往 OrderManager。
COMPLETED OrderManager 整份訂單處理完成,沒有發生錯誤。
ERROR OrderManager 偵測到訂單中有錯誤。
ORDERMANAGER-EXCEPTION OrderManager 處理訂單時,OrderManager 中發生例外狀況。
STAGE_n_COMPLETED OrderManager 指示已完成階段 n (其中 n 為數字),沒有發生錯誤。
STARTED OrderManager 已開始處理訂單。
TERMINATED OrderManager 由於取消而停止處理訂單。

階段

OrderManager會使用路由元件中的[階段] 欄位來指出訊息的處理階段。 此欄位在篩選條件中用來判定處理訊息的附屬協調流程。 OrderManager一開始會將Stage設定為一個 (1) 。 當訂單終止或完成時, OrderManager 會將 Stage 設定為協調流程變數 Stop的值。

RequestType

OrderManager也會使用訂單訊息的RequestType欄位。 若欄位值為 TERMINATE,便會終止該訂單。 協調流程會忽略 RequestType 欄位的其他所有值,並依賴訂單序號來辨識訂單更新和重複專案。 否則, OrderBroker 會將 RequestType 欄位設定為廠商或客戶服務系統中訊息中 [狀態 ] 欄位的值。

OrderTypeCode、OrderType 和 ServiceClass

訂單的類型位於訂單訊息的 OrderTypeCode 欄位中。 OrderBroker會將其值設定為來自客戶服務系統或廠商系統之訊息中OrdTypeCode欄位中的值。 下表顯示 OrderTypeCode的可能值:

Description
NS 新的標準纜線安裝。
ND 新的豪華網路安裝。
XS 取消標準網路安裝。
XD 取消豪華網路安裝。
CS 變更標準網路安裝。
CD 變更豪華網路安裝。
UNKNOWN 未知。

稍後, 驗證 協調流程會使用商務規則引擎,將這些值轉譯成兩個不同的欄位 OrderTypeServiceClass驗證協調流程是由第一個訂單處理階段CableOrder1呼叫。

下表提供 OrderType的值:

OrderTypeCode 值 OrderType 值
NS、ND 啟動
XS、XD 取消
CS、CD CHANGE
組合無效。 無效

ServiceClass的值是對應的單一字母、標準字母的 S,或D用於擷取。

其他識別碼

解決方案也使用識別碼以供每份訂單使用。 此識別碼 RequestId在所有訂單中都必須是唯一的。 輸入 Web 服務會自動指派 GUID 給它。 透過批次輸入提交的訊息必須包含欄位的值。 欄位是順序架構中的 RequestID 。 不過, OrderBroker會使用 CSR_OrderRequest 架構來處理訂單。 此欄位在此架構中顯示為 ReqId ,而且是辨別屬性。

解決方案會使用 RequestId 來形成 BAM 追蹤系統中所使用的活動識別碼。

另請參閱

處理序管理員邏輯
透過處理序管理員的訂單流程
在使用者程式碼中建構訊息
商務程序管理解決方案的訊息參考