学习目标
-
学会通过“自定义动作--批量数据源”实现多条数据在单一流程实例中的集中处理,避免逐条重复触发流程。
-
掌握流程参数赋值的用法,学会把主流程某条记录的唯一标识(如记录 ID)传给子流程的流程参数,从而在子流程中精准获取这条记录。
-
理解并运用子流程串行执行与“查找结果分支”(有则更新、无则新增)实现数据的条件归组与差异化处理。
场景案例
为了保障活动顺利进行,MEGA 公司需要为员工及其来访嘉宾提供统一订餐服务,。员工可以在系统中提交自己的订餐需求,填写餐别、份数等信息,部分员工可能有嘉宾或客户陪同用餐,因此会出现多份订餐的情况。每天中午由后勤人员统一向供应商提供订餐单。为提升订餐效率与准确性,MEGA公司希望实现:
-
后勤人员可一次性勾选多条订餐需求记录,并通过按钮操作,将其自动合并为一条订餐单,避免手工汇总。
-
订餐单中自动生成对应的订餐明细:系统根据套餐类型对需求进行归组,将相同套餐的份数汇总为一条明细。例如:张三 2 份、李四 2 份均为“套餐 A”,则合并为“套餐 A — 4 份”。
-
订餐单需自动回写关联到各订餐需求,使员工可实时查看自身订餐的处理状态与进度。
操作指南
需求分析
合并生成一条订餐单
在订餐需求表单上配置自定义动作按钮【合并订单】,勾选多条记录,点击按钮执行流程,目的为选中多条订单需求记录,进入工作流。
无其他设置的前提下,默认是分别运行多次流程,多个流程实例,每个流程实例中新增订餐单的话,容易重复;如果能让这多条记录在单一流程示例中运行,就可以实现只新增一次订餐单。
因此选择在主流程中先新增一条订餐单,配置子流程,将选中的多条订单需求记录进入子流程逐条执行,在子流程中生成对应的订餐单明细,继而关联上主流程中的唯一订餐单记录,即可实现“合并生成一条订餐单”
同套餐需求合并归组为一条订餐明细
在主流程成功创建一条订餐单后,需要根据不同套餐类型自动生成订餐明细。由于多个订餐需求可能选择相同套餐,因此需要将其进行归组和数量汇总。本场景中,通过 子流程串行逐条处理 + 查询结果分支(有则更新、无则新增) 来实现明细的自动归并。
|
订餐需求
|
需求人
|
套餐
|
需求数量
|
|
1
|
张三
|
套餐A
|
2
|
|
2
|
李四
|
套餐B
|
2
|
|
3
|
王五
|
套餐A
|
1
|
一共3条需求,其中张三与王五均选择“套餐 A”,需要在订餐单中归并为一条订餐明细,并将数量累加。
子流程逐条执行逻辑
这 3 条订餐需求作为数据源,将按顺序进入子流程,每一条的执行逻辑如下:
-
订餐需求1,即张三的需求进入子流程
查询订餐单下是否已存在“套餐 A”的明细
查询结果:不存在
操作:新增一条订餐明细,套餐为A,需求数量2
-
订餐需求2,李四的需求进入子流程:
查询是否存在“套餐 B”的明细
查询结果:不存在
操作:新增一条订餐明细,套餐为B,需求数量2
|
订餐明细
|
套餐
|
份数
|
|
1
|
套餐A
|
2
|
|
2
|
套餐B
|
2
|
-
订餐需求3,即王五的需求进入子流程:
查询是否存在“套餐 A”的明细
查询结果:已存在
操作:更新现有订餐明细的份数+王五的需求数量 =3
最终的订餐明细表为:
|
订餐明细
|
套餐
|
份数
|
|
1
|
套餐A
|
3
|
|
2
|
套餐B
|
2
|
通过子流程的逐条处理机制,搭配“查找结果分支”判断逻辑:
-
若该套餐的订餐明细不存在 → 创建新明细
-
若订餐明细已存在 → 对份数字段进行累加更新
实现“相同套餐自动归组、份数合并”的需求。
应用配置
设置自定义动作按钮
在订单需求表单上设置【合并订餐】的按钮,动作为执行工作流,数据源则是多条订餐需求记录。注意设置启用按钮的筛选条件——当订餐需求的状态为未下单时才能启用,以避免重复下单。
在工作流配置中,首先新增一条订餐单的记录,所选中的订餐需求信息将会合并到这张表单,并将订单状态设置为待确认。
在主流程中新增完订餐单后配置子流程,子流程的数据对象选择【订餐需求】,执行方式选择逐条执行 ,防止在按套餐合并归组订餐明细时并行计算导致数据出错。
子流程流程参数赋值
子流程增加流程参数,将主流程新增的订单表的记录ID或其他唯一值字段传入,目的是为了在子流程中能够根据这个唯一值字段找到对应的订餐单记录。
进入子流程配置,子流程的目的为生成订餐明细,合并相同套餐,汇总同类套餐的数量。
子流程中获取套餐表单和订餐单
在子流程中,唯一数据源为按钮选中的订单需求记录,而要生成的订餐明细中,需要具有套餐名称、单价等信息,并关联到主流程中唯一新增的订餐单。
因此需要先获取订餐需求的套餐信息,即获取订单需求关联的套餐表单。
根据在先设置的子流程参数,对订餐单的记录ID进行筛选,查询到主流程中新增的订餐单。
获取订餐明细,有则更新,无则新增
将套餐表单、订餐单获取完毕后,可以开始查询这个订餐单下是否已有和当前订餐需求的套餐相同的订餐明细——以套餐、订餐单为条件进行筛选。
若先前没有相关联的订餐明细,则选择未获取的数据时,在工作表中新增记录后执行,将新增的订餐明细记录关联到以上获取到的套餐表、订餐单,并填充具体的套餐信息如名称、单价等。
更新订餐明细的套餐需求数量
以上步骤获取或生成了订餐明细,对其中的套餐名称、单价进行填充,最后一步则是将相同套餐的需求数量合并。选择更新记录节点,对已有或新增的订餐明细份数进行增加,增加数量为子流程中订餐需求的需求数量。
主流程中更新订餐需求的状态
子流程已经将按钮选中的多条订餐需求合并为一条订餐单,回到主流程,因此将订餐需求的状态更新为已下单,并与对应的订餐单设置关联。
实现效果
动手练习
现在,请点击页面上方“打开教学应用”按钮,进入本课程专属的实操应用,开始动手操作吧!