Événements
Chaque action importante dans le cycle de vie d'un workflow produit un événement : le workflow a démarré, une activité a été planifiée, une activité s'est achevée, un signal a été reçu, le workflow s'est terminé. Ces événements sont enregistrés dans l'ordre, formant un log en ajout seul appelé historique d'exécution.
Pourquoi les événements comptent
C'est l'historique d'exécution qui rend l'exécution durable possible. Il constitue la source de vérité de l'état d'un workflow. Lorsqu'un worker doit reprendre un workflow (après un crash, un redémarrage ou une réattribution de tâche), il rejoue l'historique d'exécution depuis le début.
Pendant le rejeu, le code du workflow s'exécute à nouveau depuis le début, mais les activités terminées ne sont pas réexécutées : leurs résultats sont relus depuis l'historique. Le workflow revient exactement au point où il a été interrompu, sans que vous ayez à écrire de code de récupération.
La fiabilité du rejeu repose sur le caractère déterministe du code du workflow. Consultez Workflows > Déterminisme pour connaître la contrainte et la manière dont le SDK l'applique.
Types d'événements
| Type | Émis quand |
|---|---|
WORKFLOW_EXECUTION_STARTED | Une exécution de workflow démarre |
WORKFLOW_EXECUTION_COMPLETED | Un workflow se termine avec succès |
WORKFLOW_EXECUTION_FAILED | Un workflow se termine sur une erreur non gérée |
WORKFLOW_EXECUTION_CANCELED | Un workflow est annulé |
WORKFLOW_EXECUTION_CONTINUED_AS_NEW | Un workflow réinitialise son historique |
WORKFLOW_TASK_TIMED_OUT | Une tâche de workflow dépasse le délai imparti |
WORKFLOW_TASK_FAILED | Une tâche de workflow rencontre une erreur |
ACTIVITY_TASK_STARTED | Une activité démarre |
ACTIVITY_TASK_COMPLETED | Une activité se termine avec succès |
ACTIVITY_TASK_RETRYING | Une activité est relancée |
ACTIVITY_TASK_FAILED | Une activité échoue |
Limites de l'historique
Chaque historique d'exécution est limité : 51 200 événements ou 50 Mo, selon la limite atteinte en premier. Pour les workflows qui s'exécutent très longtemps ou qui traitent de très gros volumes de travail, la plateforme fournit un mécanisme appelé continue-as-new, qui permet à un workflow de reporter son état essentiel dans un nouvel historique sans interrompre son exécution.
Les événements décrits ici sont des événements d'historique d'exécution : il s'agit de l'enregistrement interne de la progression du workflow, utilisé pour la durabilité et le rejeu. La plateforme prend également en charge des événements de streaming que des systèmes externes peuvent consommer en temps réel. Ces événements relèvent d'un concept distinct, présenté dans Streaming.