学习目标

 
  1. 理解出库场景中单条出库明细出库时的实现逻辑和多条出库明细一起出库时实现逻辑的区别。
  2. 利用子流程实现批量数据处理,即多条数据执行同一个逻辑,需要根据每条数据的内容分别做判断和处理。
 
 

场景案例

 
为了支撑公司日益增长的活动规模,MEGA公司决定对活动物料管理进行数字化改造。他们希望实现物料的出入库管理,具体需求包含:
 
  1. 领用出库:工作人员发起领用单,每次一般只领用一种物料,确认出库后,系统自动扣减库存,更新领用单状态为已出库。
  2. 采购入库:后勤人员会批量采购补货,每次采购多种物料,即一条采购单上有多种物料采购明细,确认入库后,系统自动、批量地更新所有相关物料的库存,并将采购单状态标记为已入库。
 
 

操作指南

 
 

领用出库(每次一种物品)

 
 

工作流设计

  1. 添加确认出库按钮,进入工作流配置页面。
我们需要更新物料库存表的库存数量,但是在当前工作流画布上,并没有物料库存这个数据对象,所以我们需要使用【获取单条数据】节点先获取到它。 领用单直接关联了单条物料库存,所以我们可以通过获取关联记录的方式直接获取到物料库存这个数据对象。
 
 
 
 
  1. 添加更新记录节点,更新物料库存表的库存数量字段减少领用数量。
 
 
 
 
  1. 将领用单的出库状态更新为已出库。
 
 
 
 

实现效果

 
点击确认出库按钮,库存数量会减去领用数量,出库状态会更新为已出库
 
 
 
 

采购入库(一条采购单上有多条采购明细)

 
在一个采购单中,采购员点击【确认入库】按钮后,需要分别更新采购明细中每种物料的库存数量。由于每条明细的入库数量可能不同,无法通过一个更新节点一次性完成所有库存更新,这时就需要引入一个新的节点——【子流程】。
 
 

子流程原理

 
当我们对一个采购单执行【确认入库】时,本质上要做的是:
逐条读取采购明细,找到每条明细对应的物料库存记录,然后把该物料的库存数量 加上入库数量
 
可以看到,每条采购明细的处理和判断逻辑都是相同的:
 
找到对应的物料库存 → 库存数量 + 入库数量
 
因此,我们可以把这一套“更新库存”的通用逻辑封装成一个子流程,再把多条采购明细作为子流程的数据源。
 
当执行【确认入库】主流程时,系统会将这批采购明细拆开处理:
每条采购明细单独进入一次库存更新子流程,子流程会被重复执行多次。
例如:一个采购单有 10 条明细,采购员点击一次【确认入库】,库存更新子流程就会执行 10 次,每次处理一条明细数据。
 
 
下面这张图解释了子流程的原理:
当主流程一次拿到一批数据(a1…an)且每条都要执行相同的逻辑时,可以把这段逻辑封装成一个子流程。主流程只负责把多条数据传给子流程,子流程则被重复调用 n 次,每次只处理一条记录。这样就实现了“一批数据、同一逻辑、多次调用”。

工作流配置

 
  1. 进入确认入库工作流配置界面,因为一条采购单上有多条采购明细,所以选择获取多条数据,通过获取关联记录,获取采购单关联的多条采购明细。
 
 
 
 
  1. 将获取的多条采购明细作为子流程的数据源,多条采购明细之间并无严格的先后顺序要求,所以选择并行的方式,执行效率更高。
 
 
 
 
  1. 每次进入子流程的数据源为单条采购明细,在子流程内部,通过获取单条数据-获取关联记录节点,可以获取到采购明细关联的物料。
 
 
 
 
  1. 更新物料库存数量,在原有库存数量基础上加上采购数量
 
 
 
 
  1. 在子流程外(即确认入库主流程),将入库状态更新为已入库
 
 
 
 

实现效果

 
该条采购单下有4个采购明细,点击确认入库后,库存数量分别增加对应的采购数量,入库状态更新为已入库。
 
 
 
 

动手练习

 
现在,请点击页面上方“打开教学应用”按钮,进入本课程专属的实操应用,开始动手操作吧!