Modèle d’exécution

Une instance progresse à partir des dépendances explicites du graphe. Un node ne devient exécutable que lorsque son chemin actif et ses prédécesseurs le permettent ; des branches indépendantes peuvent avancer en parallèle, et une attente suspend l’instance sans perdre son état ni rejouer les steps déjà terminés.

Cycle de vie d’une instance

ÉtatSignification
runningL’instance peut continuer son exécution.
waitingL’instance attend une échéance, une interaction, un événement ou une exécution enfant.
stoppingUn arrêt a été demandé pendant qu’une exécution active doit encore céder la main proprement.
completedLe processus a atteint une fin réussie et son output est disponible.
failedUne erreur terminale empêche cette tentative de continuer.
retry_exhaustedUne opération rejouable a épuisé son budget de retry durable.
supersededUne continuation corrective a remplacé cette instance dans sa lignée.
stoppedL’instance a été arrêtée explicitement.

Ces états décrivent l’exécution d’un process_instance. Ils ne sont pas les statuts métier de la commande, de la facture, du retour ou de toute autre ressource traitée par le processus.

La liste des instances permet de comparer les statuts, la progression et les modes de déclenchement.
La liste des instances permet de comparer les statuts, la progression et les modes de déclenchement. Agrandir

États persistés des steps

L’historique durable d’une instance conserve un step lorsqu’un node atteint un résultat observable. Les états persistés actuels sont les suivants ; un node qui n’a pas encore été atteint n’a pas besoin d’un steppending matérialisé.

ÉtatSignification
completedLe node a terminé et ses sorties durables sont disponibles.
waitingLe node a matérialisé une attente et reprendra lorsque cette attente sera satisfaite.
failedLe node n’a pas pu produire une sortie utilisable pour cette tentative.
skippedLe node n’a pas été exécuté parce que sa branche est inactive ou qu’un ancêtre a rendu ce chemin impossible.
cancelledUne attente ou un step encore actif a été interrompu, par exemple lors de l’arrêt d’une instance.
État du graphe ≠ état persistant d’un step L’éditeur ou l’observabilité peuvent représenter visuellement qu’un node est prêt, en cours ou pas encore atteint. Le contrat persistant du step reste centré sur les résultats durables ci-dessus.

Dépendances et parallélisme

A complété
B branche 1
C branche 2
D attend B + C

Après A, B et C n’ont pas de dépendance entre eux et peuvent progresser indépendamment. D ne devient disponible qu’une fois ses prédécesseurs actifs satisfaits.

Dans un chemin linéaire A → B → C, l’ordre est strict. Lorsque plusieurs branches actives partent d’un même point et n’ont pas de dépendance entre elles, leur exécution peut se chevaucher ; ne comptez donc pas sur un ordre implicite entre deux branches parallèles.

À une convergence, le node aval attend les prédécesseurs qui appartiennent réellement au chemin actif. Cette même structure est utilisée pour vérifier les ancêtres garantis.

Routage et branches inactives

Un node routeur sélectionne une continuation explicite. Les branches non sélectionnées ne sont pas exécutées ; leurs descendants qui ne sont plus atteignables deviennent skipped. Une route choisie fait partie du résultat de cette exécution du node et reste stable lorsque l’instance reprend après une attente.

Une sortie produite uniquement dans une branche conditionnelle ne devient donc pas automatiquement disponible après la convergence. Voir Routage et décisions.

Suspensions et reprises

Une attente durable place le step concerné et l’instance en waiting. L’état nécessaire à la continuation est conservé ; lorsque le signal attendu arrive, l’instance reprend à partir de cette attente au lieu de recommencer depuis le début.

FamilleCe qui peut être attendu
TimerWait ou retry durable jusqu’à une échéance.
Action utilisateurFormulaire, choix, affichage ou interaction d’extension présentée au participant.
ApprobationDécision humaine portée par une approval_request.
ÉvénementAttente d’un événement plateforme ou d’extension corrélé.
Sous-processus / ForeachAttente d’une ou plusieurs instances enfants selon la politique configurée.
Agent RunAttente de la fin de l’exécution interne d’un Agent task.
External TaskAttente du résultat typé fourni par un service externe autorisé.

Une attente réussie produit la sortie du node puis débloque les continuations qui en dépendent. Les steps déjàcompleted restent terminés et ne sont pas rejoués simplement parce que l’instance a été suspendue.

Erreurs et propagation

Lorsqu’un node échoue définitivement, son step devient failed et les continuations qui dépendent de ce résultat ne sont pas exécutées. Une branche indépendante déjà exécutable n’est pas transformée rétroactivement en échec parce qu’une autre branche a rencontré une erreur.

Avant de rendre l’échec terminal, Ormuz peut planifier un retry durable lorsque l’erreur est explicitement classée comme rejouable et que l’opération est sûre à rejouer. Pendant cette attente de retry, le node restewaiting. Le détail du budget et des garanties d’idempotence est dans Erreurs, retries et idempotence.

Une erreur inconnue n’est pas automatiquement rejouée Le runtime ne suppose pas qu’une opération d’écriture est sûre à rejouer. Une erreur doit être reconnue comme transitoire et l’opération doit satisfaire les garanties de replay requises pour entrer dans le retry durable.

État process vs état métier

Certaines ressources process-owned — par exemple un onboarding, un litige ou un retour — conservent la relation avec l’instance qui porte leur traitement. Cette relation n’assimile jamais le statut de l’instance au statut de la ressource.

completed signifie que le contrat du processus s’est terminé correctement ; cela ne doit pas être interprété comme « facture payée », « retour accepté » ou « onboarding approuvé » sans la transition métier correspondante. De même, un arrêt de l’instance n’invente pas automatiquement une annulation métier.