Router
Router は条件に応じてワークフローの経路を決めるプロセッサーです。
基本的な使い方
Router は設定された条件を順に評価します。最初に true となった分岐が実行され、どれにも合致しない場合は Else の分岐へ進みます。
設定項目
ノードのプロパティパネルです。

Name
キャンバス上に表示される名前です。ワークフロー内でこのプロセッサーを識別するために使います。
Description
このプロセッサーの用途を補足し、ワークフローの読みやすさを高めます。
Properties
条件分岐は必要な数だけ追加できます。各分岐は名前と条件を持ちます。
値の種類
- Literal:
trueまたはfalseを直接入力します - Expression: JavaScript の式で条件を判定します
- Template: テンプレート構文で条件を評価します
値の取得方法はExpression の概要 — 値の取得を参照してください。
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 で設定した条件ごとに接続点が作られます。条件が true と評価されると、その分岐からワークフローが続きます。
Else
どの動的条件にも合致しないとき、この接続点から続きます。既定の経路にあたります。
実際の例
在庫の検索結果で補充通知を出すかどうかを分けます。Properties の + で case を 1 つ追加します。
| case 名 | 条件 |
|---|---|
need_restock | Expression: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 に流れるのではなくノードが失敗します。