本文介紹失敗狀態及其相關使用樣本。
基本概念
失敗狀態用來提前結束一系列狀態,類似於程式設計語言中的raise
、throw
等操作。工作流程定義中,通常一個狀態執行完成後會繼續執行後續狀態,而失敗狀態不會繼續執行下一個狀態。
運行至失敗狀態,將會完結本範圍的所有狀態,並將整個工作流程完結。
失敗狀態包含以下屬性。
欄位 | 類型 | 是否可選 | 描述 | 樣本值 |
Name | string | 是 | 狀態名稱。 | my state |
Description | string | 否 | 狀態原因。 | describe it here |
Type | string | 是 | 狀態類型。 | Fail |
InputConstructor | map[string]any | 否 | 輸入構造器。 | 請參見輸入和輸出 |
OutputConstructor | map[string]any | 否 | 輸出構造器。 | 請參見狀態輸出構造器 |
Code | string | 否 | 錯誤碼。 | customBizCode |
Detail | string | 是 | 錯誤描述。 | my custom error |
與成功(Succeed)狀態相比,失敗狀態需要定義自訂錯誤讓流程退出,而非當前範圍完成。您可以使用Code欄位自訂錯誤碼,使用Detail欄位定義更多詳情。
使用樣本
以下樣本定義使用失敗狀態完結當前範圍。
Type: StateMachine
Name: my-workflow
SpecVersion: v1
Description: " "
StartAt: Choice1
States:
- Type: Choice
Name: Choice1
Branches:
- Condition: $Input.status == "true"
Next: Pass1
Default: Fail1
- Type: Fail
Name: Fail1
Code: "customBizCode"
End: true
- Type: Pass
Name: Pass1
End: true
失敗狀態可以理解為內建End=true
屬性且返回錯誤的傳遞狀態。
本樣本中,除非$Input.status=="true"
成立,否則將指向預設狀態,整個流程直接結束。