REFERENCE
開発者リファレンス
認証、API、SDK、Flow Agent のプロセッサ、パラメータ解決のリファレンスです。
Router
条件によってフローの分岐先を決めます。
Router は条件に応じてワークフローの経路を決めるプロセッサーです。
基本的な使い方
Router は設定された条件を順に評価します。最初に
trueとなった分岐が実行され、どれにも合致しない場合は Else の分岐へ進みます。設定項目
ノードのプロパティパネルです。
Name
キャンバス上に表示される名前です。ワークフロー内でこのプロセッサーを識別するために使います。
Description
このプロセッサーの用途を補足し、ワークフローの読みやすさを高めます。
Properties
条件分岐は必要な数だけ追加できます。各分岐は名前と条件を持ちます。
値の種類
- Literal:
trueまたはfalseを直接入力します - Expression: JavaScript の式で条件を判定します
- Template: テンプレート構文で条件を評価します
値の取得方法はExpression の概要 — 値の取得を参照してください。
- Literal:
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 も成立しないときに進みます。実際の例
在庫の検索結果で補充通知を出すかどうかを分けます。Properties の
+で case を 1 つ追加します。case 名 条件 need_restockExpression: low_stock.length > 0ノードに
need_restockという分岐が現れ、もとからあるElseと合わせて出口が 2 本になります。条件は真偽値を返す必要があります。条件の評価順序
Router は case を追加した順に見ていき、最初に成立したものを採用してそこで評価を止めます。それ以降の case は見られません。どれも成立しなかった場合だけ Else に進みます。
真偽の判定は「値があれば真」ではありません。
- 真偽値はそのまま使われます。
- 文字列は
strconv.ParseBoolで解析されるのでtrue、false、1、0、t、fは使えます。解析できない文字列は false ではなく Failure になります。 - 真偽値でも文字列でもない値(オブジェクト、数値、null)はすべて Failure です。
ここは誤解されがちです。真偽値以外を返す式を条件に書くと、黙って Else に流れるのではなくノードが失敗します。