Pré. | Proc. |
Message d'événement
Lorsqu'il est utilisé dans un flux de séquence normal, l'événement de message peut être utilisé pour envoyer ou recevoir un message.
- Lors de l'envoi d'un message à un participant, les valeurs de tous les paramètres de propriété sont copiées ; une fois le message envoyé, le jeton continue le long du flux de séquence
- Lors de la réception d'un message, l'événement est déclenché lorsqu'un message est reçu.
Créer Modèle BPMN
Séquence
Piscine 1
- Le jeton démarre à partir de StartEvent1
- À la réception du jeton, l'expéditeur (un événement de lancement de message intermédiaire) crée un message et copie les valeurs de propriété actuelles dans le message
- L'expéditeur envoie le message au participant « À » (Pool2, StartEvent2)
- L'expéditeur transmet le jeton le long de son flux de séquence, jusqu'au récepteur
- Le jeton attend chez le récepteur qu'un message arrive
Piscine 2
- StartEvent2 reçoit un message et démarre un jeton
- StartEvent2 copie les valeurs du message et les définit dans le jeton
- StartEvent2 transmet le jeton le long de son flux de séquence jusqu'à EndEvent3
- EndEvent3 crée un message et copie les valeurs de propriété actuelles dans le message
- EndEvent3 envoie le message au participant « À » (Pool1, Receiver)
Pool1 suite
- Le récepteur en attente est réveillé et les valeurs des propriétés sont mises à jour à partir du message entrant
Créer Diagramme
- Créer un diagramme de collaboration BPMN 2.0
- Sélectionnez l'option « Créer ce diagramme dans un nouveau CollaborationModel »
- Créez Pool1 et Pool2 en faisant glisser l'icône « Pool » de la boîte à outils sur le diagramme
Dans le pool 1
- Créer un événement Démarrer de type « Aucun », nommé StartEvent1
- Ajoutez une Flux séquence à l'événement intermédiaire cible de type « Message de lancement », appelé expéditeur
- Ajoutez une Flux séquence à l'activité cible de type « abstrait », appelée Activité1
- Ajoutez des flux Séquence à la cible :
- Événement de fin de type « Aucun », appelé EndEvent1
- Événement de fin de type « Aucun », appelé EndEvent2
Dans le pool 2
- Créer un événement Démarrer de type « Message », appelé StartEvent2
- Ajoutez une Flux séquence à l'activité cible de type « abstrait », appelée Activité2
- Ajoutez une Flux séquence à la Passerelle cible de type « Exclusive », appelée Gateway2
- Ajoutez des flux Séquence à la cible :
- Activité de type 'abstrait', appelée Activity3
- Activité de type « abstrait », appelée Activity4
- Ajoutez des flux Séquence de l'activité 3 et de l'activité 4 à la Passerelle cible de type « Exclusif », appelée Gateway3
- Ajoutez une Flux séquence à l'événement de fin de type « Message », appelé EndEvent3
Flux de messages
- Ajouter un flux de messages de l'expéditeur à StartEvent2
- Ajouter un flux de messages de EndEvent3 à Receiver
Configurer BPSim
Afin de montrer la capacité du flux de messages à transporter des valeurs, nous créons une Paramètres Propriété 'M1' et modifions sa valeur dans chaque activité. Nous utilisons ensuite la valeur de 'M1' comme partie de l'expression de la condition de la Flux séquence .
Tâche |
Description |
---|---|
Créer un artefact et Paquetage |
|
Valeurs des propriétés |
Nous allons donner à la Paramètres Propriété 'M1' une valeur initiale de 10 à StartEvent1 . Ensuite, nous modifions la valeur au fur et à mesure que le jeton circule dans les processus et que la valeur est copiée entre les participants. Dans la liste des éléments à gauche le dialogue :
Conseil : Le format de { PropertyName } est une forme courte pratique de getProperty( " PropertyName ") . |
Paramètres de contrôle |
Nous n’avons besoin que d’un seul jeton dans cette simulation pour évaluer le comportement du modèle.
|
Exécuter Simulation
- Dans la barre d'outils de la boîte dialogue « Configurer BPSim », cliquez sur le bouton Exécuter ; la boîte dialogue « Contrôleur Simulation BPSim » s'affiche
- Cliquez sur la flèche déroulante de l'icône « Exécuter » et sélectionnez « Simulation standard » ; la simulation démarre
- Lorsque la simulation est terminée, cliquez sur le bouton ; la dialogue « Paramètres Propriété Values » s'affiche, traçant les valeurs des propriétés pendant la simulation
- Dans le champ « Numéro de jeton », saisissez « 0 », puis cliquez sur le bouton Query et sur l'onglet « Grouper par propriété »
Analyse
Comme le « ProcessingTime » de l'Activité1 a été défini comme une valeur de distribution, il s'avère que :
- valeur « M1 » de [Process1] après Pool1.StartEvent1 est « 10 », comme prévu
- *[Process2] valeur 'M1' de Pool2.StartEvent2 est '10' ; cette valeur est issue d'un message envoyé par Pool1.Sender
- [Process2] Pool2.Activity2 a augmenté Process2.M1 de 10 ; [Process2.M1 == 20]
- [Process1] Pool1.Activity1 a augmenté Process1.M1 de 100 ; [ Process1.M1 == 110]
- [Process2] Les expressions de condition sont évaluées ; comme « 20 > 15 », le jeton sera transmis à l'activité 3 [Process2.M1 == 20]
- [Process2] Pool2.Activity3 a augmenté Process2.M1 de 10 ; [Process2.M1 == 30]
- [Process1] Pool1.Receiver est atteint et en attente [Process1.M1 == 110]
- [Process2] Pool2.Gateway3 sert de nœud de fusion et continue jusqu'à EndEvent3 [Process2.M1 == 30]
- *[Process1] Pool1.Receiver est réveillé par un message (transportant M1 == 30 ) et valeur de Process1.M1 passe de 110 à 30
- [Process1] Les expressions de condition sont évaluées ; comme « 30 < 50 », le jeton sera transmis à EndEvent2 [Process1.M1 == 30]
Notes
- Les lignes marquées d'un astérisque (*) sont les effets des flux de messages
- L'ordre au sein d'un processus est défini ; cependant, l'ordre entre deux processus n'est pas toujours prévisible
- L'événement Throwing Message lance un autre processus ; le message Catching sert de synchronisation de thread