在Activiti工作流引擎中,流程从一个节点流转到另一个节点是通过执行路径(Execution)的概念来管理的。流程节点可以是任务(用户任务或自动任务)、网关(决策节点)、事件(开始事件、结束事件等)等。流程的流转遵循BPMN模型中定义的路径,这些路径由顺序流(Sequence Flows)表示。流程的流转机制包括几个关键步骤:

1. 执行路径的创建

  • 当流程实例启动时,Activiti创建一个执行路径(Execution)来代表这个流程实例。这个执行路径跟踪流程中当前的活动节点。

2. 节点的执行

  • 对于任务节点,如用户任务或服务任务,执行路径等待任务的完成。对于用户任务,这通常涉及用户输入或决策;对于服务任务,则可能是自动执行的业务逻辑。
  • 对于网关,根据条件评估的结果,执行路径可能会分叉或合并。
  • 事件节点,如开始事件和结束事件,标志着流程的开始和结束。中间事件可能会在流程执行中发生,影响执行路径。

3. 顺序流的评估

  • 每个节点可以通过顺序流连接到一个或多个其他节点。当一个节点执行完成后,Activiti评估从该节点出发的顺序流。
  • 对于网关,特别是排他网关(Exclusive Gateway),可能有多个出口顺序流,但只有一个会被选中,基于定义的条件表达式评估结果。
  • 顺序流可以有条件表达式。当执行到达具有条件的顺序流时,Activiti会评估这些条件,只有满足条件的顺序流会被选择用于进一步的执行。

4. 节点流转的触发

  • 一旦确定了顺序流的方向,执行路径会更新,指向新的当前活动节点。
  • 如果顺序流指向一个任务节点,那么对应的任务会被创建并等待完成。
  • 如果顺序流指向一个网关或事件,Activiti会根据网关的类型或事件的配置来决定下一步操作。

5. 循环和并行执行

  • 循环流转可以通过循环任务或循环顺序流实现,根据条件重复执行特定的节点。
  • 并行执行通过并行网关实现,允许多个执行路径同时进行,每个路径代表流程的一个并行分支。

6. 流程的终结

  • 当执行路径到达一个结束事件时,当前流程实例的执行被标记为完成。
  • 如果流程有多个并行执行路径,所有路径都必须到达结束状态,整个流程实例才会结束。

Activiti通过执行路径和顺序流的概念,结合BPMN模型中定义的节点和流向信息,实现了流程从一个节点到另一个节点的流转。这种机制允许复杂的流程逻辑被有效地执行和管理。

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3