本文介绍失败状态及其相关使用示例。
基本概念
失败状态用来提前结束一系列状态,类似于编程语言中的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"
成立,否则将指向默认状态,整个流程直接结束。