

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從 Step Functions 中的任務狀態啟動工作流程執行
<a name="concepts-nested-workflows"></a>

AWS Step Functions 可以直接從`Task`狀態機器的狀態啟動工作流程執行。這可讓您將工作流程分成較小的狀態機器，並啟動這些其他狀態機器的執行。透過啟動這些新的工作流程執行，您可以：
+ 將較高層級的工作流程與較低層級的特定工作流程分開。
+ 多次呼叫不同的狀態機器，以避免重複元素。
+ 建立模組化可重複使用工作流程的程式庫，以加快開發速度。
+ 降低複雜性，並讓您更輕鬆地編輯狀態機器和排除其問題。

Step Functions 可以透過呼叫自己的 API 做為[整合服務](integrate-services.md)來啟動這些工作流程執行。只需從您的 `Task` 狀態呼叫 `StartExecution` API 動作，並傳遞必要的參數即可。您可以使用任何[服務整合模式](connect-to-resource.md)呼叫 Step Functions API。

**提示**  
若要部署範例巢狀工作流程，請參閱* AWS Step Functions 研討會*中的[最佳化成本](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 動作配額會限制您可以啟動的執行數。在 `StepFunctions.ExecutionLimitExceeded` 上使用 `Retry`，以確保您的執行已啟動。請查看以下內容。  
[與 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。透過附加`.$`至參數名稱，並使用 在內容物件中參考 ID 來傳遞執行 ID`$$.Execution.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)