子流程
1. 简介
1.1 功能简介
当我们的业务流程非常复杂时,可以将流程拆分为一条父流程线和一条或多条子流程线去执行。当父流程进行到一部分后便开始进入子流程审批流转,子流程流转完成后又回到父流程里完成整个业务的验收。
1.2 使用场景
如,销售退货场景中,一个订单发起退货后需要进行派单取货,再进行退货入库,当商品完成入库后才执行最终的财务退款操作,那么我们就可以将退货派单入库这一部分业务拆分到子流程里去处理。当子流程完成入库操作以后,回到父流程里进行财务退款审批,完成最终的退货退款流程。
1.3 预期效果
2. 设置步骤
2.1 子流程添加
在设计流程的时候,如果有子流程的使用需求,可以选择子流程作为流程节点添加到流程中来。(子流程为另一个流程表单中的流程)。如下图所示:
注:
1)若应用内无另外的流程表单,子流程表单下拉框会显示「没有可选择的数据」。
2)应用内其它所有已启用的流程表单都可以被选择为子流程表单。
2.2 子流程发起人
由于子流程是自动发起的,选择完作为子流程流转的表单后,需要设置子流程的流程发起人。流程发起人可以是父流程的流程发起人、固定的某个成员、动态的成员字段等。
- 若发起人为多个,则创建多个子流程,每个子流程对应一个发起人。所有子流程都流转结束后,即父流程的子流程节点处理完成。
2.3 数据传递规则
添加好子流程后需要设置数据传递规则,即父流程流转到子流程时,可以将全部或部分数据传递到子流程中,在子流程流转过程中只需要填写其流程中的部分数据即可。当子流程流转完成后,可以将子流程的部分重要数据传递到父流程中,可以作为后续审批人员的数据参考。
1)父流程 >> 子流程
首先,我们设置父流程到子流程的数据传递规则。如销售退货场景中,将退货明细传递到子流程中,方便取货员完成产品的确认及数量的校对。
2) 子流程 >> 父流程
设置好父子流程的传递规则后,还可以设置子流程到父流程的传递规则。如产品入库后把是否入库及入库时间等数据再传递到父流程中,财务即可根据是否完成入库来进行退款操作。
注:
1)父子流程间的数据传递,不触发公式、联动;
2)仅流程状态为「流转完成」的子流程数据可以传递到父流程中,「手动结束」的子流程数据无法传递到父流程中。
2.4 字段赋值规则
目前父子流程的数据赋值规则仅支持【主-主】和【子-子】两种赋值关系。
- 【主-主】:即主表单字段使用主表单字段进行赋值。
- 【子-子】:即子表单子字段使用子表单子字段进行赋值。
2.4.1 主表字段赋值规则
父子流程中的【主-主】赋值规则,同智能助手中【主-主】间的赋值规则:参考文档。
2.4.2 子表字段赋值规则
仅在父流程 → 子流程的数据传递中,支持父流程.子表字段对子流程.子表字段进行赋值。即,由子流程 → 父流程传递数据时是不支持使用子表单子字段进行赋值的。
- 子流程中的同一个子表单的不同子字段,仅可使用父流程中的同一个子表单中的子字段进行赋值。
- 子流程中如果有多个子表单,每个子表单中的子字段必须使用父流程中的同一个子表单中的子字段进行赋值。
2.5 父子流程流转规则
通过设置父流程到子流程的「流转规则」可以规定父子流程间同步或异步的流转关系,并设定子流程的类型。
流转规则 | 流转关系说明 | 对应子流程类型 |
子流程发起后进入下一节点 | 异步流转:父流程的流转状态不受子流程的影响,即流程流转到子流程后,父流程继续往下流转 | 异步子流程 |
子流程结束后进入下一节点 | 同步流转:父流程在子流程流转结束后才会继续往下流转(子流程流转结束包含流转状态为流转完成和手动结束) | 同步子流程 |
默认选择同步,即子流程结束后方才流转到父流程中的下一节点继续审批。
2.6 开启自动提交
若开启了子流程发起后自动提交,则自动为发起人创建子流程,不需要发起人再处理,直接跳过发起节点,进入后续审批节点。
若未开启,则仅创建子流程表单数据,为发起人创建一条待办流程,停留在发起节点,子流程的发起人需要手动提交流程。
2.7 效果演示
1)在父流程里提交一条数据,并进行流程的审批。审批通过后,即可进入子流程中完成子流程的相关审批操作。同时,父流程的 流程动态 中,子流程的处理状态为「进行中」。
2)在子流程中进行流程的审批,子流程中可以看到从父流程传递过来的部分数据。
3)完成子流程的相关审批后,子流程流转完成,处理状态变更为「流转完成」。流程接着又会流转到父流程中来,并按照设置好的子>父传递规则,将子流程部分数据到父流程中。
4)最后,对父流程剩余节点一一审批即完成整个业务流程的流转。
3. 注意事项
3.1 通用说明
1)单个父流程内最多允许添加 10 个子流程节点。
2)父流程的流转图中无法查看子流程中当前进行中的节点及负责人。
3)父流程的流程日志中可以查看子流程的处理情况。
4)异步子流程节点流转时可以单独触发一次智能助手,触发动作为修改数据,且执行人为空,详情参见:异步子流程变动导致的智能助手触发问题排查 。
5)异步子流程属于系统自动流转的节点,在流程设定时禁止异步子流程成环、异步子流程与插件节点成环。
6)若流程表单的流程设定为「流程发起节点 >> 子流程 >> 剩余节点」,通过数据管理、智能助手、数据工厂或 API 导入发起流程 时,或者是通过父流程发起该流程时,所有流程都会停留在发起节点。
3.2 嵌套/循环校验
若流程设计中包含子流程,系统会在保存/启用流程时,同时对历史版本以及启用中版本进行嵌套、循环校验。若校验失败,则无法成功启用流程,并报错。具体如下:
- 子流程表单设置嵌套超过三层
子流程中还可以继续设置子流程,但子流程向下套嵌的层级最多为 3 层。例如,A——>B——>C——>D 中,算三层,即 B 是 A 的子流程,C 是 B 的子流程,D 是 C 的子流程。此时在 D 的流程中再添加子流程,则超过 3 层。
- 子流程表单设置出现循环
子流程设置不支持成环。在设计子流程时,若两个流程表单互为子流程,则会形成循环。例如,A(父流程)——>B ——>A(子流程),A 作为父流程,然后又间接构成了自己的子流程,形成了循环。
遇到报错时,可点击「查看嵌套/循环关系」按钮,查看子流程表单间的嵌套链路/循环关系,并可直接跳转至对应表单,调整相关子流程节点的设计。以嵌套关系为例,如下图所示:
注:每个节点中,最多支持展示 50 个(在当前表单的所有「历史/启用中」版本内,子流程表单为下一节点表单的)子流程节点。