

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Lancer des exécutions de flux de travail à partir d'un état de tâche dans Step Functions
<a name="concepts-nested-workflows"></a>

AWS Step Functions peut démarrer des exécutions de flux de travail directement à partir de `Task` l'état d'une machine à états. Cela vous permet de diviser vos flux de travail en machines d'état plus petites et de démarrer l’exécution de ces machines d'état. En démarrant ces nouvelles exécutions de flux de travail, vous pouvez :
+ Séparer un flux de travail de niveau supérieur des flux de travail de niveau inférieur et spécifiques aux tâches.
+ Éviter les éléments répétitifs en appelant plusieurs fois une machine d'état distincte.
+ Créer une bibliothèque de flux de travail modulaires réutilisables pour un développement plus rapide.
+ Réduire la complexité et simplifier la modification et le dépannage des machines d'état.

Step Functions peut démarrer ces exécutions de flux de travail en appelant sa propre API en tant que [service intégré](integrate-services.md). Il vous suffit d'appeler l'action d'API `StartExecution` à partir de votre état `Task` et de transmettre les paramètres nécessaires. Vous pouvez appeler l'API Step Functions en utilisant n'importe quel modèle [d'intégration de service](connect-to-resource.md).

**Astuce**  
Pour déployer un exemple de flux de travail imbriqué, consultez la section [Optimisation des coûts](https://catalog.workshops.aws/stepfunctions/nested-workflow) dans *The AWS Step Functions Workshop*.

Pour démarrer une nouvelle exécution d'une machine à états, utilisez un `Task` état similaire à l'exemple suivant :

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

Cet état `Task` démarre une nouvelle exécution de la machine d'état `HelloWorld` et transmet le commentaire JSON en tant qu'entrée.

**Note**  
Les quotas d'action d'API `StartExecution` peuvent réduire le nombre d'exécutions que vous pouvez démarrer. Utilisez `Retry` sur `StepFunctions.ExecutionLimitExceeded` pour vous assurer que votre exécution a démarré. Consultez les rubriques suivantes.  
[Quotas liés à la limitation des actions des API](service-quotas.md#service-limits-api-action-throttling-general)
[Gestion des erreurs dans les flux de travail Step Functions](concepts-error-handling.md)

## Exécution de flux de travail associés
<a name="nested-execution-startid"></a>

Pour associer une exécution de flux de travail démarrée à l'exécution qui l'a lancée, transmettez l'ID d'exécution de l'[objet Context](input-output-contextobject.md) à l'entrée d'exécution. Vous pouvez accéder à l'ID depuis l'objet Context depuis votre `Task` état lors d'une exécution en cours. Transmettez l'ID d'exécution en l'ajoutant `.$` au nom du paramètre et en faisant référence à l'ID dans l'objet Context avec. `$$.Execution.Id`

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

Vous pouvez utiliser un paramètre spécial nommé `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID` lorsque vous démarrez une exécution. Si elle est incluse, cette association fournit des liens dans la section **Détails des étapes** de la console Step Functions. Dans ce cas, vous pouvez facilement suivre les exécutions de vos flux de travail, du démarrage à l’exécution. À l'aide de l'exemple précédent, associez l'ID d'exécution à l'exécution démarrée de la machine d'état `HelloWorld` comme suit.

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

Pour plus d’informations, consultez les ressources suivantes :
+ [Intégration des services ](integrate-services.md)
+ [Transmission de paramètres à une API de service dans Step Functions](connect-parameters.md)
+ [Accès à l'objet Context](input-output-contextobject.md#contextobject-access)
+ [AWS Step Functions](connect-stepfunctions.md)