跳到主要内容
非官方简体中文翻译,内容版权归 Mastra 所有,遵循 Apache-2.0 许可。

Workflow state reader

Workflow state reader helpers inspect the public WorkflowState returned by workflow.getWorkflowRunById(). Use them to recover suspended runs and inspect resume labels. They also read step payloads or outputs without parsing raw workflow snapshots.

Usage example
Usage example的直接链接

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)
}

Functions
Functions的直接链接

createWorkflowStateReader(state)
createworkflowstatereaderstate的直接链接

Creates a reader object with methods bound to one WorkflowState.

const reader = createWorkflowStateReader(state)
const suspendedStep = reader.getSuspendedStep()

getWorkflowStepOutput(state, stepId)
getworkflowstepoutputstate-stepid的直接链接

Returns the output for a step ID, including nested workflow dot paths such as parent.child. For foreach steps, returns one entry per iteration. Suspended iterations can have undefined output entries.

const output = getWorkflowStepOutput(state, 'extract-data')

getWorkflowStepPayload(state, stepId)
getworkflowsteppayloadstate-stepid的直接链接

Returns the payload that was passed to a step. For foreach steps, returns one entry per iteration.

const payload = getWorkflowStepPayload(state, 'extract-data')

getWorkflowSuspendedStep(state)
getworkflowsuspendedstepstate的直接链接

Returns the first suspended step from the workflow state. When multiple steps are suspended, ordering follows the order stored in suspendedPaths.

const suspendedStep = getWorkflowSuspendedStep(state)

getWorkflowSuspendedSteps(state)
getworkflowsuspendedstepsstate的直接链接

Returns all suspended steps from the workflow state. Each result includes the top-level step ID, resume path, execution path, suspend payload, suspend output, and matching resume labels.

const suspendedSteps = getWorkflowSuspendedSteps(state)

getWorkflowResumeLabel(state, label)
getworkflowresumelabelstate-label的直接链接

Returns a resume label by name.

const label = getWorkflowResumeLabel(state, 'approve')

getWorkflowResumeLabels(state)
getworkflowresumelabelsstate的直接链接

Returns all resume labels from the workflow state.

const labels = getWorkflowResumeLabels(state)

Reader methods
Reader methods的直接链接

createWorkflowStateReader(state) returns the following methods:

getStatus:

() => WorkflowRunStatus
Returns the workflow run status.

getResult:

() => WorkflowState["result"]
Returns the terminal workflow result when it exists.

getError:

() => WorkflowState["error"]
Returns the terminal workflow error when it exists.

getStepOutput:

(stepId: string) => any | Array<any | undefined> | undefined
Returns the output for a step ID or nested workflow dot path.

getStepPayload:

(stepId: string) => any | Array<any | undefined> | undefined
Returns the payload for a step ID or nested workflow dot path.

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
Returns the first suspended 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 }> }>
Returns all suspended steps.

getResumeLabel:

(label: string) => { stepId: string; foreachIndex?: number } | undefined
Returns a resume label by name.

getResumeLabels:

() => Record<string, { stepId: string; foreachIndex?: number }>
Returns all resume labels.

Notes
Notes的直接链接

requestContext and tracingContext are only returned by workflow.getWorkflowRunById() when explicitly requested with fields.