1 功能简介

嵌入式子流程最常见的子流程,整个子流程都会被完整地定义在主流程中,主要用于封装复杂逻辑(例如多部门并行内部流转审批),提升流程图的可读性和可维护性。(V7.4.0及后续版本支持)

嵌入式子流程主要具备如下特性:
(1)内嵌和不可复用:完全内嵌于主流程,无法被外部流程独立调用或复用,例如合同评审子流程仅服务于特定主流程,无法被其他流程直接引用;
(2)逻辑封装和分层设计:可实现局部逻辑隔离,例如合同评审子流程将部门内部评审的多个环节审批任务聚合,实现部门内部流转;
(3)完成条件可配置:可控制子流程的完成逻辑,例如当并行子流程中50%的任务完成时即可流转到下一步;
(4)并行处理能力:支持多实例并行,可根据集合list实现动态生成不定个数的并行子流程,例如根据传入的需要评审的部门数来生成多个并行的部门内部评审子流程。

2 子流程绘制

嵌入式子流程拖拽至绘制区域表现为一个方形容器,子流程的流程图设计需要在容器内部进行绘制,可以通过拉动左上角或右下角进行大小的调整,如下图所示。

嵌入式子流程内部设计规范:
(1)嵌入式子流程必须包含一个开始事件(有且只有一个),且至少有一个结束节点;
(2)与主流程不同,子流程无需配置发起人任务节点,可以直接在开始事件后配置其他类型任务;
(3)顺序流(即流转线)不能跨子流程容器边界。

例如我们设计一个子流程为部门内部流转,需经过部门经办人和部门主管审批,就可以如下图所示进行绘制。

3 子流程配置项说明

根据应用场景不同,嵌入式子流程可以选择的响应方式可以选择“单实例”或“多实例并行”。

(1)单实例

“单实例”的意思就是主流程流转至子流程时仅能产生一个子流程,大部分情况下可能会考虑直接把子流程与主流程绘制在一起,但是在复杂流程图的情况下可能会导致流程图可读性不佳。

因此设计者在单实例场景下应用子流程的意图,一般是用于简化流程图,或突出子流程的业务过程,方便自己和流程使用者查看和理解流程图。

这种响应方式下,只需保证流程图内部节点和流转逻辑配置正确,注明子流程的名称(在流程图中方便理解业务),无需额外的配置,配置界面如下。

  • 【名称】子流程的名称,配置后显示在子流程容器的左上角。
  • 【描述】供设计人员在流程图设计界面参考的节点备注信息。

(2)多实例并行

“多实例并行”是更为常用的子流程用法,一般用于固定或不定个数的并行子流程业务,这类业务如果直接在主流程中是无法绘制的。

“多实例并行”方式下的子流程相比“单实例”目前需要额外配置【集合】和【完成条件】

  • 【集合】多实例并行场景下,集合的作用有两个:1、用于配置具体发起的子流程个数;2、用于为子流程的独立循环变量loopVariable赋值。
  • 【完成条件】用户配置多实例子流程完成条件。

【集合】

“集合”支持“手动添加”或“自定义(表达式)”两种配置方式:

(1)手动添加
一般应用于需要发起的子流程个数固定的业务场景,例如相同的流程可以确定在指定的三个部门发起内部流转,就可以如下图配置。

流程流经子流程时会自动将三个部门的编码赋值给变量loopVariable,子流程内部节点的响应人便可根据变量loopVariable的值将响应人设置为各自部门的经办人和部门经理,便可实现固定发起三个部门内部流转的子流程。

(2)自定义表达式
如果需要发起的子流程的数量不定,可能来源于表单字段值或其他流程变量值,则可以通过表达式来配置集合。

对集合的表达式最后返回值的格式须符合以下格式:如需要发起3个子流程则需要返回 ['字符串1','字符串2','字符串3'],同样逗号分割的字符串也会分别赋值给变量loopVariable,可以在子流程的流转中加以利用。

【完成条件】

可以用于配置多实例并行时子流程的完成条件,例如当并行子流程中50%的子流程结束即可流转到下一步。

默认完成条件是多个并行子流程全部结束。

当使用自定义条件时,条件表达式返回true时,结束子流程,流程得以向下流转。

流程引擎提供了以下变量可以使用:
nrOfInstances(总实例数)
nrOfCompletedInstances(已完成实例数)
nrOfActiveInstances(未完成实例数)

例如超过一半实例完成就可以向下流转则可以表示成${nrOfCompletedInstances/nrOfInstances>0.5}

4 执行效果

(1)流转记录
涉及多实例并行的子流程,在流转记录中体现为不同的子流程可以单独点开进行查看流程进度。(绿色的表示已结束,黄色的表示还在办理中)

(2)流程图
涉及多实例并行的子流程,在流程图上可以切换不同的子流程查看各自的进度。当子流程未完成时外框将显示为绿色,当子流程满足完成条件向后流转时外框显示为蓝色。

作者:Eric  创建时间:2025-03-14 09:01
最后编辑:Eric  更新时间:2025-04-24 13:55