跳至主要内容

REFERENCE

開發者參考

認證、API、SDK、Flow Agent 處理節點與參數取值的完整參考。

Router

依條件決定流程往哪一條分支走。

Router 是用於根據條件決定工作流程執行路徑的 processor。

  1. 基本用法​

    執行 Router 時,會依序檢查設定的條件,第一個評估為 true 的條件分支會被執行,如果所有條件都不符合則走向 Else 分支。

  2. 配置參數​

    節點的屬性面板:

    Router 的屬性面板:Properties 用來加 case,Next Step 只有一條 Else

    Name​

    顯示在畫布上的名稱,用於在工作流程中識別此 processor。

    Description​

    用於補充此 processor 的用途,提升工作流程的可讀性。

    Properties​

    可以新增多個條件分支,每個分支包含條件名稱和條件值。

    設定類型選項​

    • Literal:直接輸入 true 或 false
    • Expression:使用 JavaScript 表達式進行條件判斷
    • Template:使用模板語法進行條件評估

    詳細的取值方式說明請參考:Expression 介紹 - 取值方式

  3. 在 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 都不成立時會走它。

  4. 連接關係​

    動態分支​

    根據在 Properties 中設定的條件,會自動產生對應的連接點。當條件評估為 true 時,工作流程會從該分支繼續執行。

    Else​

    當所有動態條件都不符合時,工作流程會從此連接點繼續執行,作為預設的執行路徑。

  5. 一個實際的例子​

    依庫存查詢結果決定要不要通知。在 Properties 按 + 加一個 case:

    case 名稱條件
    need_restockExpression:low_stock.length > 0

    畫面上會多出一條叫 need_restock 的分支,加上本來就有的 Else,共兩條出口。條件要回傳布林值。

  6. 條件怎麼被判斷​

    Router 依照 case 加入的順序往下檢查,第一個成立的就走那一條並停止檢查,後面的 case 不會再看。全部都不成立才走 Else。

    判斷值不是「有值就算真」:

    • 布林值直接採用。
    • 字串會用 strconv.ParseBool 解析,所以 true、false、1、0、t、f 這些可以,解析不出來的字串會走 Failure,不是當成 false。
    • 既不是布林也不是字串的值(物件、數字、null)一律走 Failure。

    這一點常被誤解:條件寫成一個會回傳非布林值的 expression 時,流程不會安靜地走 Else,而是整個節點失敗。

準備好開始了嗎?

想知道 Asgard 怎麼用在你的團隊?跟我們聊聊。

聯絡我們