场景:一个计划安排,包含多个子订单。
需求:需要在订单列表页面,从其中选择所需要的部分订单,直接生成计划
局限:由于选中的订单,如果执行工作流,则是每一个订单,独立运行自己的工作流,我需要,一次选择多条记录,则获取本次所选中的订单记录。
解决方式:
-
添加临时表:本次批量选中(临时表)
![image.png]()
用来记录:本次选中的唯一值(日期时间),本次选中的数量 -
订单表添加两个字段:
一个是时间,一个是文本组合,指向这个时间
![image.png]()
![image.png]()
添加一个“自定义动作”【生成计划】,进行设置如下:
![image.png]()
并且执行工作流:工作流的大概如下图:
![image.png]()
![image.png]()
![image.png]()
工作流思路:
A、根据订单中的字段“计划生成日期-文本”,去【本次批量选中(临时表)】中查找,如果找不到,则新增,如果找到了,则将“本次选中数量”+1
B、统计,订单工作表中,“计划生成日期-文本”等于 工作流中,当前“计划生成日期-文本”的统计条数
C、订单中“计划生成日期-文本”统计的条数==【本次批量选中(临时表)】中“本次选中数量”时,则说明,已经选中了最后一条记录,就可以针对这些订单,来统一生成一个计划,最后计划生成完,则删除【本次批量选中(临时表)】记录
最终效果:









不用了,工作流里面加了线程休眠,后台看到工作流确实在排队消费,没问题了。![微信图片_20221116154654.png]()
方便的话,你创建一个测试应用,把我拉进去,我看看
看了眼日志,还是感觉不靠谱呀![微信图片_20221116145301.png]()
自己测试了下居然成功了,之前 7 月份做新增记录触发的工作流时,设置串行,但是多条记录同时新增时,工作流并没有串行去执行,现在居然成功了 😕
按钮工作流设置串行没用呀,批量操作还是多条并发执行的。按照你这个思路,A 线程和 B 线程,A 线程正在执行临时表 +1 操作,B 线程正在统计数据条数,然后 AB 线程分支判断时都满足相等条件,导致重复创建表单。
666,确实,,系统里面很多业务场景都需要这样处理,如果能提供获取批量选中的记录集,就更好了。
对于这种情况,现有方案还是有小概率问题的,因为【本次批量选中(临时表)】中唯一值,可能存在重复,存在重复那么获取的选中值就不一定准确,现在只能精准细化来控制唯一值字段。
比如:往临时表中,添加“操作人”,添加“业务类型”,来获取本次唯一值,并且锁定选中的记录。用来判断:同一时间、同一个操作人、同一个业务下,唯一,这样选中的数量才更加准确。
做 erp 的应用,很多场景下需要这样去操作数据,勾选一堆订单抛转生成一个出货单,勾选一堆库存明细抛转生成一个请购单,类似这样的场景很多(传统 erp 里的下推操作)。现在的自定义动作是针对单个记录的动作,我有个建议是搞个针对视图的自定义动作,在触发的工作流里可以获取到勾选的记录集。
收藏,以前还不知道填写动作可以影响所有被勾选的记录
思路二,供探讨
已收藏,举一反三的例子。