了解活动状态模型

活动在其生存期内可以有六种状态。 这些状态分别为 InitializedExecutingCancelingClosedCompensatingFaulting

Initialized 状态期间,将为活动创建 ActivityExecutionContext,并将执行特定于该活动的其他初始化详细信息。 例如,某些 Windows Workflow Foundation 活动(如 SuspendActivity)会在初始化期间检查其是否具有父级复合活动。

当某个活动进入 Executing 状态时,将会执行该活动的主要功能。

活动的 Canceling 状态可以由父活动显式置入,也可以因为在执行该活动期间引发异常而置入。

Closed 状态是活动的最后和最终状态。 需要注意的一个问题是,如果某活动成功完成,但根据业务逻辑随后必须经过 Compensating 活动。 因此,该活动将会从 Closed 转换到 Compensating,然后在完成补偿逻辑后转换回 Closed。 有关补偿的更多信息,请参见在工作流中使用补偿使用 CompensateActivity 活动

如果在活动的 Executing 状态、Canceling 状态或 Compensating 状态期间引发异常,活动将转换到 Faulting 状态。

下面的流程图演示了活动如何在各种活动状态之间转换。

活动状态模型关系图

红色实线表示工作流运行时引擎负责将活动从 Initialized 状态转换到 Executing 状态,或从 Closed 状态转换到 Compensating 状态。

黄色实线表示父活动负责将子活动从 Executing 状态转换到 Closed 状态。 如果您创建自定义复合活动,则必须亲自进行处理。

蓝色实线表示工作流运行时引擎负责将活动从 ExecutingCancelingCompensating 状态转换到 Faulting 状态。

黄色虚线表示工作流运行时引擎负责将活动从 Canceling 状态、Compensating 状态或 Faulting 状态转换到 Closed 状态。

备注

活动不能从 Closed 状态转换到 Executing 状态。 如果试图进行转换,将会在调用 Execute 时引发异常。

仅当所有子活动都处于 ClosedInitialized 状态时,才能关闭活动。 由于这是一条递归规则,因此意味着试图关闭的活动下面的整个树必须为 ClosedInitialized 状态,调用才会成功。

请参见

概念

了解活动执行上下文

其他资源

Windows Workflow Foundation 活动

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。