> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # Run.resume() `.resume()` 方法會使用新資料繼續已暫停的 Workflow run,讓你能從特定步驟繼續執行。 ## 使用範例 ```typescript 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`): 用來繼續已暫停步驟的資料 **step** (`Step | [...Step[], Step] | string | string[]`): 要從中繼續執行的步驟。可為 Step 執行個體、Step 陣列、步驟 ID 字串或步驟 ID 字串陣列 **requestContext** (`RequestContext`): 繼續執行時要使用的 Request Context 資料 **retryCount** (`number`): 巢狀 Workflow 執行的選用重試次數 **forEachIndex** (`number`): 以已暫停 .foreach() 步驟中的特定迭代為目標。傳入要繼續之迭代的零起始索引;其他迭代會維持暫停。省略此欄位,即會使用相同的 resumeData 繼續該步驟中所有已暫停的迭代。 **tracingContext** (`TracingContext`): 用來建立子 span 及新增中繼資料的 Tracing context。使用 Mastra 的 tracing 系統時會自動注入。 **tracingContext.currentSpan** (`Span`): 用來建立子 span 及新增中繼資料的目前 span。執行期間可用它建立自訂子 span 或更新 span 屬性。 **tracingOptions** (`TracingOptions`): Tracing 設定選項。 **tracingOptions.metadata** (`Record`): 要新增至根 Trace span 的中繼資料。適合新增使用者 ID、工作階段 ID 或功能旗標等自訂屬性。 **tracingOptions.requestContextKeys** (`string[]`): 要擷取為此 Trace 中繼資料的其他 RequestContext key。支援以點號標記法表示巢狀值(例如 'user.id')。 **tracingOptions.traceId** (`string`): 此執行要使用的 Trace ID(1 至 32 個十六進位字元)。若有提供,此 Trace 會成為指定 Trace 的一部分。 **tracingOptions.parentSpanId** (`string`): 此執行要使用的父 span ID(1 至 16 個十六進位字元)。若有提供,根 span 會建立為此 span 的子 span。 **tracingOptions.tags** (`string[]`): 要套用至此 Trace 的標籤。這些字串標籤可用來分類及篩選 Trace。 **outputOptions** (`OutputOptions`): 輸出設定選項。 **outputOptions.includeState** (`boolean`): 是否在結果中包含 Workflow run 狀態。 ## 回傳值 **result** (`Promise>`): 會解析為 Workflow 執行結果的 promise;結果包含步驟輸出與狀態 **traceId** (`string`): 啟用 Tracing 時,與此執行相關聯的 Trace ID。可用來關聯記錄及偵錯執行流程。 **spanId** (`string`): 啟用 Tracing 時,與此執行相關聯的根 span ID。可用於 span 層級的查找與關聯。 ## 延伸使用範例 ```typescript if (result.status === 'suspended') { const resumedResults = await run.resume({ step: result.suspended[0], resumeData: { value: 'resume data' }, }) } ``` > **備註:** 只有一個步驟暫停時,可以省略 `step` 參數,Workflow 會自動繼續該步驟。若 Workflow 中有多個已暫停步驟,則必須明確指定要繼續的步驟。 ### 繼續單次 [`.foreach()`](https://mastra.zisheng.pro/zh-TW/reference/workflows/workflow-methods/foreach) 迭代 當 [`.foreach()`](https://mastra.zisheng.pro/zh-TW/reference/workflows/workflow-methods/foreach) 步驟在多個迭代中暫停時,請使用 `forEachIndex`(零起始)逐一以不同的 `resumeData` 繼續迭代。未由 `forEachIndex` 指定的迭代會維持暫停,直到之後繼續。 ```typescript // 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` 繼續。 ## 相關內容 - [Workflows 概觀](https://mastra.zisheng.pro/zh-TW/docs/workflows/overview) - [Workflow.createRun()](https://mastra.zisheng.pro/zh-TW/reference/workflows/workflow-methods/create-run) - [暫停與繼續](https://mastra.zisheng.pro/zh-TW/docs/workflows/suspend-and-resume) - [Human in the loop](https://mastra.zisheng.pro/zh-TW/docs/workflows/human-in-the-loop)