
BPEL 流程实例的状态过渡图
这些图中使用的约定
| 符号 | 说明 |
|---|---|
![]() |
瞬态状态。 这些状态不可视。 |
![]() |
持久状态。 |
![]() |
瞬态结束状态。 |
![]() |
持久结束状态。 |
![]() |
由业务流程管理器自动触发的状态过渡。 |
![]() |
由使用 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 属性,那么可以自动删除该进程,也可以通过显式删除请求来触发该进程。







This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-01-20 10:38