跳到主要内容

工作流节点--循环


功能介绍

通过循环节点可以重复执行一段流程。循环方式支持按照指定的次数循环执行,也支持在满足特定条件时循环执行,直到达到退出条件为止。

  • 满足条件时循环

    将一直循环执行一段流程,当参数达到退出条件后循环结束。

  • 循环指定次数

    给循环设定起始值、结束值和步长值,当起始值大于结束值时退出循环。

多次循环流程之间是严格串行执行的。

每循环一次,累加一次工作流执行次数。

循环指定次数

场景实现:从题库100道题目中随机抽取10道题目生成一套试卷。

实现思路:通过获取单条数据节点实现随机抽取1道题目,复制题目并关联到试卷中,并将原题目标记为已获取,这样循环执行10次,循环结束后,解除题库中的标记。

添加循环节点

流程中添加"循环"节点,并选择"循环指定次数"的方式

配置循环节点

参数设置

循环指定次数的方式,有3个系统固定参数:start、end、step。只允许配置初始值,不允许删除和修改参数名称。

  • start: 循环开始的值,
  • step: 每次循环后 start递增的步长值, 例如,start=1,step=2,在执行完第一次循环后,start=3。
  • end: 循环结束的值,当start增加到大于end时,退出循环,不在执行下次循环。

除了固定参数,还支持传入自定义参数。如本次场景中每次循环时都需要获取新建的试卷记录,那么就需要传入试卷记录ID(exampaperid),在循环流程中通过记录ID获取到试卷记录。

循环退出条件

在"循环指定次数"方式下,只能通过比较start和end值来决定是否结束循环。

执行次数示例:

  • start=1,step=1,end=3,循环执行3次,在执行完第三次时,start变为了4,大于end值,循环结束。

  • start=1,step=2,end=3,循环执行2次,在执行完第二次时,start变为了5,大于end值,循环结束。

  • start=1,step=1,end=0,循环执行0次。

最大循环次数

循环不可以无限执行,循环节点最大支持1万次。到达最大循环次数时将自动终止循环并执行后续节点。

在执行循环流程时,即使start值小于end值,如果达到了循环最大次数,也将退出循环。

循环中流程中止时

当循环执行过程中,某次流程出现了中止,如何继续执行,有三种方式:

  • 跳出并进入下一次循环 忽略,开始下一次循环
  • 跳出并终止循环,继续后面的流程 整个循环结束,执行循环节点后面的动作。
  • 中止流程 循环节点所在的流程直接中止。

配置循环体流程

点击循环节点中的按钮进入循环流程,配置循环流程中的动作。

循环流程的配置如下图:

将执行10次下方流程,每执行完一次后,随机获取到一个题目,start正常+1. 正常执行下次循环。当执行完第10次时,start变为11,不再继续循环。 如果题库中只有6道不够10道题目,在执行第7次时,获取不到题目,然后通过更新流程参数节点将start直接变为11,大于end值,也可以结束循环。

完成整个流程

循环结束后,将题目中标记为已查询的题目直接清除标记。整个流程配置完成。

满足条件时循环

满足条件时循环的方式有一个固定的系统参数:index。每次执行完后值自动加1。 退出循环的条件可以通过自定义参数来决定。

场景式示例:以分页获取外部数据为例,我们通常要分页从接口拉取数据。有一类数据接口并不返回总页数,而是在接口响应值里返回是否还有下一页的标记,此时我们可以使用“满足条件时循环”来循环获取所有分页的数据。例如“钉钉-获取用户列表”接口,就是返回一个“has_more” 参数来标记是否有下一页,并返回一个“next_cursor”游标来标记下一页的读取位置,我们可以创建一个“满足条件时循环”的节点如下:

我们为节点添加了一个“hasMore”的文本参数,一开始传入true,并设定“退出循环条件”为“hasMore等于false”时。保存后,打开自动创建的新“循环流程”,我们用一个简化的流程来说明循环的用法: 循环流程中先添加“调用已集成 API”,并把参数传给钉钉的 API

然后添加分支节点,判断 API 请求的结果,如果有数据则进行业务处理,没有数据则直接把“hasMore”更新为“false”,退出循环流程。接下来再判断是否有下一页,如果有,则把“cursor”的值更新为接口返回的“next_cursor”值,继续下一次循环;如果没有下一页,则把“hasMore”更新为“false”,退出循环。

由此可见,“满足条件时循环”的核心逻辑就是通过修改“流程参数”的值来满足循环中设置好的退出条件从而终止循环,否则将一直循环下去,直到达到设置的“最大循环次数”。

更新和使用循环中的流程参数

参数可以在流程中被自定义修改,以循环指定次数中的start参数为例,可以通过更新流程参数节点更改值。如果没有特意修改,则按步长值增加。

复用循环流程

如果需要的循环流程已经配置好,可以直接复用。在循环节点中选择"使用已有循环流程" - “选择所在应用”-“选择流程” 。


文档问题反馈

文档中是否有错别字、内容过期、难以理解等问题? 点此给我们反馈吧