

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

# 关闭 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 会终止子工作流。