Todos os produtos
Search
Central de documentação

CloudFlow:Task state

Última atualização: Jun 28, 2026

Um estado Task invoca uma operação de API de um serviço integrado como uma unidade de trabalho única dentro de um fluxo de trabalho. Utilize estados Task para chamar funções do Function Compute, APIs de serviços da Alibaba Cloud ou serviços de terceiros via HTTP/HTTPS.

Na Flow Definition Language (FDL), defina Type como Task para configurar um estado Task.

Tipos de serviço suportados

O estado Task pode chamar três categorias de serviços. Especifique o alvo no campo Action usando o formato <ServiceName>:<APIOperation>.

Categoria

Formato da Action

Descrição

Exemplo

Function Compute

FC:<APIOperation>

Invoca uma função do Function Compute de forma síncrona ou assíncrona

FC:InvokeFunction

API de serviço da Alibaba Cloud

<ServiceName>:<APIOperation>

Chama qualquer operação da OpenAPI da Alibaba Cloud

ECS:DescribeInstances

Endpoint HTTP de terceiros

HTTP:Request

Envia uma solicitação HTTP/HTTPS para um serviço externo

HTTP:Request

Modos de integração

O campo TaskMode controla como o CloudFlow interage com o serviço de destino:

Modo

Comportamento

Quando usar

RequestComplete

Aguarda o retorno da resposta do serviço e prossegue para o próximo estado.

Chamadas síncronas padrão em que a resposta é imediata.

WaitForCustomCallback

Pausa o fluxo de trabalho até que um sistema externo envie um callback com o token da tarefa.

Aprovações humanas, processos externos de longa duração ou qualquer cenário em que o fluxo deva aguardar um sinal externo.

WaitForSystemCallback

Pausa o fluxo de trabalho até que o serviço integrado envie um callback automático após a conclusão.

Operações da Alibaba Cloud de longa duração que suportam notificações de conclusão no nível do sistema.

Para obter mais detalhes, consulte Modos de integração de serviços.

Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

Name

string

Sim

O nome do estado.

Type

string

Sim

O tipo do estado. Defina como Task.

Action

string

Sim

O serviço e a operação a serem chamados. Formato: <ServiceName>:<APIOperation>.

TaskMode

enum

Não

O modo de integração: RequestComplete, WaitForCustomCallback ou WaitForSystemCallback.

Parameters

map[string]any

Não

Os parâmetros de entrada para a chamada de API. Os valores podem ser constantes ou expressões JSONPath.

InputConstructor

map[string]any

Não

Constrói a entrada da tarefa a partir da entrada do estado. Consulte Entradas e saídas.

OutputConstructor

map[string]any

Não

Constrói a saída do estado a partir do resultado da tarefa. Consulte Entradas e saídas.

Timeout

string

Não

O período de tempo limite em segundos. Valores válidos: 0 a 604800. 0 indica ausência de tempo limite. É possível definir o tempo limite dinamicamente a partir da entrada de execução com uma expressão JSONPath (veja o exemplo abaixo).

Retry

map[string]any

Não

A política de nova tentativa para erros. Consulte Tratamento de erros.

Catch

map[string]any

Não

A política de captura de erros. Consulte Tratamento de erros.

Description

string

Não

Uma descrição do estado.

Next

string

Não

O próximo estado a ser executado após a conclusão deste estado. Deixe em branco se End for true.

End

bool

Não

Indica se este estado é o estado terminal do escopo atual.

Defina o tempo limite dinamicamente a partir da entrada de execução com uma expressão JSONPath:

Timeout.$: $Input.timeout

Exemplos

Invocar uma função do Function Compute

Este exemplo define dois estados Task que invocam uma função do Function Compute — um de forma síncrona e outro de forma assíncrona. Especifique a função e o tipo de invocação no campo Parameters. Para detalhes sobre os parâmetros, consulte Configurar parâmetros de invocação.

As funções podem ser invocadas no modo de integração otimizada ou por meio da OpenAPI da Alibaba Cloud.

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: an example of synchronous function invocation
States:
  - Name: an example of synchronous function invocation
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::functions/myFunction1/LATEST
      invocationType: Sync
      body:
        key: name
    Next: an example of asynchronous function invocation
  - Type: Task
    Name: an example of asynchronous function invocation
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      invocationType: Async
      resourceArn: acs:fc:{region}:{accountID}:functions/myFunction/LATEST
      body:
        key: name
    Next: SucceededExit
  - Type: Pass
    Name: SucceededExit
    End: true

Chamar uma API de serviço da Alibaba Cloud

Chame qualquer API de serviço da Alibaba Cloud definindo o campo Action com o nome do serviço e da operação. O exemplo a seguir chama ECS:DescribeInstances para listar instâncias ECS em uma VPC específica:

Type: StateMachine
SpecVersion: v1
Name: MyWorkflow
StartAt: DescribeInstances
States:
  - Type: Task
    Name: DescribeInstances
    Action: ECS:DescribeInstances
    TaskMode: RequestComplete
    Parameters:
      RegionId: cn-hangzhou
      VpcId: vpc-bp11y195luy47h8****
      VSwitchId: vsw-bp1wb297ekw7xyh****
    End: true

Chamar um endpoint HTTP com tempo limite e tratamento de erros

Este exemplo envia uma solicitação HTTP POST e define um tempo limite dinâmico a partir da entrada de execução. Se a tarefa não for concluída dentro do período de tempo limite, o CloudFlow gera um erro FnF.TaskTimeout. A regra Catch captura esse erro e direciona o fluxo de trabalho para um estado de notificação.

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: SubmitTask
States:
  - Type: Task
    Name: SubmitTask
    Action: HTTP:Request
    TaskMode: RequestComplete
    Timeout.$: $Input.timeout
    Parameters:
      method: POST
      url: https://*****
      body:
        taskName: fly
      headers:
        Content-Type: multipart/form-data
    Catch:
      - Errors:
          - FnF.TaskTimeout
        Description: 'Error capture rule #1'
        Next: NotifyOnTaskTimeout
        OutputConstructor:
          ErrorCode: TaskTimeout
          ErrorMessage: Task timed out.
    End: true
  - Type: Task
    Name: NotifyOnTaskTimeout
    Action: HTTP:Request
    TaskMode: RequestComplete
    Parameters:
      method: POST
      url: https://******
      body:
        taskName: fly
        errorCode.$: $Input.ErrorCode
        errorMessage.$: $Input.ErrorMessage
      headers:
        Content-Type: multipart/form-data
    End: true

A entrada de execução fornece o valor do tempo limite:

{
  "timeout": 10
}

Caso a tarefa não seja concluída em 10 segundos, o erro FnF.TaskTimeout é capturado e o fluxo de trabalho transita para o estado NotifyOnTaskTimeout para enviar uma notificação de tempo limite.

Timeout workflow