

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Iniciar ejecuciones de flujo de trabajo desde un estado de tarea en Step Functions.
<a name="concepts-nested-workflows"></a>

AWS Step Functions puede iniciar ejecuciones de flujo de trabajo directamente desde el estado `Task` de una máquina de estado. Esto le permite dividir los flujos de trabajo en máquinas de estado más pequeñas e iniciar ejecuciones de estas otras máquinas de estado. Al iniciar estas nuevas ejecuciones de flujo de trabajo puede:
+ Separar el flujo de trabajo de nivel superior de los flujos de trabajo específicos de tareas de nivel inferior.
+ Evitar elementos repetitivos llamando a una máquina de estado independiente varias veces.
+ Crear una biblioteca de flujos de trabajo reutilizables modulares para un desarrollo más rápido.
+ Reducir la complejidad y facilitar la edición y la resolución de problemas de máquinas de estado.

Step Functions puede iniciar estas ejecuciones de flujo de trabajo llamando a su propia API como un [servicio integrado](integrate-services.md). Solo tiene que llamar a la acción de la API `StartExecution` desde su estado `Task` y transferir los parámetros necesarios. Puede llamar a la API de Step Functions utilizando cualquiera de los [patrones de integración de servicios](connect-to-resource.md).

**sugerencia**  
Para implementar un ejemplo de flujo de trabajo anidado, consulte [Optimización de costos](https://catalog.workshops.aws/stepfunctions/nested-workflow) en *The AWS Step Functions Workshop*.

Para iniciar una nueva ejecución de una máquina de estado, utilice un estado `Task` similar al ejemplo siguiente.

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

Este estado `Task` comenzará una nueva ejecución de la máquina de estado `HelloWorld` y transferirá el comentario JSON como entrada.

**nota**  
Las cuotas de acción de la API `StartExecution` pueden limitar el número de ejecuciones que puede iniciar. Utilice `Retry` en `StepFunctions.ExecutionLimitExceeded` para asegurarse de que se inicia la ejecución. Consulte lo siguiente.  
[Cuotas relacionadas con la limitación controlada de las acciones de la API](service-quotas.md#service-limits-api-action-throttling-general)
[Control de errores en los flujos de trabajo de Step Functions](concepts-error-handling.md)

## Asociar ejecuciones de flujos de trabajo
<a name="nested-execution-startid"></a>

Para asociar una ejecución de flujo de trabajo iniciada con la ejecución que la inició, pase el ID de ejecución del [objeto Context](input-output-contextobject.md) a la entrada de ejecución. Puede acceder al ID desde el objeto Context desde su estado `Task` en una ejecución en curso. Pase el ID de ejecución añadiendo `.$` al nombre del parámetro y haciendo referencia al ID en el objeto Context con `$$.Execution.Id`.

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

Puede utilizar un parámetro especial denominado `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID` al iniciar una ejecución. Si se incluye, esta asociación proporciona enlaces en la sección **Detalles del paso** de la consola de Step Functions. Cuando se proporciona, puede rastrear fácilmente las ejecuciones de los flujos de trabajo desde las ejecuciones de inicio a las ejecuciones de flujo de trabajo iniciadas. Utilizando el ejemplo anterior, asocie el ID de ejecución con la ejecución iniciada de la máquina de estado `HelloWorld` de la siguiente manera.

```
{  
   "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 obtener más información, consulte los siguientes temas:
+ [Integración de los servicios de ](integrate-services.md)
+ [Cómo pasar parámetros a una API de servicio en Step Functions](connect-parameters.md)
+ [Acceso al objeto Contexto](input-output-contextobject.md#contextobject-access)
+ [AWS Step Functions](connect-stepfunctions.md)