工作流节点--循环
功能介绍
通过循环节点可以重复执行一段流程。循环方式支持按照指定的次数循环执行,也支持在满足特定条件时循环执行,直到达到退出条件为止。
满足条件时循环
将一直循环执行一段流程,当参数达到退出条件后循环结束。
循环指定次数
给循环设定起始值、结束值和步长值,当起始值大于结束值时退出循环。
多次循环流程之间是严格串行执行的
每循环一次,累加一次工作流执行次数
循环指定次数
场景实现:从题库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次时,获取不到题目,直接用中止节点中止流程,退出循环。
完成整个流程
循环结束后,将题目中标记为已查询的题目直接清除标记。整个流程配置完成。
满足条件时循环
满足条件时循环的方式有一个固定的系统参数:index。每次执行完后值自动加1。 退出循环的条件可以通过自定义参数来决定。
场景式示例:以分页获取外部数据为例,我们通常要分页从接口拉取数据。有一类数据接口并不返回总页数,而是在接口响应值里返回是否还有下一页的标记,此时我们可以使用“满足条件时循环”来循环获取所有分页的数据。例如“钉钉-获取用户列表”接口,就是返回一个“has_more” 参数来标记是否有下一页,并返回一个“next_cursor”游标来标记下一页的读取位置,我们可以创建一个“满足条件时循环”的节点如下:
我们为节点添加了一个“hasMore”的文本参数,一开始传入true,并设定“退出循环条件”为“hasMore等于false”时。保存后,打开自动创建的新“循环流程”,我们用一个简化的流程来说明循环的用法: 循环流程中先添加“调用已集成 API”,并把参数传给钉钉的 API
然后添加分支节点,判断 API 请求的结果,如果有数据则进行业务处理,没有数据则直接把“hasMore”更新为“false”,退出循环流程。接下来再判断是否有下一页,如果有,则把“cursor”的值更新为接口返回的“next_cursor”值,继续下一次循环;如果没有下一页,则把“hasMore”更新为“false”,退出循环。
由此可见,“满足条件时循环”的核心逻辑就是通过修改“流程参数”的值来满足循环中设置好的退出条件从而终止循环,否则将一直循环下去,直到达到设置的“最大循环次数”。
更新和使用循环中的流程参数
参数可以在流程中被自定义修改,以循环指定次数中的start参数为例,可以通过更新流程参数节点更改值。如果没有特意修改,则按步长值增加。
复用循环流程
如果需要的循环流程已经配置好,可以直接复用。在循环节点中选择"使用已有循环流程" - “选择所在应用”-“选择流程” 。
文档问题反馈
文档中是否有错别字、内容过期、难以理解等问题? 点此给我们反馈吧