REFERENCE
開發者參考
認證、API、SDK、Flow Agent 處理節點與參數取值的完整參考。
Router
依條件決定流程往哪一條分支走。
Router 是用於根據條件決定工作流程執行路徑的 processor。
基本用法
執行 Router 時,會依序檢查設定的條件,第一個評估為
true的條件分支會被執行,如果所有條件都不符合則走向 Else 分支。在 Workflow CRD 中的設定
每個條件分支是一個 config,名稱依序為
case-1、case-2,值就是該分支的判斷式。分支名稱同時也是連接關係的名稱,所以新增一個 case 等於同時新增一個設定與一條出線。- name: proc-route
type: router
labels:
display_name: 判斷是否為退貨詢問
configs:
- name: case-1
expression: |-
(() => {
return /退貨|退款/.test(prevMessage);
})()
- name: case-2
expression: |-
(() => {
return /出貨|物流/.test(prevMessage);
})()預設的連接關係是
case-1與else。else不需要設定條件,所有 case 都不成立時會走它。一個實際的例子
依庫存查詢結果決定要不要通知。在 Properties 按
+加一個 case:case 名稱 條件 need_restockExpression: low_stock.length > 0畫面上會多出一條叫
need_restock的分支,加上本來就有的Else,共兩條出口。條件要回傳布林值。條件怎麼被判斷
Router 依照 case 加入的順序往下檢查,第一個成立的就走那一條並停止檢查,後面的 case 不會再看。全部都不成立才走 Else。
判斷值不是「有值就算真」:
- 布林值直接採用。
- 字串會用
strconv.ParseBool解析,所以true、false、1、0、t、f這些可以,解析不出來的字串會走 Failure,不是當成 false。 - 既不是布林也不是字串的值(物件、數字、null)一律走 Failure。
這一點常被誤解:條件寫成一個會回傳非布林值的 expression 時,流程不會安靜地走 Else,而是整個節點失敗。