“多子争权”算法 方棱Lv.7合道 发布于 2024-08-29 09:39 最后回复 2025-08-10 21:45:01 分享 收藏 复制链接 新浪微博 微信扫一扫 分享 15 回复1507 浏览 算法名称:多子争权。 功能目标:多条子记录被同时触发后,父记录只被触发一次。 子记录工作流:(见图 1) 01:获取父记录。 02:更新父记录的某字段:写入流程实例 ID。 03:等待几秒,让其他子记录来抢。 04:判断父记录的某字段还是不是自己的流程实例 ID。 05:若是,调用父记录的子流程。 06:若否,结束。 调试结果:搞定。(见图 2) [图片] [图片] 算法名称:多子争权。 功能目标:多条子记录被同时触发后,父记录只被触发一次。 子记录工作流:(见图 1) 01:获取父记录。 02:更新父记录的某字段:写入流程实例 ID。 03:等待几秒,让其他子记录来抢。 04:判断父记录的某字段还是不是自己的流程实例 ID。 05:若是,调用父记录的子流程。 06:若否,结束。 调试结果:搞定。(见图 2)
你的做法是第 1 个孩子争到权,我的做法是 10 秒内的最后 1 个孩子争到权,可以的。
我是这样设计,一旦有子项目进入这个流程,直接给相关的子项目判断值改为 1,其他项目就不会进入这个分支,只会进入一个空分支,跳到最后的结果
我一直在用,没出啥问题,你可以试试我的办法。
行吧,实践出真知,你用了就知道。
那你还是没有理解到
不是让你手动输入跑多少条。是让你汇总节点,汇总要进入子流程的数据数量;
每次进入工作流时被统计,每进一条,就在主流程数据就 +1,每次也检查和汇入的数据总量是否相等,如果相等,说明是最后一条了。就立马发通知。
若能知道总共有几条子记录被触发,就成跑批场景了。
真正的并发场景,是不知道并发了几条的。
比如,A 记录在第 1 秒被触发,B 记录在第 3 秒被触发,A 的工作流无法预知 2 秒后会发生什么。
为啥,你进入子流程的数据只有两条时,你汇总的节点,就应该是这两条的节点。
你的方法遇到这种情形时,是发不出通知的:
主记录有 ABCD 四条子记录,但只有 AB 两条子记录被同时被触发。
这个有点无序了,而且还要延迟 10 秒,我的办法不需要延迟,可以立即触发
主数据用一个文本作为通知文本暂存,一个数字辅助单元格
强 👍
就像楼主说的场景,当所有关联子表记录并行触发的时候,可以保证只有一个子表流程会发送通知
同样的可以用来决定是否要执行某流程
不是这么个意思哦,他这个是只有优先抢的执行实例才输出,相当于单独分支,多选执行才会有这样的,获取多条的节点不会这样并行的
这个就是采购订单和采购明细的关联更新
点赞
很有意思的思路
“当最后一批的 N 个任务同时完成时,项目经理会收到 N 个通知。”
感觉用途还挺广的