

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Iniciar execuções de fluxo de trabalho usando um estado de tarefa no Step Functions
<a name="concepts-nested-workflows"></a>

O AWS Step Functions pode iniciar execuções de fluxo de trabalho diretamente de um estado `Task` de uma máquina de estado. Isso permite dividir seus fluxos de trabalho em máquinas de estado menores e iniciar execuções dessas outras máquinas de estado. Ao iniciar essas novas execuções de fluxo de trabalho, você poderá:
+ Separar o fluxo de trabalho de nível superior dos fluxos de trabalho de nível inferior específicos à tarefa.
+ Evitar elementos repetitivos chamando uma máquina de estado separada várias vezes.
+ Criar uma biblioteca de fluxos de trabalho modulares reutilizáveis para um desenvolvimento mais rápido.
+ Reduzir a complexidade e facilitar a edição e a solução de problemas em máquinas de estado.

O Step Functions pode iniciar essas execuções de fluxo de trabalho chamando sua própria API como um [serviço integrado](integrate-services.md). Basta chamar a ação da API `StartExecution` do estado `Task` e transmitir os parâmetros necessários. É possível chamar a API do Step Functions usando qualquer um dos [padrões de integração de serviço](connect-to-resource.md).

**dica**  
Para implantar um exemplo de fluxo de trabalho aninhado, consulte [Otimização de custos](https://catalog.workshops.aws/stepfunctions/nested-workflow) no *Workshop AWS Step Functions*.

Para iniciar uma nova execução de uma máquina de estado, use um estado `Task` semelhante ao seguinte:

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution",
   "Parameters":{  
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Input":{  
         "Comment":"Hello world!"
      },
   },
   "Retry":[  
      {  
        "ErrorEquals":[  
            "StepFunctions.ExecutionLimitExceeded"
        ]
      }
   ],
   "End":true
}
```

Esse estado `Task` iniciará uma nova execução da máquina de estado `HelloWorld` e transmitirá o comentário JSON como entrada.

**nota**  
As cotas de ação da API `StartExecution` podem limitar o número de execuções que podem ser iniciadas. Use o `Retry` no `StepFunctions.ExecutionLimitExceeded` para garantir que a execução seja iniciada. Veja o seguinte:  
[Cotas relacionadas ao controle de utilização das ações de API](service-quotas.md#service-limits-api-action-throttling-general)
[Tratar erros em fluxos de trabalho do Step Functions](concepts-error-handling.md)

## Associar execuções de fluxo de trabalho
<a name="nested-execution-startid"></a>

Para associar uma execução de fluxo de trabalho iniciada à execução que a iniciou, transmita o ID de execução do [objeto de contexto](input-output-contextobject.md) para a entrada da execução. É possível acessar o ID do objeto de contexto do estado `Task` em uma execução em andamento. Transmita o ID de execução anexando `.$` ao nome do parâmetro e fazendo referência ao ID no objeto de contexto com `$$.Execution.Id`.

```
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"
```

É possível usar um parâmetro especial chamado `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID` ao iniciar uma execução. Se for incluída, essa associação fornecerá links na seção **Detalhes da etapa** do console do Step Functions. Quando eles forem fornecidos, será possível rastrear facilmente as execuções dos fluxos de trabalho, desde o início de execuções até as execuções de fluxo de trabalho iniciadas. Usando o exemplo anterior, associe o ID de execução à execução iniciada da máquina de estado `HelloWorld` da maneira indicada a seguir.

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution",
   "Parameters":{  
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Input": {
        "Comment": "Hello world!",
        "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"
       }
   },
   "End":true
}
```

Para obter mais informações, consulte:
+ [Integração de produtos da ](integrate-services.md)
+ [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)
+ [Acessar o objeto de contexto](input-output-contextobject.md#contextobject-access)
+ [AWS Step Functions](connect-stepfunctions.md)