跳至主要內容
Administrator Guide
上次更新時間 :2023-06-23
概念︰錯誤處理程式元件

概念︰錯誤處理程式元件

Studio 在
調色盤
上提供了 3 種不同的
錯誤處理常式
名稱
函數
傳送錯誤
可讓您使用標準元件和步驟處理錯誤。常見的模式是使用
「send-error」
,透過呼叫
PutIntegrationMessage
通用元件,將錯誤報告給整合事件。
log-error
將目前的錯誤記錄至輸出記錄。包含 Java 例外的錯誤訊息和堆疊追踪。用於不需要個別顯示整合事件的錯誤,但您想在發生錯誤時記錄訊息。避免記錄大型訊息,因為這類訊息會降低效能,且可能遭到截斷,進而導致診斷資料遺失。
custom-error-handler
可讓您提供使用 Java 處理錯誤的 Spring bean。當錯誤處理需要復雜的 Java 代碼時使用。
您可以將錯誤處理常式新增為中介元件的子系元素,或新增為集合中的個別元素。新增至中介元件的錯誤處理常式為本端。程序集上的錯誤處理常式是全域的。
當 Workday 在 Studio 整合中發生錯誤時,會停止正常處理並展開已處理的元件鏈,尋找要呼叫的錯誤處理程式。其一律會先嘗試在本機處理錯誤。如果沒有可用的本機錯誤處理程式,職責會轉移給全域錯誤處理程式。如果您想要精細控制發生錯誤時的處理方式,或需要報告發生錯誤時整合作業的詳細環境定義,請使用本機錯誤處理程式。將全域錯誤處理程式視為失效保護。
如果每個錯誤處理常式已觸發,但仍有錯誤未標示為已處理,Workday 會處理訊息、從例外產生錯誤,並將程序集標示為已終止。整合說明為「已完成但有錯誤」。
顯著的預設行為︰
  • 本端錯誤處理程式只會處理髮生在其上層中介元件中的錯誤。但是,他們也可以處理下游組成要素中的錯誤。若要啟用此行為,請將包含錯誤處理常式的中介元件的
    「下游錯誤處理句柄」
    屬性設為
    True
  • 呼叫錯誤處理程式時,Workday 會將錯誤標示為「已處理」。不過,如果您將錯誤處理程式的
    「重新引發錯誤」
    屬性設為
    True
    ,Workday 就不會清除錯誤。因此,會交由下一個範圍內的上游錯誤處理程式或全域錯誤處理程式處理。使用此模式可在本地報告錯誤的詳細資料,但要在程序集的更高層級處理整體失敗或完成。
  • Workday 處理錯誤時,會從呼叫的錯誤處理常式重新開始處理訊息,並繼續沿回應路徑前往發生錯誤的元素。但是,您可以指定在發生錯誤的元素處繼續處理。若要啟用此行為,請將包含錯誤處理程式的中介元件 () 的
    「發生錯誤後繼續」
    屬性設為
    復原
    。如果錯誤處理程式呼叫的代碼可更正錯誤條件,進而重試失敗的作業,請使用此行為。
您可以在
「屬性」
檢視中新增 MVEL 條件運算式,以更有效地控制錯誤處理常式。當條件運算式存在時,只有在條件運算式的計算結果皆為 True 時,Workday 才會呼叫錯誤處理常式。
您可以使用
context.setError
context.SetException
MVEL 或 Java 代碼中的方法使用時
setError
方法中,您可以配置錯誤處理程式上的條件運算式可偵測到的錯誤 ID。當您在本機處理錯誤,但想要將錯誤類型的某些詳細資料傳遞至上游錯誤處理常式以供一般處理時,可使用此技巧。
您也可以使用
路由
元件來處理錯誤︰
  • failover-strategy
    嘗試使用路由,如果發生錯誤,則會執行故障轉移路由,並將錯誤標示為「已處理」。
  • custom-strategy
    可讓您提供 Spring bean。java - 的
    RoutingStrategy
    介面,其中包含
    isHandleError
    方法使用此方法可指定由策略處理錯誤。