跳至主要内容

循環節點


功能介紹

通過循環節點,流程中可以重復執行一段流程。循環方式支持按照指定的次數循環執行,也支持在滿足特定條件時循環執行,直到達到退齣條件為止。

  • 滿足條件時循環

    將一直循環的執行一段流程,當參數達到退齣條件後循環結束。

  • 循環指定次數

    給循環設定起始值、結束值和步長值,當到起始值大於結束值時退齣循環。

多次循環流程之間是嚴格串行的。

每循環一次流程,消耗一次工作流次數

循環指定次數

場景實現:從題庫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參數為例,可以通過更新流程參數節點更改值。如果沒有特意修改,則按步長值增加。