项目: itcast0711 > cn.itcast.h_parallelGateWay
并行网关: 可以同时执行多个流程, 直到总流程的结束. 可以对流程进行分支和聚合, 注意: 这时的流程实例和执行对象是不一样的.
一. 设计流程图
含有并行网关的流程并没有比较复杂的属性配置(只需要配置id,name和任务办理人即可), 因为是并行的, 并没有流程走向的控制, 也就没有什么连线条件配置.
二. 流程(并行网关)部署启动后相关表数据变化
- 正在执行的执行对象表 act_ru_execution (3条数据, 并行分支数2+流程实例1)
- 流程实例的历史表 act_hi_procinst (1条数据)
- 正在执行的任务表 act_ru_task (2条数据, 并行分支数)
- 历史任务表 act_hi_taskinst (2)
- 历史活动节点表 act_hi_actinst (4, +并行网关)
三. 特殊情形,相关表分析
当其中一个并行分支优先完成(如: 发货->收货任务完成; 付款->收款还未完成)时, 相关表数据变化(无特殊变化的表略去)
- 正在执行的执行对象表 act_ru_execution (还是3条数据)
- 历史活动节点表 act_hi_actinst (7, 并行网关*2)
四. 当并行分支全部完成时, 相关表数据 变化
- 历史活动节点表 act_hi_actinst (9, 并行网关*3)
五. 总结
- 一个流程中流程实例只有1个,执行对象有多个
- 并行网关的功能是基于进入和外出的顺序流的:
分支(fork): 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支。
汇聚(join): 所有到达并行网关,在此等待的进入分支,直到所有进入顺序流的分支都到达以后, 流程就会通过汇聚网关。 - 如果同一个并行网关有多个进入和多个外出顺序流, 它就同时具有分支和汇聚功能。 这时,网关会先汇聚所有进入的顺序流,然后再切分成多个并行分支。
- 并行网关不会解析条件。 即使顺序流中定义了条件,也会被忽略。
- 并行网关不需要是“平衡的”(比如, 对应并行网关的进入和外出节点数目不一定相等)。如图中并行流程是合法的: