

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Avvia le esecuzioni del flusso di lavoro da uno stato di attività in Step Functions
<a name="concepts-nested-workflows"></a>

AWS Step Functions può avviare le esecuzioni dei flussi di lavoro direttamente dallo `Task` stato di una macchina a stati. In questo modo puoi suddividere i flussi di lavoro in macchine a stati più piccole e avviare le esecuzioni di queste altre macchine a stati. Avviando queste nuove esecuzioni di flusso di lavoro puoi:
+ Separare il flusso di lavoro di livello superiore dai flussi di lavoro specifici del task di livello inferiore.
+ Evitare gli elementi ripetitivi chiamando una macchina a stati separata più volte.
+ Creare una libreria di flussi di lavoro riutilizzabili modulari per uno sviluppo più rapido.
+ Ridurre la complessità e facilitare la modifica e la risoluzione dei problemi delle macchine a stati.

Step Functions può avviare queste esecuzioni di flussi di lavoro chiamando la propria API come [servizio integrato](integrate-services.md). È sufficiente chiamare l'operazione API `StartExecution` dallo stato `Task` e passare i parametri necessari. Puoi chiamare l'API Step Functions utilizzando uno qualsiasi dei [modelli di integrazione del servizio](connect-to-resource.md).

**Suggerimento**  
*Per implementare un esempio di flusso di lavoro annidato, consulta [Ottimizzazione dei costi](https://catalog.workshops.aws/stepfunctions/nested-workflow) in The Workshop. AWS Step Functions *

Per avviare una nuova esecuzione di una macchina a stati, utilizzate uno `Task` stato simile all'esempio seguente:

```
{  
   "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
}
```

Questo stato `Task` avvia una nuova esecuzione della macchina a stati `HelloWorld` e passa il commento JSON come input.

**Nota**  
Le quote dell'operazione API `StartExecution` possono condizionare il numero di esecuzioni che è possibile avviare. Utilizza `Retry` su `StepFunctions.ExecutionLimitExceeded` per assicurarti che l'esecuzione venga avviata. Consulta quanto segue.  
[Quote relative alla limitazione delle azioni delle API](service-quotas.md#service-limits-api-action-throttling-general)
[Gestione degli errori nei flussi di lavoro di Step Functions](concepts-error-handling.md)

## Associazione di esecuzioni di flusso di lavoro
<a name="nested-execution-startid"></a>

Per associare l'esecuzione di un workflow avviato all'esecuzione che l'ha avviata, passate l'ID di esecuzione dall'[oggetto Context](input-output-contextobject.md) all'input di esecuzione. È possibile accedere all'ID dall'oggetto Context dal proprio `Task` stato in un'esecuzione in esecuzione. Passate l'ID di esecuzione aggiungendolo `.$` al nome del parametro e facendo riferimento all'ID nell'oggetto Context con. `$$.Execution.Id`

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

Puoi utilizzare un parametro speciale denominato `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID` all'avvio di un'esecuzione. Se inclusa, questa associazione fornisce collegamenti nella sezione **Dettagli Step** della console Step Functions. Se vengono forniti, puoi facilmente tracciare le esecuzioni dei tuoi flussi di lavoro dall'avvio all'esecuzione di flusso di lavoro avviata. Utilizzando l'esempio precedente, associa l'ID di esecuzione all'esecuzione avviata della macchina a stati `HelloWorld` come segue.

```
{  
   "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
}
```

Per ulteriori informazioni, consulta gli argomenti seguenti:
+ [Integrazione dei servizi ](integrate-services.md)
+ [Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md)
+ [Accesso all'oggetto Context](input-output-contextobject.md#contextobject-access)
+ [AWS Step Functions](connect-stepfunctions.md)