工作錯誤處理策略

工作錯誤處理策略會指定工作因暫時性錯誤而失敗時,系統應採取的動作。

設定錯誤處理策略

如要為工作設定錯誤處理策略,請按照下列步驟操作:

  1. 在整合服務編輯器中,按一下現有工作。系統會顯示工作設定窗格。
  2. 在工作設定窗格中,展開「錯誤處理」部分。下圖顯示「Error handling」(錯誤處理) 區段:

    錯誤處理策略 錯誤處理策略

    在「錯誤處理」部分,按照下列步驟操作:

    1. 如要新增失敗政策,請按一下「+ 新增失敗政策」。如果設定多項條件式失敗政策,系統會依序檢查並比對這些政策。
      1. 在「重試策略」欄位中,選取要使用的錯誤處理策略。如需策略清單,請參閱「重試策略」。
      2. 在「Retry condition」(重試條件) 欄位中,輸入必須與錯誤相符的條件,才能執行這項錯誤策略。舉例來說,如果是呼叫 REST 端點工作,如要讓錯誤代碼與 404 相符時執行錯誤策略,請輸入下列內容:
        $`ErrorInfo.code`$ = 404
        如要瞭解如何新增這些條件,請參閱「重試條件」。
    2. 在「預設錯誤政策」部分,新增在沒有相符的條件式失敗政策時必須套用的預設政策。預設失敗政策為選用項目。
    3. 在「Error catcher」部分,為整合作業新增錯誤擷取器

如要瞭解錯誤代碼和錯誤處理方式,請參閱「錯誤處理

重試策略

下表說明您可以對工作採取的不同錯誤處理策略:

策略類型 說明
嚴重 停止執行整個整合作業,並將執行狀態標示為「失敗」
略過 忽略工作失敗情形。整合會繼續執行後續工作,並假設失敗的工作已成功
停止執行工作,並將整合狀態標示為「失敗」。如果最終工作 (葉子工作) 有替代路徑,系統會執行替代路徑中的工作。如果替代路徑中的所有工作都順利執行,系統會將整合狀態標示為「成功」
重新啟動整合功能 (含退避機制) 從第一個工作開始執行整個整合程序。不過,工作可能會再次失敗。為避免重複失敗,請在「重試間隔 (秒)」欄位中指定重新啟動間隔時間,並在「重試次數上限」欄位中指定允許的重新啟動嘗試次數。
以指數輪詢方式重試工作 從失敗的工作執行整合。如果工作在重試期間失敗,每次重試嘗試之間的時間間隔會以 2 的次方增加。延遲時間會加到退避時間中,延遲時間為 1 到 5 秒。

舉例來說,如果指定的重試間隔為 3 秒,第一次重試會在 3 秒後進行。第二次重試會在 9 秒後進行,第三次重試會在 81 秒後進行,依此類推。這個程序會持續進行,直到達到重試次數上限或工作成功為止 (以先發生者為準)。

以固定間隔重試工作 從失敗的工作執行整合。如果工作在重試期間失敗,每次重試嘗試之間的時間間隔會維持不變。

舉例來說,如果指定的重試間隔為 3 秒,系統就會每隔 3 秒重試一次。這個程序會持續進行,直到達到重試次數上限或工作成功為止 (以先發生者為準)。

Retry task with linear backoff 從失敗的工作執行整合。如果工作在重試期間失敗,每次重試嘗試之間的時間間隔會線性增加。延遲時間會加到退避時間中,介於 1 到 5 秒之間。

舉例來說,如果指定的重試間隔為 3 秒,第一次重試會在 3 秒後進行。第二次重試會在 6 秒後進行,第三次重試會在 9 秒後進行,依此類推。這個程序會持續進行,直到達到重試次數上限或工作成功為止 (以先發生者為準)。

輪詢重試

每個專案和地區的預設並行限制為 50 次執行。系統會將失敗的執行作業排入佇列,並使用指數輪詢演算法重試,每次重試之間的等待時間會逐漸增加,最多重試 10 次。例如:

  1. 執行整合。
  2. 如果要求失敗,請等待 10 分鐘後再重試要求。
  3. 如果要求失敗,請等待 20 分鐘後再重試要求。
  4. 如果要求失敗,請等待 40 分鐘後再重試要求。
  5. 依此類推,最多重試 10 次。

重試條件

重試條件會指定必須符合的條件,錯誤處理策略才會執行。下表說明重試條件中支援的運算子和函式:

支援的運算子

下表說明重試條件中可使用的支援運算子。

運算子 說明 範例
= 檢查兩個值是否相等 $var$ = "value"
!= 檢查兩個值是否不相等 $var$ != "value"
< 檢查某個值是否小於另一個值 5 < 10
<= 檢查某個值是否小於或等於另一個值 $var$ <= 5
> 檢查某個值是否大於另一個值 1 > 0
>= 檢查某個值是否大於或等於另一個值 $var$ >= 0
檢查字串是否包含子字串,或檢查清單是否包含特定原始值。

$longString$ : "substring"

$list of values$ : "value"

AND 檢查兩個運算式,如果兩個運算式的計算結果都為 true,則傳回 true。 $a$ > $b$ AND $b$ < $c$
檢查兩個運算式,如果其中一個運算式的計算結果為 true,則傳回 true。 $a$ > $b$ OR $b$ < $c$
NOT 否定運算子。反轉運算式的結果。 NOT($var$ = "value")

支援的函式

下表說明重試條件中可用的支援函式。

功能 說明
exists(VARIABLE) 檢查指定變數是否存在
does_not_exist(VARIABLE) 檢查指定變數是否存在
is_empty(VARIABLE) 檢查指定變數是否為清單且為空白。支援陣列變數類型,但 JSON 陣列除外。
is_not_empty(VARIABLE) 檢查指定變數是否為清單且不為空白。支援陣列變數類型,但 JSON 陣列除外。