Chapitre 5 sur 10. Construire une jonction qui attend deux résultats et éviter les confusions entre un ET et un OU.
1. Attendre deux preuves de réalisation
Une livraison NKILItech exige une préparation technique A et une vérification documentaire B. Les deux tâches peuvent avancer indépendamment. La transition Livrer ne doit cependant se produire qu’après la fin des deux.
On utilise les places A prêt, B prêt, A fini, B fini et Livré. Le marquage initial est (1,1,0,0,0). A déplace une unité de A prêt vers A fini ; B déplace une unité de B prêt vers B fini. Livrer exige une unité dans chacune des deux places Fini.
2. Une jonction est un ET
Après A seule, M = (0,1,1,0,0). Livrer reste bloquée parce que B fini vaut zéro. Après B, M = (0,0,1,1,0) : les deux conditions sont satisfaites. Livrer consomme les deux jetons de résultat et produit un jeton Livré, d’où (0,0,0,0,1).
Deux arcs entrants dans une même transition représentent donc un ET. À l’inverse, deux transitions distinctes aboutissant à la même place peuvent chacune produire dans cette place : elles ne s’attendent pas mutuellement. Confondre ces deux dessins permettrait une livraison après une seule tâche.
3. Une séparation n’est pas une création de dossiers
Pour ajouter une séparation explicite, on pourrait placer une transition Préparer avant A prêt et B prêt : elle consommerait une autorisation initiale et produirait les deux autorisations de travail. Le nombre brut de jetons passerait alors de un à deux.
Cette augmentation n’est pas automatiquement une erreur : les jetons ne comptent pas tous le même objet métier. Ici ils matérialisent deux obligations issues d’un même dossier. La bonne conservation porte sur chaque obligation, pas forcément sur la somme de tous les jetons du dessin.
4. Éviter de mélanger plusieurs dossiers
Notre réseau ne traite qu’une paire de tâches. Avec plusieurs dossiers anonymes, un jeton A fini d’un dossier pourrait être combiné avec un jeton B fini d’un autre. Le réseau ordinaire ne connaît pas leur identité et ne peut pas vérifier cette correspondance tout seul.
Selon le besoin, on peut isoler une instance par dossier, raffiner les places, ou adopter des jetons portant des données dans un réseau coloré. Cette limite doit être documentée avant de présenter le modèle comme une preuve d’appariement des résultats.
Trois exercices corrigés
Exercice 1 : Livraison prématurée
Livrer est-elle activable depuis (0,1,1,0,0) ?
Voir la correction de l’exercice 1
Non, car B fini = 0. Avoir terminé A ne suffit pas. La transition B reste activable ; son franchissement permettra ensuite Livrer.
Exercice 2 : Compter les états
Énumérez les états de la synchronisation sans ajouter de transition de séparation.
Voir la correction de l’exercice 2
Il y en a cinq : (1,1,0,0,0), (0,1,1,0,0), (1,0,0,1,0), (0,0,1,1,0), (0,0,0,0,1). Le quatrième est partagé par les deux ordres de tâches et ne doit pas être compté deux fois.
Exercice 3 : Corriger une mauvaise jonction
Un étudiant crée LivrerA depuis A fini et LivrerB depuis B fini, tous deux vers Livré. Pourquoi est-ce différent ?
Voir la correction de l’exercice 3
Chaque transition n’attend que sa propre entrée. On peut donc livrer après A seule, puis produire un second jeton Livré après B. La correction consiste en une seule transition Livrer ayant les deux places Fini en entrée.
Références pour approfondir
Introduction universitaire PetriSim, Javier Esparza : notes universitaires sur les réseaux de Pétri. Cours, cas et figures rédigés pour PandaCodeur ; aucune figure universitaire reproduite. Les exemples NKILItech sont fictifs.