StepCondition
条件は、前のステップの出力またはトリガーデータに基づいて、ステップを実行するかどうかを決定します。
使用方法
条件を指定する方法は3つあります:関数、クエリオブジェクト、シンプルなパス比較です。
1. 関数条件
workflow.step(processOrder, {
when: async ({ context }) => {
const auth = context?.getStepResult<{ status: string }>("auth");
return auth?.status === "authenticated";
},
});
2. クエリオブジェクト
workflow.step(processOrder, {
when: {
ref: { step: "auth", path: "status" },
query: { $eq: "authenticated" },
},
});
3. シンプルなパス比較
workflow.step(processOrder, {
when: {
"auth.status": "authenticated",
},
});
条件のタイプに基づいて、ワークフローランナーはこれらのタイプのいずれかに条件を一致させようとします。
- シンプルなパス条件(キーにドットがある場合)
- ベース/クエリ条件(‘ref’プロパティがある場合)
- 関数条件(非同期関数の場合)
StepCondition
ref:
{ stepId: string | 'trigger'; path: string }
ステップ出力値への参照。stepIdはステップIDまたは初期データの'trigger'を指定できます。pathはステップ結果内の値の場所を指定します
query:
Query<any>
siftオペレータ($eq、$gtなど)を使用したMongoDBスタイルのクエリ
クエリ
Queryオブジェクトは、前のステップやトリガーデータからの値を比較するためのMongoDBスタイルのクエリ演算子を提供します。$eq
、$gt
、$lt
などの基本的な比較演算子や、$in
や$nin
などの配列演算子をサポートし、and/or演算子と組み合わせて複雑な条件を作成することができます。
このクエリ構文により、ステップを実行するかどうかを決定するための読みやすい条件付きロジックを実現できます。
$eq:
any
値と等しい
$ne:
any
値と等しくない
$gt:
number
値より大きい
$gte:
number
値以上
$lt:
number
値未満
$lte:
number
値以下
$in:
any[]
値が配列内に存在する
$nin:
any[]
値が配列内に存在しない
and:
StepCondition[]
すべてがtrueでなければならない条件の配列
or:
StepCondition[]
少なくとも1つがtrueでなければならない条件の配列