会签、或签、依次审批

来源:https://cloud.iocoder.cn/bpm/multi-instance/

相关视频:

支持多人审批,包括:

1. 多人审批

1. 会签(并行会签)

会签配置

实现原理:

疑问:nrOfCompletedInstancesnrOfInstances 表示什么意思?

因此,${ nrOfCompletedInstances >= nrOfInstances } 就是,“已完成”大于“总的”数量,即所有人都审批通过。

:::

2. 或签(并行或签)

或签配置

实现原理:

因此,会签和或签的差异,就在于完成条件的不同。

3. 依次审批

依次审批配置

实现原理:

因此,依次审批和会签的差异,就在于是否并行审批。


按照这个思路,实现“票签”,是不是很简单?!

友情提示:什么是“票签”?

指同一个审批节点设置多个人,如 A、B、C 三人,当通过比例大于 50% 就能进入下一个节点。

:::

2. 实现原理

《选择审批人、发起人自选》 小节中,我们看到使用 BpmUserTaskActivityBehavior 实现了审批任务的审批人分配。实际上,还有两个 Behavior 类,如下图所示:

图片纠错:最新版本将 yudao-module-bpm-biz 子模块,重命名为 yudao-module-bpm-server 子模块,更好表达它是一个服务

Behavior 类图

2.1 并行 BpmParallelMultiInstanceBehavior

① BpmParallelMultiInstanceBehavior 实现 Flowable ParallelMultiInstanceBehavior 类,实现单节点多任务的审批人 “计算”。如下图所示:

BpmParallelMultiInstanceBehavior

② BpmUserTaskActivityBehavior,判断是多实例的情况,则复用 BpmParallelMultiInstanceBehavior “计算”结果,直接设置审批人。如下图所示:

BpmUserTaskActivityBehavior

所以,先是 BpmParallelMultiInstanceBehavior 计算审批任务数量 + 审批人列表,然后 BpmUserTaskActivityBehavior 直接设置审批人。

2.2 顺序 BpmSequentialMultiInstanceBehavior

① BpmSequentialMultiInstanceBehavior 实现 Flowable SequentialMultiInstanceBehavior 类,实现单节点多任务的审批人 “计算”。如下图所示:

BpmSequentialMultiInstanceBehavior

② 还是使用 BpmUserTaskActivityBehavior,逻辑是一模一样的。

所以,BpmSequentialMultiInstanceBehavior 和 BpmParallelMultiInstanceBehavior 基本是一致的,差异只是前者返回的是 LinkedHashSet 有序集合。最终,还是交给 Flowable 到底是一次性创建多个审批任务,还是按照顺序创建多个审批任务。