activiti第二天: 4. 并行网关(ParallelGateWay)

项目: itcast0711 > cn.itcast.h_parallelGateWay
并行网关: 可以同时执行多个流程, 直到总流程的结束. 可以对流程进行分支和聚合, 注意: 这时的流程实例和执行对象是不一样的.

一. 设计流程图

    含有并行网关的流程并没有比较复杂的属性配置(只需要配置id,name和任务办理人即可), 因为是并行的, 并没有流程走向的控制, 也就没有什么连线条件配置.
activiti第二天: 4. 并行网关(ParallelGateWay)_第1张图片

二. 流程(并行网关)部署启动后相关表数据变化

  • 正在执行的执行对象表 act_ru_execution (3条数据, 并行分支数2+流程实例1)
    activiti第二天: 4. 并行网关(ParallelGateWay)_第2张图片
  • 流程实例的历史表 act_hi_procinst (1条数据)
    activiti第二天: 4. 并行网关(ParallelGateWay)_第3张图片
  • 正在执行的任务表 act_ru_task (2条数据, 并行分支数)
    activiti第二天: 4. 并行网关(ParallelGateWay)_第4张图片
  • 历史任务表 act_hi_taskinst (2)
    activiti第二天: 4. 并行网关(ParallelGateWay)_第5张图片
  • 历史活动节点表 act_hi_actinst (4, +并行网关)
    activiti第二天: 4. 并行网关(ParallelGateWay)_第6张图片

三. 特殊情形,相关表分析

    当其中一个并行分支优先完成(如: 发货->收货任务完成; 付款->收款还未完成)时, 相关表数据变化(无特殊变化的表略去)

  • 正在执行的执行对象表 act_ru_execution (还是3条数据)

activiti第二天: 4. 并行网关(ParallelGateWay)_第7张图片

  • 历史活动节点表 act_hi_actinst (7, 并行网关*2)
    activiti第二天: 4. 并行网关(ParallelGateWay)_第8张图片

四. 当并行分支全部完成时, 相关表数据 变化

  • 历史活动节点表 act_hi_actinst (9, 并行网关*3)

activiti第二天: 4. 并行网关(ParallelGateWay)_第9张图片

五. 总结

  1. 一个流程中流程实例只有1个,执行对象有多个
  2. 并行网关的功能是基于进入和外出的顺序流的:
    分支(fork): 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。
    汇聚(join): 所有到达并行网关,在此等待的进入分支,直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。
  3. 如果同一个并行网关有多个进入和多个外出顺序流, 它就同时具有分支和汇聚功能。 这时,网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支
  4. 并行网关不会解析条件。 即使顺序流中定义了条件,也会被忽略。
  5. 并行网关不需要是“平衡的”(比如, 对应并行网关的进入和外出节点数目不一定相等)。如图中并行流程是合法的:
    activiti第二天: 4. 并行网关(ParallelGateWay)_第10张图片

你可能感兴趣的:(activiti,工作流)