run.resume()
.resume()
メソッドは一時停止されたワークフローステップの実行を再開し、オプションで新しいコンテキストデータを提供することができます。このデータはステップの inputData プロパティからアクセスできます。
使用方法
await run.resume({
runId: "abc-123",
stepId: "stepTwo",
context: {
secondValue: 100,
},
});
パラメータ
config:
object
ワークフローを再開するための設定
config
runId:
string
再開するワークフロー実行の一意の識別子
stepId:
string
再開する一時停止ステップのID
context?:
Record<string, any>
ステップのinputDataプロパティに注入する新しいコンテキストデータ
戻り値
Promise<WorkflowResult>:
object
再開されたワークフロー実行の結果
Async/Await フロー
ワークフローが再開されると、実行はステップの実行関数内のsuspend()
呼び出しの直後の地点から継続されます。これにより、コード内で自然なフローが作成されます:
// 中断ポイントを持つステップ定義
const reviewStep = new Step({
id: "review",
execute: async ({ context, suspend }) => {
// 実行の最初の部分
const initialAnalysis = analyzeData(context.inputData.data);
if (initialAnalysis.needsReview) {
// ここで実行を中断
await suspend({ analysis: initialAnalysis });
// このコードはresume()が呼び出された後に実行される
// context.inputDataには再開時に提供されたデータが含まれる
return {
reviewedData: enhanceWithFeedback(
initialAnalysis,
context.inputData.feedback,
),
};
}
return { reviewedData: initialAnalysis };
},
});
const { runId, resume, start } = workflow.createRun();
await start({
inputData: {
data: "some data",
},
});
// 後でワークフローを再開
const result = await resume({
runId: "workflow-123",
stepId: "review",
context: {
// このデータは`context.inputData`で利用可能になる
feedback: "良さそうですが、セクション3を改善してください",
},
});
実行フロー
- ワークフローは
review
ステップ内のawait suspend()
に到達するまで実行されます - ワークフローの状態が保存され、実行が一時停止します
- 後で、新しいコンテキストデータと共に
run.resume()
が呼び出されます - 実行は
review
ステップのsuspend()
の後の地点から継続されます - 新しいコンテキストデータ(
feedback
)はinputData
プロパティを通じてステップで利用可能になります - ステップが完了し、結果を返します
- ワークフローはその後のステップで継続します
エラー処理
resume関数はいくつかのタイプのエラーをスローする可能性があります:
try {
await run.resume({
runId,
stepId: "stepTwo",
context: newData,
});
} catch (error) {
if (error.message === "No snapshot found for workflow run") {
// ワークフローの状態が見つからない場合の処理
}
if (error.message === "Failed to parse workflow snapshot") {
// 破損したワークフロー状態の処理
}
}