Pré. | Proc. |
Événement de message
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 un Modèle BPMN
Séquence
Piscine1
- Le jeton commence à 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 'To' (Pool2, StartEvent2)
- L'expéditeur transmet le jeton le long de son flux de séquence, jusqu'au destinataire
- Le jeton attend au récepteur jusqu'à ce qu'un message arrive
Piscine2
- 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 'To' (Pool1, Receiver)
Piscine1 suite
- Le récepteur en attente est réveillé et les valeurs de propriété 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 pool1
- Créez un événement Début de type 'Aucun', nommé StartEvent1
- Ajouter une séquence de Flux séquence à l'événement intermédiaire cible de type 'Throwing Message', appelé Sender
- Ajouter une Flux séquence à l'Activité cible de type 'abstrait', appelée Activity1
- Ajoutez Séquence flux de séquence à la cible :
- End Event de type 'None', appelé EndEvent1
- End Event de type 'None', appelé EndEvent2
Dans le pool2
- Créez un événement Début de type 'Message', appelé StartEvent2
- Ajouter une Flux séquence à l'Activité cible de type 'abstrait', appelée Activity2
- Ajouter une Flux séquence à la Passerelle cible de type 'Exclusive', appelée Gateway2
- Ajoutez Séquence flux de séquence à la cible :
- Activité de type 'abstrait', appelée Activity3
- Activité de type 'abstrait', appelée Activity4
- Ajoutez les flux de séquence de Activity3 et Activity4 à la Passerelle cible de type 'Exclusive', appelée Séquence
- Ajouter 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 au récepteur
Configurer BPSim
Afin de montrer la capacité du flux de messages à transporter des valeurs, nous créons une Paramètres Propriété 'M1' et changeons 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 |
La description |
---|---|
Créer un artefact et Paquetage |
|
Valeurs de propriété |
Nous donnerons à Paramètres Paramètres Propriété 'M1' une valeur initiale de 10 à valeur . 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 du le dialogue :
Conseil : Le format de { PropertyName } est une forme abrégée pratique de getProperty( " PropertyName ") . |
Paramètres de contrôle |
Nous n'avons besoin que d'un jeton dans cette simulation pour évaluer le comportement du modèle.
|
Exécuter Simulation
- Dans la barre d'outils de la boîte de dialogue 'Configurer BPSim', cliquez sur le bouton Exécuter ; la boîte de dialogue 'BPSim Simulation Controller' s'affiche
- Cliquez sur la flèche déroulante de l'icône ' Exécuter ' et sélectionnez ' Simulation standard' ; la simulation commence
- Lorsque la simulation est terminée, cliquez sur le bouton ; la boîte de dialogue ' Paramètres Propriété Valeurs' s'affiche, traçant les valeurs des propriétés lors de la simulation
- Dans le champ 'Token Number' tapez '0', puis cliquez sur le bouton Query et sur l'onglet 'Group by Property'
Une analyse
Comme le 'ProcessingTime' de Activity1 a été défini comme une valeur de distribution, il s'avère que :
- La valeur 'M1' de [Process1] après Pool1.StartEvent1 valeur '10', comme prévu
- *[Process2] La valeur est '10'; cette valeur est portée à partir d'un message envoyé par Pool1.Sender
- [Processus2] Pool2.Activity2 a augmenté Process2.M1 de 10 ; [Processus2.M1 == 20]
- [Processus1] Pool1.Activity1 a augmenté Process1.M1 de 100 ; [ Processus1.M1 == 110]
- [Processus2] Les expressions de condition sont évaluées ; comme '20 > 15', le jeton passera à Activity3 [Process2.M1 == 20]
- [Process2] Pool2.Activity3 a augmenté Process2.M1 de 10 ; [Processus2.M1 == 30]
- [Process1] Pool1.Receiver est atteint et attend [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 (portant M1 == 30 ) et la valeur de Process1.M1 passe de 110 à 30
- [Process1] Les expressions de condition sont évaluées ; comme '30 < 50', le jeton passera à EndEvent2 [Process1.M1 == 30]
Notes
- Les lignes marquées d'un astérisque (*) sont les effets des Message Flows
- L'ordre dans un processus est défini ; cependant, l'ordre entre deux processus n'est pas toujours prévisible
- L'événement Lancer un message lance un autre processus ; le message de capture sert de fil de synchronisation