Run.cancel()
La méthode .cancel() annule une exécution de Workflow, arrête l’exécution et libère les ressources.
Cette méthode interrompt toutes les étapes en cours et met à jour l’état du Workflow sur 'canceled'. Elle fonctionne aussi bien pour les Workflows actifs que pour les Workflows suspendus ou en attente.
Exemple d’utilisationLien direct vers Exemple d’utilisation
const run = await workflow.createRun()
await run.cancel()
// Returns: { message: 'Workflow run canceled' }
ParamètresLien direct vers Paramètres
Aucun paramètre:
void
Cette méthode n’accepte aucun paramètre
Valeur renvoyéeLien direct vers Valeur renvoyée
result:
Promise<{ message: string }>
Promise qui se résout avec { message: 'Workflow run canceled' } lorsque l’annulation réussit
Fonctionnement de l’annulationLien direct vers Fonctionnement de l’annulation
Lorsqu’il est appelé, le Workflow :
- Déclenche le signal d’interruption : utilise l’API Web standard AbortSignal pour notifier les étapes en cours
- Empêche les étapes suivantes : aucune étape supplémentaire n’est exécutée
Comportement du signal d’interruptionLien direct vers Comportement du signal d’interruption
Les étapes qui vérifient le paramètre abortSignal peuvent réagir à l’annulation :
- Les étapes peuvent écouter l’événement 'abort' :
abortSignal.addEventListener('abort', callback) - Les étapes peuvent vérifier si elles ont déjà été interrompues :
if (abortSignal.aborted) { ... } - Utile pour annuler les délais d’expiration, les requêtes réseau ou les opérations longues
Les étapes doivent vérifier activement le signal d’interruption pour être annulées en cours d’exécution ; dans le cas contraire, l’étape actuelle s’exécute jusqu’à son terme et les étapes suivantes ne s’exécutent pas.
Exemples d’utilisation avancésLien direct vers Exemples d’utilisation avancés
Annuler un Workflow en cas d’erreurLien direct vers Annuler un Workflow en cas d’erreur
const run = await workflow.createRun()
try {
const result = await run.start({ inputData: { value: 'initial data' } })
} catch (error) {
await run.cancel()
}
Créer une étape qui réagit à l’annulationLien direct vers Créer une étape qui réagit à l’annulation
const step = createStep({
id: 'long-running-step',
execute: async ({ inputData, abortSignal, abort }) => {
const timeout = new Promise(resolve => {
const timer = setTimeout(() => resolve('done'), 10000)
// Clean up if canceled
abortSignal.addEventListener('abort', () => {
clearTimeout(timer)
resolve('canceled')
})
})
const result = await timeout
// Check if aborted after async operation
if (abortSignal.aborted) {
return abort() // Stop execution
}
return { result }
},
})