メインコンテンツへ移動

Workflow state reader

Workflow state reader ヘルパーは、workflow.getWorkflowRunById() が返す公開 WorkflowState を検査します。中断された Run の復元や resume label の確認に使用できます。また、生の 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への直接リンク

1 つの WorkflowState にメソッドをバインドした reader オブジェクトを作成します。

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

getWorkflowStepOutput(state, stepId)
getworkflowstepoutputstate-stepidへの直接リンク

ステップ ID の出力を返します。parent.child のようなネストされた Workflow のドットパスにも対応します。foreach ステップでは、反復ごとに 1 つのエントリを返します。中断された反復の出力エントリは undefined になる場合があります。

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

getWorkflowStepPayload(state, stepId)
getworkflowsteppayloadstate-stepidへの直接リンク

ステップに渡されたペイロードを返します。foreach ステップでは、反復ごとに 1 つのエントリを返します。

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

getWorkflowSuspendedStep(state)
getworkflowsuspendedstepstateへの直接リンク

Workflow の状態から、最初に中断されたステップを返します。複数のステップが中断されている場合は、suspendedPaths に保存された順序に従います。

const suspendedStep = getWorkflowSuspendedStep(state)

getWorkflowSuspendedSteps(state)
getworkflowsuspendedstepsstateへの直接リンク

Workflow の状態から、中断されたすべてのステップを返します。各結果には、トップレベルのステップ ID、再開パス、実行パス、中断時のペイロード、中断時の出力、および一致する resume label が含まれます。

const suspendedSteps = getWorkflowSuspendedSteps(state)

getWorkflowResumeLabel(state, label)
getworkflowresumelabelstate-labelへの直接リンク

名前を指定して resume label を返します。

const label = getWorkflowResumeLabel(state, 'approve')

getWorkflowResumeLabels(state)
getworkflowresumelabelsstateへの直接リンク

Workflow の状態から、すべての resume label を返します。

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
ステップ ID またはネストされた Workflow のドットパスに対応する出力を返します。

getStepPayload:

(stepId: string) => any | Array<any | undefined> | undefined
ステップ ID またはネストされた Workflow のドットパスに対応するペイロードを返します。

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
名前を指定して resume label を返します。

getResumeLabels:

() => Record<string, { stepId: string; foreachIndex?: number }>
すべての resume label を返します。

注意事項
注意事項への直接リンク

requestContexttracingContext は、fields で明示的に要求した場合にのみ workflow.getWorkflowRunById() から返されます。