算法名称:多子争权。
功能目标:多条子记录被同时触发后,父记录只被触发一次。
子记录工作流:(见图 1)
01:获取父记录。
02:更新父记录的某字段:写入流程实例 ID。
03:等待几秒,让其他子记录来抢。
04:判断父记录的某字段还是不是自己的流程实例 ID。
05:若是,调用父记录的子流程。
06:若否,结束。
调试结果:搞定。(见图 2)
我是这样设计,一旦有子项目进入这个流程,直接给相关的子项目判断值改为 1,其他项目就不会进入这个分支,只会进入一个空分支,跳到最后的结果
你的做法是第 1 个孩子争到权,我的做法是 10 秒内的最后 1 个孩子争到权,可以的。

我是这样设计,一旦有子项目进入这个流程,直接给相关的子项目判断值改为 1,其他项目就不会进入这个分支,只会进入一个空分支,跳到最后的结果

行吧,实践出真知,你用了就知道。
我一直在用,没出啥问题,你可以试试我的办法。
那你还是没有理解到
不是让你手动输入跑多少条。是让你汇总节点,汇总要进入子流程的数据数量;
每次进入工作流时被统计,每进一条,就在主流程数据就 +1,每次也检查和汇入的数据总量是否相等,如果相等,说明是最后一条了。就立马发通知。
行吧,实践出真知,你用了就知道。

若能知道总共有几条子记录被触发,就成跑批场景了。
真正的并发场景,是不知道并发了几条的。
比如,A 记录在第 1 秒被触发,B 记录在第 3 秒被触发,A 的工作流无法预知 2 秒后会发生什么。
那你还是没有理解到
不是让你手动输入跑多少条。是让你汇总节点,汇总要进入子流程的数据数量;
每次进入工作流时被统计,每进一条,就在主流程数据就 +1,每次也检查和汇入的数据总量是否相等,如果相等,说明是最后一条了。就立马发通知。
为啥,你进入子流程的数据只有两条时,你汇总的节点,就应该是这两条的节点。
若能知道总共有几条子记录被触发,就成跑批场景了。
真正的并发场景,是不知道并发了几条的。
比如,A 记录在第 1 秒被触发,B 记录在第 3 秒被触发,A 的工作流无法预知 2 秒后会发生什么。

你的方法遇到这种情形时,是发不出通知的:
主记录有 ABCD 四条子记录,但只有 AB 两条子记录被同时被触发。
为啥,你进入子流程的数据只有两条时,你汇总的节点,就应该是这两条的节点。
这个有点无序了,而且还要延迟 10 秒,我的办法不需要延迟,可以立即触发
主数据用一个文本作为通知文本暂存,一个数字辅助单元格
- 获取主数据
- 获取多条子数据
- 汇总数据数量
- 进入子流程,传递主数据 ID,传递数据数量
- 子流程:
- 获取主数据
- 分支 1:数字单元格为空:设定数字为 1;设定通知文本,把抬头和这一条子数据通知的内容编辑去
- 分支 2:数字单元格不为空:使其 +1;设定通知文本为:【通知文本】;这条数据通知的文本
- 往下走加一个单独的分支
- 分支 1:数字单元格=流程参数的汇总子流程条数:触发发通知,
- 分支 2:什么也不操作
你的方法遇到这种情形时,是发不出通知的:
主记录有 ABCD 四条子记录,但只有 AB 两条子记录被同时被触发。

这个有点无序了,而且还要延迟 10 秒,我的办法不需要延迟,可以立即触发
主数据用一个文本作为通知文本暂存,一个数字辅助单元格
- 获取主数据
- 获取多条子数据
- 汇总数据数量
- 进入子流程,传递主数据 ID,传递数据数量
- 子流程:
- 获取主数据
- 分支 1:数字单元格为空:设定数字为 1;设定通知文本,把抬头和这一条子数据通知的内容编辑去
- 分支 2:数字单元格不为空:使其 +1;设定通知文本为:【通知文本】;这条数据通知的文本
- 往下走加一个单独的分支
- 分支 1:数字单元格=流程参数的汇总子流程条数:触发发通知,
- 分支 2:什么也不操作

强 👍

就像楼主说的场景,当所有关联子表记录并行触发的时候,可以保证只有一个子表流程会发送通知
同样的可以用来决定是否要执行某流程

很有意思的思路
“当最后一批的 N 个任务同时完成时,项目经理会收到 N 个通知。”
感觉用途还挺广的
不是这么个意思哦,他这个是只有优先抢的执行实例才输出,相当于单独分支,多选执行才会有这样的,获取多条的节点不会这样并行的
这个就是采购订单和采购明细的关联更新
点赞

很有意思的思路
“当最后一批的 N 个任务同时完成时,项目经理会收到 N 个通知。”
感觉用途还挺广的