← 审批流 · 把签字流程做成引擎 / 并行会签:or 签 / 会签 / 阈值 待审核 2 / 3
countersign · 并行会签

并行会签:or 签 / 会签 / 阈值

串行是排队,并行是同一张单同时摆到几个人面前。问题立刻来了:三个人投票,到底几票算过?这就是归并策略 (quorum)——把多个子结果归并成一个父结果:any(一票通过)、all(全票通过)、N-of-M(多数通过)。下面你亲自扮演财务、法务、HR 三位审批人逐个投票,实时看不同策略何时判定通过 / 否决,以及一旦定局,其余人的待办怎么自动结束

1 · 三种策略,一句话区分

策略 通过条件 否决条件 典型场景
any 或签 ≥ 1 票通过 全部驳回 「任一值班经理批了即可放行」
all 会签 全部通过 ≥ 1 票驳回 「财务 + 法务 + HR 都点头才能签合同」
N-of-M 阈值 ≥ N 票通过 驳回数 > M−N(凑不够 N 了) 「5 位委员里 3 人同意即过」

定局即结束 (short-circuit)。 or 签里只要有人先批,其余人的待办立即作废(无需再投);会签里只要有人先拒,其余人也不必再看。流程引擎要主动撤销 (cancel) 这些 pending 任务——否则它们会成为永远处理不掉的「僵尸待办」。

进阶:动态会签 / 多实例 (multi-instance)。 上面会签人是写死的三个。真实场景常是「所有部门经理会签」——人数运行时才定,节点动态展开成 n 个并行子任务,再按 all / any / N-of-M 归并。这正是把「一个节点」摊成「一组节点」,归并逻辑完全复用。