メインコンテンツまでスキップ

REFERENCE

開発者リファレンス

認証、API、SDK、Flow Agent のプロセッサ、パラメータ解決のリファレンスです。

Router

条件によってフローの分岐先を決めます。

Router は条件に応じてワークフローの経路を決めるプロセッサーです。

  1. 基本的な使い方​

    Router は設定された条件を順に評価します。最初に true となった分岐が実行され、どれにも合致しない場合は Else の分岐へ進みます。

  2. 設定項目​

    ノードのプロパティパネルです。

    Router のプロパティパネル。Properties で case を追加し、Next Step には Else だけがある

    Name​

    キャンバス上に表示される名前です。ワークフロー内でこのプロセッサーを識別するために使います。

    Description​

    このプロセッサーの用途を補足し、ワークフローの読みやすさを高めます。

    Properties​

    条件分岐は必要な数だけ追加できます。各分岐は名前と条件を持ちます。

    値の種類​

    • Literal: true または false を直接入力します
    • Expression: JavaScript の式で条件を判定します
    • Template: テンプレート構文で条件を評価します

    値の取得方法はExpression の概要 — 値の取得を参照してください。

  3. Workflow CRD での設定​

    各分岐は 1 つの 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 を 1 つ追加します。

    case 名条件
    need_restockExpression:low_stock.length > 0

    ノードに need_restock という分岐が現れ、もとからある Else と合わせて出口が 2 本になります。条件は真偽値を返す必要があります。

  6. 条件の評価順序​

    Router は case を追加した順に見ていき、最初に成立したものを採用してそこで評価を止めます。それ以降の case は見られません。どれも成立しなかった場合だけ Else に進みます。

    真偽の判定は「値があれば真」ではありません。

    • 真偽値はそのまま使われます。
    • 文字列は strconv.ParseBool で解析されるので true、false、1、0、t、f は使えます。解析できない文字列は false ではなく Failure になります。
    • 真偽値でも文字列でもない値(オブジェクト、数値、null)はすべて Failure です。

    ここは誤解されがちです。真偽値以外を返す式を条件に書くと、黙って Else に流れるのではなくノードが失敗します。

始める準備はできましたか?

Asgard をチームでどう活用できるか、お気軽にご相談ください。

お問い合わせ