死循环

2022-04-22 更新
118 次浏览

什么是死循环?

比如说表A有一个工作流1,在表A修改的时候会修改表B。

表B有一个工作流2,在表B修改的时候会去修改表A。

那么系统就会判定存在死循环,系统的死循环判定是基于表格(创建、修改才会参与判定)的,而非基于工作流条件。

在基于表格的触发执行链中,只要一个工作流出现了两次,就会判断为死循环,比如上方举例的触发执行链就是ABABABABA..

如何避开死循环?

解决方式1:

在梳理清楚两个触发器/工作流的触发逻辑后,可以在我们的执行操作处,判断哪个触发器/工作流中的执行操作需要开启“不触发后续工作流”按钮,开启后死循环即可解决。

解决方式2:

设置触发方式

将死循环中间的一个节点的触发方式改为根据指定时间触发,指定时间的触发不参与死循环的判定。示例:比如上面这个示例,我们可以在表B增加一个时间字段,工作流1修改表B的时候给时间字段赋值,工作流2的触发方式改为基于该时间字段执行。

解决方式3:

表达式中的操作与函数

工作流1和工作流2进行合并。

例如:条件用OR()函数将工作流1和工作流2进行合并,下方的执行操作用IF()函数进行判断执行赋值。

解决方式4:

如果流程中心也可完成相同功能的话,使用流程中心,流程中心的所使用的触发方式为手动执行的工作流,不参与死循环的判定。

0 0