Flowable中的四种核心流程控制模式:会签、或签、分支与并行
Flowable中文文档:https://flowable.me
在业务流程管理(BPM)领域,Flowable 作为一个轻量级且功能强大的开源流程引擎,广泛应用于企业流程自动化。Flowable 提供了多种流程控制模式,帮助开发者设计复杂的业务逻辑。本文将深入探讨 Flowable 中的四种核心流程控制模式:会签、或签、分支和并行,并结合实际场景说明其应用。
1. 会签(Multi-Instance Task with Sequential or Parallel Execution)
定义
会签是指一个任务需要多个参与者共同完成,且通常要求所有参与者都完成任务后,流程才能继续向下执行。在 Flowable 中,会签通过**多实例任务(Multi-Instance Task)**实现,可以配置为顺序执行(Sequential)或并行执行(Parallel)。
实现方式
在 BPMN 2.0 模型中,会签任务通过在用户任务(User Task)上添加多实例属性来定义。关键属性包括:
- 集合(Collection):指定参与者的列表(如用户 ID 列表)。
- 元素变量(Element Variable):每个实例对应的变量。
- 完成条件(Completion Condition):定义任务完成的条件,例如所有实例完成(nrOfCompletedInstances == nrOfInstances)或部分完成(如 50% 同意)。
示例场景
假设一个合同审批流程,需要三位部门经理全部同意才能通过:
- 配置一个会签任务,参与者列表为 [manager1, manager2, manager3]。
- 设置完成条件为所有实例完成。
- 如果选择顺序执行,manager1 审批后流转到 manager2,再到 manager3;如果选择并行执行,三人同时收到任务。
应用
会签适用于需要多人一致同意的场景,如财务审批、合同签署等。
2. 或签(Inclusive Gateway)
定义
或签是指流程根据条件选择性地执行多个分支中的一个或多个路径。在 Flowable 中,或签通过**包容网关(Inclusive Gateway)**实现,允许多个分支条件同时满足时并行执行。
实现方式
在 BPMN 模型中,包容网关用一个圆圈加内部"圆点"表示(◉)。每个分支需要定义条件表达式(Condition Expression),流程引擎会根据变量值决定哪些分支被激活。
示例场景
假设一个订单处理流程:
- 如果订单金额 > 1000 元,需要财务审核。
- 如果订单涉及特殊商品,需要法务审核。
- 如果金额 > 1000 元且是特殊商品,则两个审核并行执行。
在模型中:
- 从包容网关分出两条路径,分别设置条件 ${amount > 1000} 和 ${isSpecialItem}。
- 流程根据变量动态选择执行路径。
应用
或签适用于需要动态决策且可能同时触发多个分支的场景,如多条件审批或复杂业务规则。
3. 分支(Exclusive Gateway)
定义
分支是指流程根据条件从多个路径中选择唯一一条继续执行。在 Flowable 中,分支通过**排他网关(Exclusive Gateway)**实现,也称为 XOR 网关。
实现方式
排他网关用一个圆圈加内部"X"表示(✗)。每个分支设置条件表达式,流程引擎只会选择第一个条件为真的路径执行。如果没有条件满足,通常需要设置一个默认路径(Default Flow)。
示例场景
假设一个请假审批流程:
- 如果请假天数 ≤ 3 天,直接通过。
- 如果请假天数 > 3 天,转交经理审批。
在模型中:
- 从排他网关分出两条路径,条件分别为 ${days <= 3} 和 ${days > 3}。
- 如果未设置默认路径且条件都不满足,流程会抛出异常。
应用
分支适用于互斥选择的场景,如简单决策点或单一路由选择。
4. 并行(Parallel Gateway)
定义
并行是指多个任务或子流程同时执行,彼此独立,互不干扰。在 Flowable 中,并行通过**并行网关(Parallel Gateway)**实现,通常用于分解复杂任务。
实现方式
并行网关用一个圆圈加内部"+"表示(➕)。进入并行网关后,流程会分裂为多个分支;所有分支完成后,通过另一个并行网关合并(Synchronization)。
示例场景
假设一个产品发布流程:
- 任务 1:开发团队完成代码。
- 任务 2:营销团队准备宣传材料。
- 两个任务并行执行,完成后才能进入发布阶段。
在模型中:
- 使用并行网关分裂流程,分别流向开发任务和营销任务。
- 使用另一个并行网关合并,等待所有分支完成。
应用
并行适用于需要同时处理多个独立任务的场景,如项目管理中的多团队协作。
四种模式的对比
模式 | 核心特点 | BPMN 元素 | 典型场景 |
---|---|---|---|
会签 | 多人参与,需满足完成条件 | 多实例任务 | 多方审批一致 |
或签 | 多分支可选,可并行执行 | 包容网关 | 动态多条件决策 |
分支 | 单分支选择,互斥执行 | 排他网关 | 简单条件路由 |
并行 | 多任务同时执行,需同步合并 | 并行网关 | 独立任务协作 |
总结
Flowable 的会签、或签、分支和并行模式为开发者提供了灵活的流程控制能力,能够满足从简单决策到复杂协作的各种业务需求。理解这些模式的核心特性和适用场景,可以帮助我们设计更高效、可维护的流程模型。在实际开发中,建议结合业务需求和 BPMN 标准,合理选择和组合这些控制模式,以实现最佳的流程自动化效果。
希望这篇博客能为你理解 Flowable 的流程控制提供帮助!如果有更多问题,欢迎留言讨论。
想深入了解 Flowable 的更多细节和最佳实践,请访问Flowable 中文博客
更多推荐
所有评论(0)