Router(フロー制御)

このピースでできること

  • 条件に基づいて処理を複数の分岐に振り分けます。
  • 最初に一致した分岐のみ実行、または一致したすべてを実行の2モードに対応します。

ピースの設定項目

1. Execution Type(必須)

  • 実行タイプを選びます。
  • EXECUTE_FIRST_MATCH: 最初に一致した分岐のみ実行。
  • EXECUTE_ALL_MATCH: 一致したすべての分岐を実行。

2. Branches(必須)

  • 分岐定義の配列です。分岐タイプは CONDITION または FALLBACK。
  • CONDITION は conditions を持ち、AND/OR の組み合わせで評価します。

3. Children(必須)

  • 各分岐で実行するアクション配列です。

4. Next Action(任意)

  • ルーター完了後に実行する後続アクションです。

設定項目スキーマ

設定項目設定例

参考:条件の書き方

  • AND 条件は1つの配列内に複数条件を並べます。
  • OR 条件は配列を分けて複数並べます。

よくある条件分岐の設定例

特定の値をフローから除外する

Webhookなどで受け取った値が特定の値の場合だけ後続処理を行わないときは、Routerで「除外する分岐」と「処理を続ける分岐」を分けます。
  1. Routerを追加します。
  1. 除外したい値に一致するCONDITION分岐を作成します。
  1. 除外する分岐には後続のピースを配置しません。
  1. FALLBACK側に、通常どおり実行したい後続のピースを配置します。
💡
更新や通知などを条件によって実行しない場合、その処理はRouterの後ろではなく、実行する分岐の中に配置してください。RouterのNext Actionに配置すると、分岐内で何も実行しない場合でもRouter完了後に実行されます。

値が空の場合は更新しない

空判定は、前のピースから取得した値の種類によって使う条件が異なります。
  • 項目自体が存在しない:
  • 配列が空():
  • 文字列として項目は存在するが値が空:Textの条件で空文字を判定します。
⚠️
は「項目そのものがない」ことの判定です。Webhookの出力に項目が存在し、値だけが空の場合の判定とは異なります。Routerを設定する前に、テスト実行の出力で実際の値とデータ型を確認してください。
フロー全体の更新を止めたい場合は、値が入っている分岐にだけ更新ピースを配置します。
個々の項目だけ「空なら既存値を残す」場合は、Routerで分岐を増やすより、関数を使ってデータを加工する の を使って更新値を作る方法もあります。

複数条件を組み合わせる

複数の条件をすべて満たす場合はAND、いずれかを満たす場合はORで条件を組みます。
例えば「問い合わせまたは資料請求で、かつ対象ステータスの場合」に処理したい場合は、次の考え方になります。
条件が増えた場合は、1つの分岐にすべて詰め込まず、意味のまとまりごとにRouterを分けると設定や確認がしやすくなります。

現在値より上位の場合は更新しない

現在値と更新候補に順位がある場合は、比較できる数値に置き換えてからRouterで判定すると分かりやすくなります。
  • 数値で比較できる場合は 、 などを利用します。
  • ステージ名など文字列だけでは「上位/下位」の順序を比較できないため、必要に応じて前段で順位を数値化してから判定します。

条件に一致しない場合は何もしない

Filterのように「条件に一致した場合だけ後続処理を実行する」構成にしたい場合は、CONDITION側に後続処理を配置し、FALLBACK側には何も配置しません。

使用例

  • ステータス別の処理分岐
  • 金額帯別の承認フロー
  • 優先度/ユーザー設定に応じた通知分岐

ベストプラクティス

  • フォールバック分岐を用意し、未一致時の処理を定義します。
  • EXECUTE_FIRST_MATCHでは具体的な条件を上に配置します。
  • 条件はできるだけシンプルにし、ログで分岐開始を記録するとデバッグが容易です。
 

各項目の意味

Text(文字列)の条件

(Text) Contains

  • 〜を含む
    • 例: contains → true

(Text) Does not contain

  • 〜を含まない
    • 例: does not contain → true

(Text) Exactly matches

  • 完全一致する(文字列がまったく同じ)
    • 例: exactly matches → true
      ※大文字小文字や空白も含めて一致が必要

(Text) Does not exactly match

  • 完全一致しない

(Text) Starts with

  • 〜で始まる
    • 例: starts with → true

(Text) Does not start with

  • 〜で始まらない

(Text) Ends with

  • 〜で終わる
    • 例: ends with → true

(Text) Does not end with

  • 〜で終わらない

List(配列/リスト)の条件

(List) Contains

  • リストの中に指定した要素が含まれる
    • 例: contains → true

(List) Does not contain

  • リストの中に指定した要素が含まれない

(List) Is empty

  • リストが空(要素数0 / )

(List) Is not empty

  • リストが空ではない(要素が1つ以上)
注意:(List) Is empty は 空文字 "" の判定ではなく、あくまで 配列が空かです。

Number(数値)の条件

(Number) Is greater than

  • より大きい(>)

(Number) Is less than

  • より小さい(<)

(Number) Is equal to

  • 等しい(=)
    • ※数値として同じかを判定(文字列の と数値 の扱いは左側の型次第)

Date/time(日付・時刻)の条件

(Date/time) After

  • 指定日時より後(左側が後なら true)

(Date/time) Before

  • 指定日時より前

(Date/time) Equals

  • 指定日時と同一
    • ※同一の判定はタイムゾーンや秒/ミリ秒まで含むことがあり、完全一致は実務では起きにくいことがあります(環境次第)

Boolean(真偽値)の条件

(Boolean) Is true

  • true(真)である

(Boolean) Is false

  • false(偽)である

Exists / Does not exist(存在判定)

Exists

  • その項目にデータが存在する
    • 例:Webhook の body に の中に値が「ある」

Does not exist

  • その項目にデータが存在しない
    • 例:Webhook の body に の中に値が「ない」