

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Step Functions 中从 Task 状态启动工作流程执行
<a name="concepts-nested-workflows"></a>

AWS Step Functions 可以直接从状态机的 `Task` 状态启动工作流程执行。这允许您将工作流程分解为较小的状态机，并开始执行这些其他状态机。通过启动这些新的工作流程执行，您可以：
+ 将更高级别的工作流程与较低级别的特定于任务的工作流程分开。
+ 通过多次调用单独的状态机来避免重复元素。
+ 创建模块化可重用工作流程库以加快开发速度。
+ 降低复杂性并使编辑状态机和排除其故障变得更容易。

Step Functions 可以通过调用自己的 API 以作为[集成服务](integrate-services.md)来启动这些工作流执行。只需从 `StartExecution` 状态调用 `Task` API 操作并传递必要的参数即可。您可以使用任何[服务集成模式](connect-to-resource.md)调用 Step Functions API。

**提示**  
要部署示例嵌套工作流，请参阅《The AWS Step Functions Workshop》**中的 [Optimizing costs](https://catalog.workshops.aws/stepfunctions/nested-workflow)。

要启动新的状态机执行，请使用类似于以下示例的 `Task` 状态：

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

此 `Task` 状态会启动新的 `HelloWorld` 状态机执行，并传递 JSON 注释作为输入。

**注意**  
`StartExecution` API 操作配额可以限制您可以启动的执行次数。对 `Retry` 使用 `StepFunctions.ExecutionLimitExceeded` 以确保启动您的执行。请参阅以下内容。  
[与 API 操作限制相关的配额](service-quotas.md#service-limits-api-action-throttling-general)
[处理 Step Functions 工作流程中的错误](concepts-error-handling.md)

## 关联工作流程执行
<a name="nested-execution-startid"></a>

要将已启动的工作流执行与启动它的执行相关联，请将执行 ID 从[上下文对象](input-output-contextobject.md)传递到执行输入。您可以在正在运行的执行中从您的 `Task` 状态访问上下文对象中的 ID。通过将 `.$` 附加到参数名称并在上下文对象中通过 `$$.Execution.Id` 引用 ID 来传递执行 ID。

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

在启动执行时，您可以使用名为 `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID` 的特殊参数。如果包含此关联，则会在 Step Functions 控制台的**步骤详细信息**部分提供链接。当提供后，您可以轻松跟踪工作流程的执行情况（从正在启动的执行到已启动的工作流程执行）。使用前面的示例，将执行 ID 与 `HelloWorld` 状态机的已启动执行相关联，如下所示。

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

有关更多信息，请参阅下列内容：
+ [集成 服务](integrate-services.md)
+ [在 Step Functions 中将参数传递给服务 API](connect-parameters.md)
+ [访问上下文对象](input-output-contextobject.md#contextobject-access)
+ [AWS Step Functions](connect-stepfunctions.md)