Todos os produtos
Search
Central de documentação

CloudFlow:Etapas de tarefa

Última atualização: Jun 28, 2026

Uma etapa de tarefa invoca uma função do Function Compute e oferece suporte a novas tentativas, captura de erros e mapeamentos de entrada e saída.

Atributos

Uma etapa de tarefa invoca uma função do Function Compute.

Uma etapa de tarefa contém os seguintes atributos:

  • type: tipo da etapa. O valor task indica que a etapa é do tipo tarefa.

  • name: nome da etapa.

  • resourceArn: identificador do recurso. Tipos compatíveis: funções, filas MNS e fluxos do Serverless workflow. Exemplo:acs:fc:cn-shanghai:18807708****3420:services/fnf_test/functions/hello.Integração de serviços.

  • Opcional: pattern: modo de execução do serviço de integração. Valor padrão:requestResponse. Valores válidos:

    • requestResponse: aguarda a conclusão da tarefa antes de continuar.

    • sync: envia a tarefa de forma assíncrona e aguarda o resultado da execução antes de prosseguir.

    • waitForCallback: envia a tarefa de forma assíncrona e suspende a etapa até receber um callback ou atingir o tempo limite.

  • Opcional:timeoutSeconds: tempo limite da tarefa em segundos. A etapa expira se a execução ultrapassar essa duração.

  • Opcional:end: define se o fluxo continua para as etapas subsequentes após a conclusão desta etapa.

  • Opcional:inputMappings: mapeamentos de entrada. A entrada da etapa é transmitida como evento de invocação da função. Para mais informações, consulte InvokeFunction.

  • Opcional:outputMappings: mapeamentos de saída.$local representa o resultado da invocação da função e deve estar no formato JSON.

    Nota

    Se nenhum mapeamento de saída for especificado,

    $local

    será a saída padrão da etapa.

  • Opcional:errorMappings: mapeamentos de erro. Válido apenas quando ocorre um erro durante a execução da etapa e o parâmetro catch está definido. Use os valores $local.cause e $local.error para mapear informações de erro na saída da próxima etapa.

    Nota

    Os valores

    $local.error

    e

    $local.code

    são reservados pelo sistema. O campo

    source

    em errorMappings deve ser defina com esses dois valores.

    Exemplos

    . O parâmetro

    errorMappings

    é opcional. Se omitido, as informações de erro não estarão disponíveis na etapa seguinte.

  • retry: políticas de nova tentativa. Cada política tem os seguintes atributos:

    • errors: um ou mais erros da tabela de Definições de erro.

    • intervalSeconds: intervalo inicial de nova tentativa em segundos. Máximo: 86.400. Padrão: 1.

    • maxIntervalSeconds: intervalo máximo entre novas tentativas. Valor máximo e padrão: 86.400 segundos.

    • maxAttempts: número máximo de novas tentativas. Padrão: 3.

    • multiplier: multiplicador aplicado a cada intervalo sucessivo de nova tentativa. Padrão: 2.

  • catch: políticas de captura de erros. Cada política tem os seguintes atributos:

    • errors: um ou mais erros da tabela de definições de erro.

    • goto: nome da etapa de destino.

      Nota

      A etapa de destino deve ser paralela à etapa de tarefa atual.

Tabela 1. Definições de erro

Status de execução da função

Código de status HTTP da resposta do Function Compute

Resposta do Function Compute

**Falha na etapa do Serverless workflow (for retry and catch)**

Retry

Não executada

429

ResourceExhausted

FC.ResourceExhausted

Sim

Não executada

4xx, exceto 429

ServiceNotFound, FunctionNotFound ou InvalidArgument

FC.ServiceNotFound, FC.FunctionNotFound ou FC.InvalidArgument

Não

Incerto

500

InternalServerError

FC.InternalServerError

Sim

Não executada

503

ResourceThrottled

FC.ResourceThrottled

Sim

Execução bem-sucedida com código de erro retornado

200

Erro personalizado, incluindo errorType

errorType

Determinado pela lógica de negócio

Falha na execução com código de erro retornado

200

Sem errorType

FC.Unknown

Sim

Execução bem-sucedida com objeto não JSON retornado

200

Sem errorType

FC.InvalidOutput

Não

Outros erros

:

  • FnF.ALL: corresponde a todos os erros para casos de uso de retry ou catch.

Exemplos

  • Etapas de tarefa simples

    O fluxo de exemplo a seguir contém uma etapa de tarefa.

    • Se a entrada for {"name": "function flow"}, a saída será{"hello": "function flow"}.

    • Se nenhuma entrada for fornecida ou se a chave name estiver ausente, a etapa de tarefa falhará e o fluxo também falhará.

    • Defina o fluxo.

      version: v1
      type: flow
      steps:
        - type: task
          name: hello
          resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello           

      Parâmetros de

      resourceArn

      :

      • {region}: substitua pela região real, como cn-shanghai.

      • {accountID}: substitua pelo seu ID da conta. Encontre seu ID da conta clicando na foto de perfil na página Flows do console do Serverless Workflow.

        create_flow_step1

    • Defina a função.

      import json
      
      class MyError(Exception):
        pass
      
      def handle(event, context):
        evt = json.loads(event)
        if "name" in evt:
          return {
            "hello": evt["name"]
          }
        else:
          raise MyError("My unhandled exception")          
  • Nova tentativa

    Este exemplo tenta executar novamente a tarefa em caso de MyError. Se nenhuma entrada for fornecida ou se a chave name estiver ausente, o Serverless workflow tentará executar a tarefa novamente conforme a política de retry.

    • Aguarda 3 segundos após o primeiro erro e tenta novamente.

    • Aguarda 6 segundos (intervalSeconds x multiplier) após o segundo erro e tenta novamente.

    • Aguarda 12 segundos (intervalSeconds x multiplier x multiplier) após o terceiro erro e tenta novamente.

    • Se o erro persistir após três tentativas, o limite de maxAttempts será excedido, causando a falha da etapa de tarefa e do fluxo.

    version: v1
    type: flow
    steps:
      - type: task
        name: hello
        resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello
        retry:
          - errors:
            - MyError
            intervalSeconds: 3
            maxAttempts: 3
            multiplier: 2            
  • Captura de erros

    Este exemplo captura o MyError e salta para a etapa final. Como o erro foi capturado, o fluxo é concluído com sucesso.

    version: v1
    type: flow
    steps:
      - type: task
        name: hello
        resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello
        catch:
          - errors:
            - MyError
            goto: final
      - type: pass
        name: pass1
      - type: pass
        name: final           
  • Captura de erros com mapeamentos de erro especificados

    Este exemplo captura o MyError e salta para a etapa final. Com os mapeamentos de erro definidos, a etapa final pode acessar os detalhes do erro. Também é possível usar errorMappings para mapear entradas da etapa e constantes para as saídas.

    version: v1
    type: flow
    steps:
      - type: task
        name: hello
        resourceArn: acs:fc:{region}:{accountID}:services/fnf_test/functions/hello
        errorMappings:
          - target: errMsg
            source: $local.cause # This value is reserved for the system and can be used directly when an error occurs in this step.
          - target: errCode
            source: $local.error # This value is reserved for the system and can be used directly when an error occurs in this step.
        catch:
          - errors:
            - MyError
            goto: final
      - type: pass
        name: pass1
      - type: pass
        name: final  

    O event da etapa final contém o seguinte EventDetail:

    "EventDetail": "{\"input\":{},\"local\":{\"errorCode\":\"MyError\",\"errorMsg\":\"some message\"}}",