任务(Task)

本文介绍任务状态的基本概念及其相关使用示例。

基本概念

任务(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种任务类型,具体类型描述细节参考服务集成模式

  • RequestComplete

  • WaitForCustomCallback

  • WaitForSystemCallback

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