> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # 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’utilisation ```typescript const run = await workflow.createRun() await run.cancel() // Returns: { message: 'Workflow run canceled' } ``` ## Paramètres **Aucun paramètre** (`void`): Cette méthode n’accepte aucun paramètre ## 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’annulation Lorsqu’il est appelé, le Workflow : 1. **Déclenche le signal d’interruption** : utilise l’API Web standard AbortSignal pour notifier les étapes en cours 2. **Empêche les étapes suivantes** : aucune étape supplémentaire n’est exécutée ## 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és ### Annuler un Workflow en cas d’erreur ```typescript 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’annulation ```typescript 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 } }, }) ``` ## Voir aussi - [Présentation des Workflows](https://mastra.zisheng.pro/fr/docs/workflows/overview) - [Workflow.createRun()](https://mastra.zisheng.pro/fr/reference/workflows/workflow-methods/create-run)