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[]
すべてが真でなければならない条件の配列
or:
StepCondition[]
少なくとも1つが真でなければならない条件の配列