

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

# Amazon SWF 中的工作流程執行關閉
<a name="swf-dev-workflow-exec-closure"></a>

啟動工作流程執行後，就會*開啟*。開啟的工作流程執行可以完成、取消、失敗或逾時等名目關閉。也可以做為新的執行繼續，也可以終止。工作流程執行可由決策者、管理工作流程的人員或 Amazon SWF 關閉。

如果決策者決定工作流程活動已完成，它應該會使用 `[RespondDecisionTaskCompleted](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_RespondDecisionTaskCompleted.html)` 動作並傳遞 `[CompleteWorkflowExecution](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_CompleteWorkflowExecutionDecisionAttributes.html)` 決策，以完成的名目關閉工作流程執行。

或者，決策者可能以取消或失敗的名目關閉工作流程執行。為取消執行，決策者應該使用 `RespondDecisionTaskCompleted` 動作並傳遞 `[CancelWorkflowExecution](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_CancelWorkflowExecutionDecisionAttributes.html)` 決策。

如果它進入一般完成範圍外的狀態，決策者應該無法繼續工作流程執行。為使執行成為失敗狀態，決策者應該使用 `RespondDecisionTaskCompleted` 動作並傳遞 `[FailWorkflowExecution](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_FailWorkflowExecutionDecisionAttributes.html)` 決策。

Amazon SWF 會監控工作流程執行，以確保工作流程執行不會超過任何使用者指定的逾時設定。如果工作流程執行逾時，Amazon SWF 會自動將其關閉。如需逾時值的詳細資訊，請參閱「[Amazon SWF 逾時類型](swf-timeout-types.md)」一節。

決策者也可能關閉執行，使用 `RespondDecisionTaskCompleted` 動作並傳遞 `[ContinueAsNewWorkflowExecution](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_ContinueAsNewWorkflowExecutionDecisionAttributes.html)` 決策，以邏輯方式將它當做新的執行繼續。這對歷史記錄會隨著時間成長變大之長期執行的工作流程執行，是很有用的策略。

最後，您可以直接從 Amazon SWF 主控台或以程式設計方式使用 `[TerminateWorkflowExecution](https://docs.aws.amazon.com/amazonswf/latest/apireference/API_TerminateWorkflowExecution.html)` API 終止工作流程執行。終止會強制關閉工作流程執行。取消優於終止，因為您的決策者可管理工作流程執行的關閉。

如果執行超過特定服務定義的限制，Amazon SWF 會終止工作流程執行。如果父工作流程已終止，且適用的子政策指出也應終止子工作流程，則 Amazon SWF 會終止子工作流程。