Workflow 状态读取器
Workflow 状态读取辅助函数用于检查 workflow.getWorkflowRunById() 返回的公共 WorkflowState。可使用这些函数恢复已暂停的 run 并检查恢复标签,还能直接读取步骤 payload 或输出,无需解析原始 workflow 快照。
使用示例使用示例的直接链接
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的直接链接
创建一个读取器对象,其中的方法绑定到一个 WorkflowState。
const reader = createWorkflowStateReader(state)
const suspendedStep = reader.getSuspendedStep()
getWorkflowStepOutput(state, stepId)getworkflowstepoutputstate-stepid的直接链接
返回指定步骤 ID 的输出,也支持 parent.child 等嵌套 workflow 点分路径。对于 foreach 步骤,每次迭代返回一个条目。已暂停迭代的输出条目可能为 undefined。
const output = getWorkflowStepOutput(state, 'extract-data')
getWorkflowStepPayload(state, stepId)getworkflowsteppayloadstate-stepid的直接链接
返回传递给步骤的 payload。对于 foreach 步骤,每次迭代返回一个条目。
const payload = getWorkflowStepPayload(state, 'extract-data')
getWorkflowSuspendedStep(state)getworkflowsuspendedstepstate的直接链接
返回 workflow 状态中的第一个已暂停步骤。当多个步骤暂停时,顺序与 suspendedPaths 中存储的顺序一致。
const suspendedStep = getWorkflowSuspendedStep(state)
getWorkflowSuspendedSteps(state)getworkflowsuspendedstepsstate的直接链接
返回 workflow 状态中的所有已暂停步骤。每个结果都包含顶层步骤 ID、恢复路径、执行路径、暂停 payload、暂停输出和匹配的恢复标签。
const suspendedSteps = getWorkflowSuspendedSteps(state)
getWorkflowResumeLabel(state, label)getworkflowresumelabelstate-label的直接链接
按名称返回恢复标签。
const label = getWorkflowResumeLabel(state, 'approve')
getWorkflowResumeLabels(state)getworkflowresumelabelsstate的直接链接
返回 workflow 状态中的所有恢复标签。
const labels = getWorkflowResumeLabels(state)
读取器方法读取器方法的直接链接
createWorkflowStateReader(state) 返回以下方法:
getStatus:
() => WorkflowRunStatus
返回 workflow run 状态。
getResult:
() => WorkflowState["result"]
返回存在的终态 workflow 结果。
getError:
() => WorkflowState["error"]
返回存在的终态 workflow 错误。
getStepOutput:
(stepId: string) => any | Array<any | undefined> | undefined
返回指定步骤 ID 或嵌套 workflow 点分路径的输出。
getStepPayload:
(stepId: string) => any | Array<any | undefined> | undefined
返回指定步骤 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
返回第一个已暂停的步骤。
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 }> }>
返回所有已暂停的步骤。
getResumeLabel:
(label: string) => { stepId: string; foreachIndex?: number } | undefined
按名称返回恢复标签。
getResumeLabels:
() => Record<string, { stepId: string; foreachIndex?: number }>
返回所有恢复标签。
注意事项注意事项的直接链接
仅当通过 fields 明确请求时,workflow.getWorkflowRunById() 才会返回 requestContext 和 tracingContext。