Aller au contenu principal

Run.resume()

La méthode .resume() reprend une exécution de Workflow suspendue avec de nouvelles données, ce qui permet de poursuivre l’exécution à partir d’une étape spécifique.

Exemple d’utilisation
Lien direct vers Exemple d’utilisation

const run = await workflow.createRun()

const result = await run.start({ inputData: { value: 'initial data' } })

if (result.status === 'suspended') {
const resumedResults = await run.resume({
resumeData: { value: 'resume data' },
})
}

Paramètres
Lien direct vers Paramètres

resumeData?:

z.infer<TResumeSchema>
Données permettant de reprendre l’étape suspendue

step?:

Step<string, any, any, TResumeSchema, any, TEngineType> | [...Step<string, any, any, any, any, TEngineType>[], Step<string, any, any, TResumeSchema, any, TEngineType>] | string | string[]
Étape(s) à partir desquelles reprendre l’exécution. Peut être une instance Step, un tableau de Steps, une chaîne d’ID d’étape ou un tableau de chaînes d’ID d’étape

requestContext?:

RequestContext
Données de Request Context à utiliser lors de la reprise

retryCount?:

number
Nombre de nouvelles tentatives facultatif pour l’exécution d’un Workflow imbriqué

forEachIndex?:

number
Cible une itération spécifique d’une étape .foreach() suspendue. Transmettez l’index à base zéro de l’itération à reprendre ; les autres itérations restent suspendues. Omettez ce champ pour reprendre toutes les itérations suspendues de l’étape avec les mêmes resumeData.

tracingContext?:

TracingContext
Contexte de traçage pour créer des spans enfants et ajouter des métadonnées. Injecté automatiquement lors de l’utilisation du système de traçage de Mastra.

currentSpan?:

Span
Span actuel pour créer des spans enfants et ajouter des métadonnées. Utilisez-le pour créer des spans enfants personnalisés ou mettre à jour les attributs du span pendant l’exécution.

tracingOptions?:

TracingOptions
Options de configuration de Tracing.

metadata?:

Record<string, any>
Métadonnées à ajouter au span racine de la trace. Utile pour ajouter des attributs personnalisés, tels que des ID utilisateur, des ID de session ou des feature flags.

requestContextKeys?:

string[]
Clés RequestContext supplémentaires à extraire comme métadonnées pour cette trace. Prend en charge la notation par points pour les valeurs imbriquées (par exemple, 'user.id').

traceId?:

string
ID de trace à utiliser pour cette exécution (1 à 32 caractères hexadécimaux). S’il est fourni, cette trace fera partie de la trace spécifiée.

parentSpanId?:

string
ID du span parent à utiliser pour cette exécution (1 à 16 caractères hexadécimaux). S’il est fourni, le span racine sera créé comme enfant de ce span.

tags?:

string[]
Tags à appliquer à cette trace. Étiquettes de chaîne pour catégoriser et filtrer les traces.

outputOptions?:

OutputOptions
Options de configuration de la sortie.

includeState?:

boolean
Indique si l’état de l’exécution du Workflow doit être inclus dans le résultat.

Valeurs renvoyées
Lien direct vers Valeurs renvoyées

result:

Promise<WorkflowResult<TState, TOutput, TSteps>>
Promise qui se résout avec le résultat de l’exécution du Workflow, contenant les sorties des étapes et l’état

traceId?:

string
ID de trace associé à cette exécution lorsque Tracing est activé. Utilisez-le pour corréler les journaux et déboguer le flux d’exécution.

spanId?:

string
ID du span racine associé à cette exécution lorsque Tracing est activé. Utilisez-le pour la recherche et la corrélation au niveau du span.

Exemple d’utilisation avancé
Lien direct vers Exemple d’utilisation avancé

if (result.status === 'suspended') {
const resumedResults = await run.resume({
step: result.suspended[0],
resumeData: { value: 'resume data' },
})
}
remarque

Lorsqu’une seule étape est suspendue, vous pouvez omettre le paramètre step et le Workflow reprend automatiquement cette étape. Pour les Workflows comportant plusieurs étapes suspendues, vous devez indiquer explicitement l’étape à reprendre.

Reprendre une seule itération de .foreach()
Lien direct vers resuming-a-single-foreach-iteration

Lorsqu’une étape .foreach() se suspend sur plusieurs itérations, utilisez forEachIndex (à base zéro) pour reprendre une itération à la fois avec des resumeData différents. Les itérations non ciblées par forEachIndex restent suspendues jusqu’à leur reprise.

// Resume only the second iteration (index 1) with its own data
await run.resume({
step: 'approve',
resumeData: { ok: true },
forEachIndex: 1,
})

// Later, resume the first iteration with different data
await run.resume({
step: 'approve',
resumeData: { ok: false },
forEachIndex: 0,
})

Si forEachIndex est omis, chaque itération suspendue de l’étape reprend avec les mêmes resumeData.