Workflow.if()
実験的
.if()
メソッドはワークフローに条件分岐を作成し、指定された条件が真の場合にのみステップを実行できるようにします。これにより、前のステップの結果に基づいて動的なワークフローパスが可能になります。
使用方法
workflow
.step(startStep)
.if(async ({ context }) => {
const value = context.getStepResult<{ value: number }>("start")?.value;
return value < 10; // trueの場合、"if"ブランチを実行
})
.then(ifBranchStep)
.else()
.then(elseBranchStep)
.commit();
パラメータ
condition:
Function | ReferenceCondition
'if'ブランチを実行するかどうかを決定する関数または参照条件
条件タイプ
関数条件
ブール値を返す関数を使用できます:
workflow
.step(startStep)
.if(async ({ context }) => {
const result = context.getStepResult<{ status: string }>("start");
return result?.status === "success"; // ステータスが「success」の場合に「if」ブランチを実行
})
.then(successStep)
.else()
.then(failureStep);
参照条件
比較演算子を使用した参照ベースの条件を使用できます:
workflow
.step(startStep)
.if({
ref: { step: startStep, path: "value" },
query: { $lt: 10 }, // 値が10未満の場合に「if」ブランチを実行
})
.then(ifBranchStep)
.else()
.then(elseBranchStep);
戻り値
workflow:
Workflow
メソッドチェーン用のワークフローインスタンス
エラー処理
if
メソッドは、前のステップが定義されていることを必要とします。先行するステップなしでこれを使用しようとすると、エラーがスローされます:
try {
// これはエラーをスローします
workflow
.if(async ({ context }) => true)
.then(someStep)
.commit();
} catch (error) {
console.error(error); // "Condition requires a step to be executed after"
}