Synchroniser plusieurs travaux

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.

Les tâches A et B possèdent chacune leur autorisation. La jonction consomme leurs deux résultats avant de livrer.
Les tâches A et B possèdent chacune leur autorisation. La jonction consomme leurs deux résultats avant de livrer. Cliquer pour agrandir.

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.

Une synchronisation attend toutes ses entrées. Elle n’atteste pas, à elle seule, que ces entrées appartiennent au même client.

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.