Workflow state reader
Workflow state reader 輔助函式會檢查 workflow.getWorkflowRunById() 傳回的公開 WorkflowState。你可以用它們復原已暫停的 run 及檢查恢復標籤,亦可讀取 step payload 或輸出,而無需解析原始 Workflow snapshot。
使用範例使用範例 的直接連結
src/mastra/workflows/recover-run.ts
import { createWorkflowStateReader } from '@mastra/core/workflows'
const state = await workflow.getWorkflowRunById('run-123')
if (state) {
const reader = createWorkflowStateReader(state)
const suspendedStep = reader.getSuspendedStep()
const labels = reader.getResumeLabels()
console.log(reader.getStatus())
console.log(reader.getStepOutput('extract-data'))
console.log(suspendedStep?.path)
console.log(labels.approve)
}
函式函式 的直接連結
createWorkflowStateReader(state)createworkflowstatereaderstate 的直接連結
建立 reader 物件,當中的方法會綁定至一個 WorkflowState。
const reader = createWorkflowStateReader(state)
const suspendedStep = reader.getSuspendedStep()
getWorkflowStepOutput(state, stepId)getworkflowstepoutputstate-stepid 的直接連結
傳回指定 step ID 的輸出,包括 parent.child 等巢狀 Workflow 點號路徑。對於 foreach step,每次反覆運算會傳回一個項目。已暫停的反覆運算可能有值為 undefined 的輸出項目。
const output = getWorkflowStepOutput(state, 'extract-data')
getWorkflowStepPayload(state, stepId)getworkflowsteppayloadstate-stepid 的直接連結
傳回傳遞至 step 的 payload。對於 foreach step,每次反覆運算會傳回一個項目。
const payload = getWorkflowStepPayload(state, 'extract-data')
getWorkflowSuspendedStep(state)getworkflowsuspendedstepstate 的直接連結
傳回 Workflow 狀態中第一個已暫停的 step。當有多個 step 暫停時,排序會依照它們在 suspendedPaths 中儲存的次序。
const suspendedStep = getWorkflowSuspendedStep(state)
getWorkflowSuspendedSteps(state)getworkflowsuspendedstepsstate 的直接連結
傳回 Workflow 狀態中所有已暫停的 step。每個結果都包括頂層 step ID、恢復路徑、執行路徑、暫停 payload、暫停輸出,以及相符的恢復標籤。
const suspendedSteps = getWorkflowSuspendedSteps(state)
getWorkflowResumeLabel(state, label)getworkflowresumelabelstate-label 的直接連結
按名稱傳回恢復標籤。
const label = getWorkflowResumeLabel(state, 'approve')
getWorkflowResumeLabels(state)getworkflowresumelabelsstate 的直接連結
傳回 Workflow 狀態中的所有恢復標籤。
const labels = getWorkflowResumeLabels(state)
Reader 方法Reader 方法 的直接連結
createWorkflowStateReader(state) 會傳回以下方法:
getStatus:
() => WorkflowRunStatus
傳回 Workflow run 狀態。
getResult:
() => WorkflowState["result"]
如有最終 Workflow 結果,則傳回該結果。
getError:
() => WorkflowState["error"]
如有最終 Workflow 錯誤,則傳回該錯誤。
getStepOutput:
(stepId: string) => any | Array<any | undefined> | undefined
傳回指定 step ID 或巢狀 Workflow 點號路徑的輸出。
getStepPayload:
(stepId: string) => any | Array<any | undefined> | undefined
傳回指定 step ID 或巢狀 Workflow 點號路徑的 payload。
getSuspendedStep:
() => { stepId: string; path: string[]; executionPath?: number[]; step?: NonNullable<WorkflowState["steps"]>[string]; payload?: any; suspendPayload?: any; suspendOutput?: any; resumeLabels: Record<string, { stepId: string; foreachIndex?: number }> } | undefined
傳回第一個已暫停的 step。
getSuspendedSteps:
() => Array<{ stepId: string; path: string[]; executionPath?: number[]; step?: NonNullable<WorkflowState["steps"]>[string]; payload?: any; suspendPayload?: any; suspendOutput?: any; resumeLabels: Record<string, { stepId: string; foreachIndex?: number }> }>
傳回所有已暫停的 step。
getResumeLabel:
(label: string) => { stepId: string; foreachIndex?: number } | undefined
按名稱傳回恢復標籤。
getResumeLabels:
() => Record<string, { stepId: string; foreachIndex?: number }>
傳回所有恢復標籤。
注意事項注意事項 的直接連結
只有在使用 fields 明確要求時,workflow.getWorkflowRunById() 才會傳回 requestContext 及 tracingContext。