共用方式為


ExceptionHandler 協調流程

商務程式管理解決方案使用兩種例外狀況:系統例外狀況和應用程式例外狀況。 系統例外狀況像是資源錯誤—例如網路連線失敗。 在一段時間後,這些問題有可能會自己解決,所以解決方案會重試造成系統例外狀況的所有作業。 應用程式例外狀況產生的問題較不易自行解決,如邏輯錯誤或某種形式的不一致。 解決方案會使用 ExceptionHandlerOrch 協調流程來處理系統和應用程式錯誤。

訂單處理階段 (CableOrder1CableOrder2) 及其附屬協調流程 (ActivateAnalyzeCancelChangeCompleteValidate) 全部都使用 ExceptionHandlerOrch

注意

您可能想要閱讀本節,並在 Microsoft Visual Studio 中開啟 ExceptionHandlerOrch 協調流程。

應用程式錯誤

例外狀況處理常式會先呼叫Utilities元件中ErrorHandler物件的PostError方法來記錄錯誤。 然後,例外狀況處理常式測試錯誤為系統錯誤或應用程式錯誤。 下列擷取畫面顯示處理應用程式例外狀況的協調流程分支:

ExceptionHandler Orchestrati分支

針對應用程式錯誤,協調流程會建構描述錯誤的字串,並呼叫 ErrorHandlerOrch 協調流程。 此協調流程將錯誤傳送給作業,其中運算子決定要修復錯誤或終止作業。 若運算子修復錯誤,修復的訊息會從 ErrorHandlerOrch 協調流程傳回,並重試作業。 例外狀況處理常式會藉由在Utilities元件中呼叫Recaller物件的Invoke方法來執行這項作業。 Recaller物件會使用反映來呼叫造成錯誤的程式碼。

如果 呼叫 Invoke 成功,例外狀況處理常式就會結束。 否則,它會回傳並嘗試再次呼叫 Invoke 。 如需 有關召回者 物件的詳細資訊,請參閱 Recaller 物件

系統錯誤

下圖顯示 ExceptionHandler 協調流程的系統錯誤分支:

ExceptionHandler 協調流程錯誤

如果是系統錯誤,例外狀況處理常式會先呼叫 CheckInterrupt 協調流程,然後等候一分鐘。 等候的時間可先清除暫時短暫的錯誤 (如網路連線問題),再進行重試。 在進行遠端呼叫時,常有可能會發生網路問題。

注意

在可中斷的設計中,一般的規則是在任何等待時間期間或之後立即測試是否有中斷的情形發生。

等候之後,處理常式會使用Recaller物件的Invoke方法來執行原始程式碼。 若呼叫成功,就會結束處理常式。 否則,處理常式會再試著執行兩次原始程式碼。 如果這三次嘗試都失敗,處理常式會建構錯誤字串,並呼叫 ErrorHandlerOrch 協調流程。

如果處理系統例外狀況時造成例外狀況,例外狀況區塊將會取得此例外狀況:

系統錯誤分支狀況處理常式

例外狀況處理常式會測試例外狀況的類型;如果是系統例外狀況,就遞減重試計數器;否則,設定旗標以表示其為應用程式例外狀況。

ErrorHandlerOrch 協調流程

下圖顯示 ErrorHandlerOrch 協調流程的第一個部分:

錯誤處理常式協調流程,第一個部分

ErrorHandlerOrch協調流程會先測試IsBadOrder參數,以查看錯誤是否為錯誤順序, (IsBadOrder為 true) 或其他錯誤。 若錯誤是錯誤的訂單,協調流程會從原始的訂單傳回位址以指定訊息的目的地,然後將訊息傳回到客戶服務系統。 若錯誤不是錯誤的訂單,協調流程會建立訂單錯誤訊息,並將它傳送到作業系統。

發生上述其中一種錯誤後,協調流程會接聽回應訊息或中斷訊息:

錯誤處理常式第二部分

若協調流程收到回應,會將回應傳回呼叫者。 如果協調流程收到中斷訊息,它會將訊息傳遞至中斷埠,並擲回自訂 的 InterruptException

如需解決方案如何使用和處理中斷的詳細資訊,請參閱 商務程式管理解決方案中的中斷處理

另請參閱

商務程序管理解決方案中的例外狀況處理
自訂例外狀況
中斷商務程序管理解決方案中的處理
Recaller 物件