工作錯誤處理策略
工作錯誤處理策略會指定工作因暫時性錯誤而失敗時,系統應採取的動作。
設定錯誤處理策略
如要為工作設定錯誤處理策略,請按照下列步驟操作:
- 在整合服務編輯器中,按一下現有工作。系統會顯示工作設定窗格。
- 在工作設定窗格中,展開「錯誤處理」部分。下圖顯示「Error handling」(錯誤處理) 區段:
在「錯誤處理」部分,按照下列步驟操作:
- 如要新增失敗政策,請按一下「+ 新增失敗政策」。如果設定多項條件式失敗政策,系統會依序檢查並比對這些政策。
- 在「重試策略」欄位中,選取要使用的錯誤處理策略。如需策略清單,請參閱「重試策略」。
- 在「Retry condition」(重試條件) 欄位中,輸入必須與錯誤相符的條件,才能執行這項錯誤策略。舉例來說,如果是呼叫 REST 端點工作,如要讓錯誤代碼與
404相符時執行錯誤策略,請輸入下列內容: 如要瞭解如何新增這些條件,請參閱「重試條件」。$`ErrorInfo.code`$ = 404
- 在「預設錯誤政策」部分,新增在沒有相符的條件式失敗政策時必須套用的預設政策。預設失敗政策為選用項目。
- 在「Error catcher」部分,為整合作業新增錯誤擷取器。
- 如要新增失敗政策,請按一下「+ 新增失敗政策」。如果設定多項條件式失敗政策,系統會依序檢查並比對這些政策。
重試策略
下表說明您可以對工作採取的不同錯誤處理策略:
| 策略類型 | 說明 |
|---|---|
| 嚴重 | 停止執行整個整合作業,並將執行狀態標示為「失敗」。 |
| 略過 | 忽略工作失敗情形。整合會繼續執行後續工作,並假設失敗的工作已成功。 |
| 無 | 停止執行工作,並將整合狀態標示為「失敗」。如果最終工作 (葉子工作) 有替代路徑,系統會執行替代路徑中的工作。如果替代路徑中的所有工作都順利執行,系統會將整合狀態標示為「成功」。 |
| 重新啟動整合功能 (含退避機制) | 從第一個工作開始執行整個整合程序。不過,工作可能會再次失敗。為避免重複失敗,請在「重試間隔 (秒)」欄位中指定重新啟動間隔時間,並在「重試次數上限」欄位中指定允許的重新啟動嘗試次數。 |
| 以指數輪詢方式重試工作 | 從失敗的工作執行整合。如果工作在重試期間失敗,每次重試嘗試之間的時間間隔會以 2 的次方增加。延遲時間會加到退避時間中,延遲時間為 1 到 5 秒。
舉例來說,如果指定的重試間隔為 3 秒,第一次重試會在 3 秒後進行。第二次重試會在 9 秒後進行,第三次重試會在 81 秒後進行,依此類推。這個程序會持續進行,直到達到重試次數上限或工作成功為止 (以先發生者為準)。 |
| 以固定間隔重試工作 | 從失敗的工作執行整合。如果工作在重試期間失敗,每次重試嘗試之間的時間間隔會維持不變。
舉例來說,如果指定的重試間隔為 3 秒,系統就會每隔 3 秒重試一次。這個程序會持續進行,直到達到重試次數上限或工作成功為止 (以先發生者為準)。 |
| Retry task with linear backoff | 從失敗的工作執行整合。如果工作在重試期間失敗,每次重試嘗試之間的時間間隔會線性增加。延遲時間會加到退避時間中,介於 1 到 5 秒之間。
舉例來說,如果指定的重試間隔為 3 秒,第一次重試會在 3 秒後進行。第二次重試會在 6 秒後進行,第三次重試會在 9 秒後進行,依此類推。這個程序會持續進行,直到達到重試次數上限或工作成功為止 (以先發生者為準)。 |
輪詢重試
每個專案和地區的預設並行限制為 50 次執行。系統會將失敗的執行作業排入佇列,並使用指數輪詢演算法重試,每次重試之間的等待時間會逐漸增加,最多重試 10 次。例如:
- 執行整合。
- 如果要求失敗,請等待 10 分鐘後再重試要求。
- 如果要求失敗,請等待 20 分鐘後再重試要求。
- 如果要求失敗,請等待 40 分鐘後再重試要求。
- 依此類推,最多重試 10 次。
重試條件
重試條件會指定必須符合的條件,錯誤處理策略才會執行。下表說明重試條件中支援的運算子和函式:
支援的運算子
下表說明重試條件中可使用的支援運算子。
| 運算子 | 說明 | 範例 |
| = | 檢查兩個值是否相等 | $var$ = "value" |
| != | 檢查兩個值是否不相等 | $var$ != "value" |
| < | 檢查某個值是否小於另一個值 | 5 < 10 |
| <= | 檢查某個值是否小於或等於另一個值 | $var$ <= 5 |
| > | 檢查某個值是否大於另一個值 | 1 > 0 |
| >= | 檢查某個值是否大於或等於另一個值 | $var$ >= 0 |
| : | 檢查字串是否包含子字串,或檢查清單是否包含特定原始值。 |
|
| 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 陣列除外。 |