跳至主要內容

Run.resume()

.resume() 方法會使用新資料繼續已暫停的 Workflow run,讓你能從特定步驟繼續執行。

使用範例
「使用範例」的直接連結

const run = await workflow.createRun()

const result = await run.start({ inputData: { value: 'initial data' } })

if (result.status === 'suspended') {
const resumedResults = await run.resume({
resumeData: { value: 'resume data' },
})
}

參數
「參數」的直接連結

resumeData?:

z.infer<TResumeSchema>
用來繼續已暫停步驟的資料

step?:

Step<string, any, any, TResumeSchema, any, TEngineType> | [...Step<string, any, any, any, any, TEngineType>[], Step<string, any, any, TResumeSchema, any, TEngineType>] | string | string[]
要從中繼續執行的步驟。可為 Step 執行個體、Step 陣列、步驟 ID 字串或步驟 ID 字串陣列

requestContext?:

RequestContext
繼續執行時要使用的 Request Context 資料

retryCount?:

number
巢狀 Workflow 執行的選用重試次數

forEachIndex?:

number
以已暫停 .foreach() 步驟中的特定迭代為目標。傳入要繼續之迭代的零起始索引;其他迭代會維持暫停。省略此欄位,即會使用相同的 resumeData 繼續該步驟中所有已暫停的迭代。

tracingContext?:

TracingContext
用來建立子 span 及新增中繼資料的 Tracing context。使用 Mastra 的 tracing 系統時會自動注入。

currentSpan?:

Span
用來建立子 span 及新增中繼資料的目前 span。執行期間可用它建立自訂子 span 或更新 span 屬性。

tracingOptions?:

TracingOptions
Tracing 設定選項。

metadata?:

Record<string, any>
要新增至根 Trace span 的中繼資料。適合新增使用者 ID、工作階段 ID 或功能旗標等自訂屬性。

requestContextKeys?:

string[]
要擷取為此 Trace 中繼資料的其他 RequestContext key。支援以點號標記法表示巢狀值(例如 'user.id')。

traceId?:

string
此執行要使用的 Trace ID(1 至 32 個十六進位字元)。若有提供,此 Trace 會成為指定 Trace 的一部分。

parentSpanId?:

string
此執行要使用的父 span ID(1 至 16 個十六進位字元)。若有提供,根 span 會建立為此 span 的子 span。

tags?:

string[]
要套用至此 Trace 的標籤。這些字串標籤可用來分類及篩選 Trace。

outputOptions?:

OutputOptions
輸出設定選項。

includeState?:

boolean
是否在結果中包含 Workflow run 狀態。

回傳值
「回傳值」的直接連結

result:

Promise<WorkflowResult<TState, TOutput, TSteps>>
會解析為 Workflow 執行結果的 promise;結果包含步驟輸出與狀態

traceId?:

string
啟用 Tracing 時,與此執行相關聯的 Trace ID。可用來關聯記錄及偵錯執行流程。

spanId?:

string
啟用 Tracing 時,與此執行相關聯的根 span ID。可用於 span 層級的查找與關聯。

延伸使用範例
「延伸使用範例」的直接連結

if (result.status === 'suspended') {
const resumedResults = await run.resume({
step: result.suspended[0],
resumeData: { value: 'resume data' },
})
}
備註

只有一個步驟暫停時,可以省略 step 參數,Workflow 會自動繼續該步驟。若 Workflow 中有多個已暫停步驟,則必須明確指定要繼續的步驟。

繼續單次 .foreach() 迭代
「resuming-a-single-foreach-iteration」的直接連結

.foreach() 步驟在多個迭代中暫停時,請使用 forEachIndex(零起始)逐一以不同的 resumeData 繼續迭代。未由 forEachIndex 指定的迭代會維持暫停,直到之後繼續。

// Resume only the second iteration (index 1) with its own data
await run.resume({
step: 'approve',
resumeData: { ok: true },
forEachIndex: 1,
})

// Later, resume the first iteration with different data
await run.resume({
step: 'approve',
resumeData: { ok: false },
forEachIndex: 0,
})

若省略 forEachIndex,步驟中所有已暫停的迭代都會使用相同的 resumeData 繼續。