Aller au contenu principal

Lecteur d’état de Workflow

Les assistants de lecture d’état de Workflow inspectent le WorkflowState public renvoyé par workflow.getWorkflowRunById(). Utilisez-les pour récupérer des exécutions suspendues et inspecter les libellés de reprise. Ils lisent également les payloads ou les sorties d’étapes sans analyser les instantanés bruts de Workflow.

Exemple d’utilisation
Lien direct vers Exemple d’utilisation

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

Fonctions
Lien direct vers Fonctions

createWorkflowStateReader(state)
Lien direct vers createworkflowstatereaderstate

Crée un objet lecteur avec des méthodes liées à un WorkflowState.

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

getWorkflowStepOutput(state, stepId)
Lien direct vers getworkflowstepoutputstate-stepid

Renvoie la sortie pour un ID d’étape, y compris les chemins par points de Workflows imbriqués tels que parent.child. Pour les étapes foreach, renvoie une entrée par itération. Les itérations suspendues peuvent avoir des entrées de sortie undefined.

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

getWorkflowStepPayload(state, stepId)
Lien direct vers getworkflowsteppayloadstate-stepid

Renvoie le payload transmis à une étape. Pour les étapes foreach, renvoie une entrée par itération.

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

getWorkflowSuspendedStep(state)
Lien direct vers getworkflowsuspendedstepstate

Renvoie la première étape suspendue depuis l’état du Workflow. Lorsque plusieurs étapes sont suspendues, l’ordre suit celui stocké dans suspendedPaths.

const suspendedStep = getWorkflowSuspendedStep(state)

getWorkflowSuspendedSteps(state)
Lien direct vers getworkflowsuspendedstepsstate

Renvoie toutes les étapes suspendues depuis l’état du Workflow. Chaque résultat inclut l’ID d’étape de premier niveau, le chemin de reprise, le chemin d’exécution, le payload de suspension, la sortie de suspension et les libellés de reprise correspondants.

const suspendedSteps = getWorkflowSuspendedSteps(state)

getWorkflowResumeLabel(state, label)
Lien direct vers getworkflowresumelabelstate-label

Renvoie un libellé de reprise par nom.

const label = getWorkflowResumeLabel(state, 'approve')

getWorkflowResumeLabels(state)
Lien direct vers getworkflowresumelabelsstate

Renvoie tous les libellés de reprise depuis l’état du Workflow.

const labels = getWorkflowResumeLabels(state)

Méthodes du lecteur
Lien direct vers Méthodes du lecteur

createWorkflowStateReader(state) renvoie les méthodes suivantes :

getStatus:

() => WorkflowRunStatus
Renvoie l’état de l’exécution du Workflow.

getResult:

() => WorkflowState["result"]
Renvoie le résultat final du Workflow lorsqu’il existe.

getError:

() => WorkflowState["error"]
Renvoie l’erreur finale du Workflow lorsqu’elle existe.

getStepOutput:

(stepId: string) => any | Array<any | undefined> | undefined
Renvoie la sortie d’un ID d’étape ou d’un chemin par points de Workflow imbriqué.

getStepPayload:

(stepId: string) => any | Array<any | undefined> | undefined
Renvoie le payload d’un ID d’étape ou d’un chemin par points de Workflow imbriqué.

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
Renvoie la première étape suspendue.

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 }> }>
Renvoie toutes les étapes suspendues.

getResumeLabel:

(label: string) => { stepId: string; foreachIndex?: number } | undefined
Renvoie un libellé de reprise par nom.

getResumeLabels:

() => Record<string, { stepId: string; foreachIndex?: number }>
Renvoie tous les libellés de reprise.

Remarques
Lien direct vers Remarques

requestContext et tracingContext ne sont renvoyés par workflow.getWorkflowRunById() que lorsqu’ils sont explicitement demandés avec fields.