本文介绍任务状态的基本概念及其相关使用示例。
基本概念
任务(Task)状态主要用于调用其他集成服务API来完成特定任务。利用任务类型状态可以执行一个函数调用,阿里云指定服务API调用,也可以通过HTTP/HTTPS等通用协议发起第三方服务调用。在流程定义语言中,我们通过声明State的类型为‘Task’标记当前状态是一个任务类型的状态。
任务状态包含以下属性。
字段 | 类型 | 是否必选 | 描述 | 示例值 |
Name | string | 是 | 状态名称。 | my-state-name |
Description | string | 否 | 状态描述。 | describe it here |
Type | string | 是 | 状态类型。 | Task |
Action | string | 是 | 代表当前任务要执行的Action是什么,通常是产品对应的API名称,或者集成服务的抽象行为名称。遵循 <产品名>:<APIName>。 | FC:InvokeFunction |
TaskMode | enum | 否 | 任务调用模式,云工作流提供3种任务类型,具体类型描述细节参考服务集成模式。
| WaitForCustomCallback |
InputConstructor | map[string]any | 否 | 输入构造器。 | 请参见输入构造器 |
Parameters | map[string]any | 否 | 请求调用参数规范;对应Action行为定义的具体调用参数规范。 可使用常量或JsonPath进行参数赋值。 | 参数规范请参见集成简介 |
Timeout | string | 否 | 调用最大超时时间,单位为秒。 | 30 |
Retry | map[string]any | 否 | 错误重试策略配置。 | 请参见错误处理 |
Catch | map[string]any | 否 | 错误捕获策略配置。 | 请参见错误处理 |
OutputConstructor | map[string]any | 否 | 输出构造器。 | 请参见输出构造器 |
Next | string | 否 | 当前状态的下一个状态。当End取值为true时,无需指定。 | my-next-state |
End | bool | 否 | 是否为当前作用域的终结节点。 | true |
调用示例
调用函数计算
通过声明Task
类型的State
,利用Parameters
字段,按照函数计算调用参数规范,指定需要调用函数的信息,具体参数规范请参见配置调用参数。函数调用既可以通过优化集成方式调用,也可以直接使用对应的阿里云OpenAPI调用。
Type: StateMachine
SpecVersion: v1
Name: 函数计算调用示例
StartAt: 同步调用函数示例
States:
- Name: 同步调用函数示例
Type: Task
TaskMode: RequestComplete
Action: FC:InvokeFunction
Parameters:
resourceArn: <myFunctionArn>
invocationType: Sync
body: <myEvent>
Next: 异步调用函数示例
- Name: 异步调用函数示例
Type: Task
TaskMode: RequestComplete
Action: FC::InvokeFunction
Parameters:
resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
invocationType: Async
body: <myEvent>
Retry:
- Errors:
- MyCustomException1
Description: 重试策略1
MaxAttempts: 3
IntervalSeconds: 2
Catch:
- Errors:
- MyCustomException1
Description: 捕获策略1
OutputConstructor:
ErrorCode: MyCustomException1
ErrorMessage: MyCustomException1
Next: ErrorCatchExit
Next: SucceededExit
- Type: Pass
Name: ErrorCatchExit
End: true
- Type: Pass
Name: SucceededExit
End: tru
调用阿里云服务API
按照阿里云OpenAPI规范,调用相应的OpenAPI。例如 ECS:DescribeInstances。
Type: StateMachine
SpecVersion: v1
Name: 阿里云服务API调用示例
StartAt: DescribeInstances
States:
- Type: Task
Name: DescribeInstances
Action: ECS:DescribeInstances
TaskMode: RequestComplete
Parameters:
RegionId: cn-hangzhou
VpcId: vpc-bp11y195luy47h8****
VSwitchId: vsw-bp1wb297ekw7xyh****
End: true
调用HTTP/HTTPS
Type: StateMachine
SpecVersion: v1
Name: HTTP协议调用示例
StartAt: HTTP调用示例
States:
- Type: Task
Name: HTTP调用示例
Action: HTTP:Request
TaskMode: RequestComplete
Description: 调用HTTP示例
Parameters:
url: https://www.example.com
method: Get