Aller au contenu

Événements et erreurs

Cette page décrit comment le flux reprend après une action asynchrone (les événements de complétion) et comment il s'arrête quand quelque chose ne va pas (la gestion des erreurs).

Les événements de complétion

Le moteur lance les BPM d'étape sans les attendre. Ce qui fait avancer la séquence, c'est un événement de complétion émis par l'automate ou par une action physique, une fois l'action terminée. Chaque événement déclenche un petit BPM « - Fin » qui suit toujours le même pattern :

  1. il est lancé sur l'entité concernée (start-form entityId, en général l'équipement),
  2. il retrouve le contexte (cycle et équipement associés),
  3. il acquitte le drapeau de fin de l'automate (SetPropertyValue) pour qu'il ne se redéclenche pas,
  4. il relance ALL - Prochaine étape, qui avance d'un cran.

C'est l'application concrète du modèle « un événement = une avance ».

Inventaire des callbacks

BPM Émis à la fin de…
CC - Concentration - Fin une passe de concentration.
Vi CC - Vidage - Fin un vidage de cuvon.
TR - Transfert - Fin un transfert de produit (extracteur vers concentrateur).
VR - Fin d'action un mouvement de vérin (couvercle).
AMR - Fin mission une mission de robot mobile (dépose d'un cuvon ou conteneur).
ALL - Etape suivante équipement principal une action d'un équipement principal (callback générique).

Tous relancent ALL - Prochaine étape. Les noms de tâche internes mentionnant encore « CC - Prochaine étape » sont d'anciens libellés : le BPM réellement lancé est bien le moteur générique.

Étape sans événement

Une étape qui n'émet aucun événement propre (étape sautée, mode dégradé) ne passe pas par un callback : elle s'auto-avance en relançant ALL - Prochaine étape avec nouvelle_etape_forcee (voir le moteur).

La gestion des erreurs

Les erreurs se traitent à trois niveaux.

1. Dans le moteur

ALL - Prochaine étape refuse d'avancer si la configuration ne suit pas :

  • Étape inconnue (le numéro d'étape n'est pas dans SEQUENCE_ORDER) déclenche Alerte séquence.
  • BPM inconnu (l'étape n'a pas d'action dans SEQUENCE_ACTIONS) déclenche Alerte BPM.

Ces deux branches notifient sans faire avancer la séquence, ce qui signale une config incomplète plutôt que de planter silencieusement.

2. Dans les blocs d'étape

Chaque bloc réutilisable a ses branches d'erreur métier, qui arrêtent la séquence avec un message explicite plutôt que de continuer sur une base fausse : OF / cycle / équipement non valable et champs manquants (prérequis), récipient sale (présence), statut gestionnaire robots inconnu (appel robot), erreur de configuration (prérequis spécifiques). Certaines rebouclent après une saisie opérateur (complétion d'un champ), d'autres sont terminales.

3. Sur défaut d'équipement

Quand l'automate signale une panne, deux BPM interviennent :

  • TECH - Détection des erreurs d'équipement de production récupère le code d'erreur de l'automate, le traduit en message lisible et notifie l'opérateur.
  • ALL - Echec exécution équipement de production prend en charge un échec d'exécution : il retrouve l'équipement principal et son contexte, puis alerte et notifie. C'est une branche terminale (pas de relance du moteur), le temps qu'un opérateur intervienne.

Ne pas confondre erreur et mode dégradé

Un robot occupé ou en panne n'est pas une erreur : c'est le mode dégradé, géré par ALL - Appel robot, où l'opérateur prend le relais et la séquence continue. Une erreur au sens de cette section arrête la séquence et demande une intervention.