本主题仅适用于 IBM Business Automation Workflow Advanced 配置。

BPEL 流程实例的状态过渡图

Draft comment:
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-01-20 10:38
在流程实例的生命周期内,每当发生重大事项时,流程都会更改状态。 例如,某个 API 请求使处于“正在运行”状态的流程进入“已暂挂”状态。 状态过渡图说明了流程生命周期内可能出现的状态过渡。 微流程和长时间运行的流程具有不同的状态过渡图。

这些图中使用的约定

图中的状态过渡由编号指示。 随后的支持文本对这些编号进行说明。 此外,这些图还包含下列类型的符号:
符号 说明
表示瞬态状态的符号。
瞬态状态。 这些状态不可视。
表示持久状态的符号。
持久状态。
表示瞬态结束状态的符号。
瞬态结束状态。
表示持久结束状态的符号。
持久结束状态。
表示自动触发的状态过渡的符号。
由业务流程管理器自动触发的状态过渡。
表示外部交互所产生的状态过渡的符号。
由使用 API 进行的外部交互引起的状态过渡。
表示由业务流程管理器或用户交互控制的状态过渡的符号。
由业务流程管理器控制的状态过渡,或者由使用 API 进行的外部交互引起的状态过渡。

微流程实例的状态过渡图

对于微流程而言,由于流程始终在一个事务中运行,并且不会持久存储实例信息以便用于流程实例导航,因此微流程被视为无状态。 但是,根据流程定义以及配置业务流程管理器的方式,可以在公共基本事件或审计日志中公布微流程的状态。

下图显示了微流程实例可以具有的状态。该图显示了微流程从运行状态到流程结束状态的状态和状态过渡。

流程实例正常启动后,它进入的第一个流程状态是“正在运行”状态 (1)。 流程实例正常运行至完成时,流程状态将从“正在运行”更改为“已完成”(2)。 如果某个故障到达流程边界,那么该流程将进入“即将失败”状态 (3)。 在故障处理程序运行期间,该流程将一直处于“即将失败”状态。 接着,该流程实例将进入“已失败”状态 (4)。

所有这些状态过渡都由业务流程管理器触发。 微流程启动后,您无法对这些自动步骤施加影响。

长时间运行的流程实例的状态过渡图

长时间运行的流程在多个事务中运行。 长时间运行的流程的状态将持久存储,因此可视。 下图说明了长时间运行的流程实例可能发生的状态过渡。
长时间运行的流程实例的状态和状态过渡。

“正在运行”、“已完成”、“即将失败”和“已失败”状态以及它们之间的状态过渡与微流程相同。

流程实例由外部请求或终止活动终止。 流程实例的终止可以跨多个导航步骤并因此跨多个链接的事务,例如,在终止长时间运行的活动或子流程时,情况即如此。 在此终止阶段期间,流程实例处于“即将终止”状态 (5) (14) (18)。 流程的所有长时间运行的部件终止后,流程实例的状态也将更改为“已终止”(6)。

如果子流程成功结束,但父流程后续失败,那么可以对该子流程进行补偿。 在补偿期间,该子流程将处于“正在补偿”状态 (7)。 如果补偿成功结束,那么该子流程将进入“已补偿”状态 (8)。 如果补偿不成功,那么该子流程将进入“补偿失败”状态 (9)。 这些状态事务由父流程自动启动。

如果流程实例的导航仍处于活动状态,即,该流程实例处于“正在运行”或“即将失败”状态,那么可以通过 API 请求将其暂挂。 接着,它可以在达到指定时间后重新激活,或者由恢复请求重新激活。 对于暂挂请求而言,流程状态将从“正在运行”或“即将失败”更改为“已暂挂”(11) (12);对于恢复请求而言,流程状态将从“已暂挂”更改为“正在运行”或“即将失败”(10) (13)。 此外,还可以将处于“已暂挂”状态的流程终止 (14)。 只能暂挂和恢复高级流程实例。 但是,暂挂或恢复状态将传播到子流程。

流程进入其中一种结束状态(即“已完成”、“已终止”或“已失败”状态)之后,可以通过重新启动 API 请求将其重新启动 (15) (16) (17)。 只能重新启动高级流程实例,但只能对子流程实例进行补偿。

当流程实例达到结束状态 (19) 时就可以将其删除。 如果相应地设置了 automatically delete on completion 属性,那么可以自动删除该进程,也可以通过显式删除请求来触发该进程。