Formation traitement des objets structurés, tutoriel & guide de travaux pratiques en pdf.
La condition d’activation dépend ensuite des arcs inhibiteurs :
o pour un arc inhibiteur sans inscription, la place amont ne doit pas contenir de jeton ordinaire
o si un arc inhibiteur comporte une inscription à n attributs, alors pour tous les jetons à n attributs de la place amont :
si un attribut de l’arc est un littéral, l’attribut correspondant de tous ces jetons ne doit pas être identique à ce littéral
si un attribut de l’arc est une variable, toute valeur pour l’attribut correspondant de tous ces jetons empêche l’activation de la transition
si plusieurs attributs du même arc contiennent la même variable, les attributs correspondants des jetons ne doivent pas être identiques, peu importe leurs valeurs
La condition d’activation dépend enfin du code condition :
o le code condition de la transition doit rendre la valeur true pour les valeurs courantes des variables
Activation d’une transition
Planification du tir
Lorsque les conditions d’activation sont réunies, le tir est d’abord planifié :
si la transition est non temporisée, le tir a lieu immédiatement
si la transition est temporisée le tir aura normalement lieu à t = date d’arrivée du jeton conforme + délai évalué par le code délai (sauf retard supplémentaire induit par une place à capacité, ou annulation de la planification)
Prolongation de la planification d’un tir (cas de places de sortie à capacité)
si le délai prévu a expiré et qu’une place sortante à capacité est saturée, le tir est momentanément retardé ; l’activation est maintenue et le tir aura lieu dès qu’un jeton quitte la place à capacité
Annulation de la planification d’un tir
soit une place commune à plusieurs transitions aval t1, t2,…, tn. Si un jeton a initialement validé t1, et que ce jeton a disparu avant la date prévue suite au franchissement de t2 ou …. tn, la planification du tir de t1 est annulée
Effet du tir
Le code action est exécuté chaque fois qu’un jeton est retiré d’une place amont
Les marques qui valident la transition sont supprimées des places amont
Des marques sont introduites dans les places aval conformément aux inscriptions des arcs sortants (constantes ou objets pointés par les variables)
Le simulateur
La liste d’événements du simulateur
Le simulateur gère une liste d’événements qui ont déjà eu lieu ou qui auront lieu.
Les événements
Un événement comporte les informations suivantes :
une transition (à tirer) des jetons d’entrée
des liens avec les variables de transition
Liste d’événements
Les entrées (éléments) de cette liste sont rangées par dates croissantes. Tout élément de la liste comporte :
une date
un ensemble d’événements inscrits pour cette date
Mise à jour de la liste d’événements
Lorsqu’un nouvel événement doit être inscrit pour une date donnée, la liste est parcourue :
si une entrée (élément) existe déjà pour cette date, l’événement est simplement ajouté à l’ensemble des événements existants
sinon un nouvel élément est inséré à l’endroit adéquat de la liste.
Algorithme de simulation
L’horloge du simulateur est un compteur qui représente un nombre entier ou réel dans une unité quelconque à définir en rapport avec le processus réel à simuler.
partant de l’instant initial 0 (ordre initialize du menu simulateur), pour chaque date inscrite, des tirs ont lieu tant qu’il reste des événements dans la liste pour cette date ou des transitions franchissables immédiatement (transitions sans délai)
lorsque la liste ne contient plus d’événement pour la date de simulation courante et s’il n’y a plus de transitions directes validées, l’élément est retiré de la liste tandis que le temps du simulateur passe à la valeur figurant dans la prochaine entrée de la liste
la simulation s’arrête lorsque la liste d’événements est vide et qu’il n’y a plus de transition directe franchissable
L’histoire du simulateur
Le simulateur conserve la trace des transitions qui ont été tirées grâce à une liste de type FIFO dont la longueur est définie par l’utilisateur (20 par défaut).
Modes d’affichage du simulateur
En mode visualisation dynamique (ordre run du menu simulateur)
les franchissements sont tous affichés séquentiellement sur la fenêtre d’écran (un seul jeton se déplace à la fois) l’horloge reste bloquée pour tous les tirs qui sont exécutés à la même date c’est ainsi que se traduit la simultanéité
En mode exécution en arrière-plan (ordre background run du menu simulateur seul le marquage final est affiché
En mode exécution arrière (ordre back du menu simulateur) les jetons reviennent dans les places amont de la transition
note : les actions de type « effet de bord » ne sont pas annulées
Etude de cas (pour des transitions non temporisées)
Sélection et spécification d’objets avec des attributs littéraux
La sélection d’objets dans une place est faite par les attributs de l’arc entrant
La spécification des objets déposés dans une place est faite par les attributs de l’arc sortant
Exemple 1
Extraction, à partir d’un lot de commandes, en attente ou prêtes, des commandes prêtes pour une facturation et une livraison
Exemple 2
Des étudiants attendent dans le hall de l’école
Les trois arcs, dont les inscriptions fixent « l’année », sélectionnent et répartissent les étudiants dans les salles
L’ordre d’entrée des étudiants dans les amphis et la salle E300 est déterminé par le simulateur (le choix est quelconque puisqu’il n’y a pas de délai sur les transitions) ; pour imposer un ordre il faudrait ranger les jetons étudiants dans des collections ordonnées (c.-à-d. des objets structurés Smalltalk)
1. Règles de franchissement générales
1.1. Terminologie
1.2. Résolution des conflits (cas de transitions non temporisées)
1.3. Conditions d’activation (de validation)
1.4. Activation d’une transition
1.5. Effet du tir
1.6. Exemples d’activation
1.7. Le simulateur
1.7.1. La liste d’événements du simulateur
1.7.2. Algorithme de simulation
1.7.3. L’histoire du simulateur
1.7.4. Modes d’affichage du simulateur
2. Etude de cas (pour des transitions non temporisées)
2.1. Sélection et spécification d’objets avec des attributs littéraux
2.2. Sélection et spécification d’objets avec des attributs variables
2.3. Sélection d’objets identiques en provenance de plusieurs sources
2.4. Blocage d’un traitement avec un arc inhibiteur à attribut
2.5. Blocage d’un traitement avec une place sortante à capacité
2.6. Sélection d’objets par un code condition
3. Traitement des objets structurés
3.1. Petit aperçu des objets Smalltalk
3.2. Les tests d’égalité et d’identité
3.3. Sélection d’objets structurés
3.4. Modification d’un objet structuré
4. Opérations courantes sur les objets
4.1. Comptage d’opérations
4.2. Attributs d’arc sortant fonctions d’attributs d’un arc entrant
4.3. Génération d’un nombre fini de jetons