メインコンテンツへ移動

Run.startAsync()

.startAsync() メソッドは、完了を待たずに Workflow Run を開始します。runId とともに即座に戻るため、Workflow をバックグラウンドで実行できます。長時間実行される Workflow やスケジュールされたタスクに便利です。また、Workflow の完了を待って処理がブロックされることもありません。

使用例
使用例への直接リンク

const run = await workflow.createRun()

// Fire-and-forget - returns immediately
const { runId } = await run.startAsync({
inputData: {
value: 'initial data',
},
})

// Optionally poll for completion later
const result = await workflow.getWorkflowRunExecutionResult(runId)

パラメーター
パラメーターへの直接リンク

inputData?:

z.infer<TInput>
Workflow の入力スキーマに一致する入力データ

requestContext?:

RequestContext
Workflow の実行中に使用する Request Context データ

initialState?:

z.infer<TState>
Workflow の実行に使用する初期状態

tracingOptions?:

TracingOptions
Tracing 設定のオプション。

metadata?:

Record<string, any>
ルート trace span に追加する metadata。ユーザー ID、セッション ID、feature flag などのカスタム属性を追加する場合に役立ちます。

traceId?:

string
この実行に使用する trace ID(1〜32 文字の 16 進数)。指定すると、この trace は指定した trace の一部になります。

outputOptions?:

OutputOptions
出力設定のオプション。

includeState?:

boolean
結果に Workflow Run の状態を含めるかどうか。

戻り値
戻り値への直接リンク

runId:

string
この Workflow Run の一意な識別子。後からステータスの確認や結果の取得に使用します。

startAsync() を使用する場面
when-to-use-startasyncへの直接リンク

次の場合は start() ではなく startAsync() を使用します。

  • 長時間実行される Workflow: Workflow の完了に数分または数時間かかる可能性がある場合
  • スケジュール/cron トリガー: スケジューラーをブロックせずに Workflow をトリガーしたい場合
  • ポーリング失敗の回避: Inngest Workflow では、start() は完了までポーリングするため、失敗して再試行が発生する場合があります。startAsync() を使用すると、この問題を回避できます
  • バックグラウンド処理: 処理をキューに追加し、結果を非同期で処理したい場合

Workflow のステータスを確認する
Workflow のステータスを確認するへの直接リンク

startAsync() の呼び出し後、次のように Workflow のステータスを確認できます。

// Get the execution result (including step outputs)
const result = await workflow.getWorkflowRunExecutionResult(runId)

if (result?.status === 'success') {
console.log('Workflow completed:', result.steps)
} else if (result?.status === 'failed') {
console.log('Workflow failed:', result.error)
} else if (result?.status === 'running') {
console.log('Workflow still running...')
}