Réserver une Démo
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.
Cet exemple illustre les fonctionnalités de Message Event. Nous allons d'abord créer le modèle BPMN, puis configurer BPSim et exécuter la simulation.

Créer Modèle BPMN

MessageEvent Business Process Simulation in Sparx Systems Enterprise Architect

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

  • Ouvrez la fenêtre Configurer BPSim ('Simuler > Analyse de Processus > BPSim > Ouvrir BPSim Manager')
  • Cliquez sur le bouton Browse. dans le champ « Sélectionner/Créer un artefact » et créez un artefact appelé « MessageEvent-StartEvent-IntermediateEvent-EndEvent »
  • Dans le champ « Sélectionner Paquetage », sélectionnez le Paquetage contenant le modèle
Tous les éléments BPMN du modèle sont chargés dans la fenêtre Configurer BPSim.

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 :

  • Développez le groupe « StartEvent », cliquez sur StartEvent1 et sur l'onglet « Propriétés », et remplacez Nouvelle propriété par « M1 » ; dans le champ « Valeur », cliquez sur le bouton Browse. et sélectionnez « Constante » et « Numérique », et saisissez « 10 » dans le champ « Constante numérique »
  • Développez le groupe « Activité », cliquez sur Activité1 et sur l'onglet « Propriétés », et remplacez Nouvelle propriété par « M1 » ; dans le champ « Valeur », cliquez sur le bouton Browse. et sélectionnez « Expression », et saisissez « {M1} + 100 » dans le champ « Expression »
  • Cliquez sur Activity2 et sur l'onglet « Propriétés », et remplacez Nouvelle propriété par « M1 » ; dans le champ « Valeur », cliquez sur le bouton Browse. et sélectionnez « Expression », et saisissez « {M1} + 10 » dans le champ « Expression »
  • Cliquez sur Activity3 et sur l'onglet « Propriétés », puis remplacez Nouvelle propriété par « M1 » ; dans le champ « Valeur », cliquez sur le bouton Browse. et sélectionnez « Expression », puis saisissez « {M1} + 10 » dans le champ « Expression »
  • Cliquez sur Activity4 et sur l'onglet « Propriétés », et remplacez Nouvelle propriété par « M1 » ; dans le champ « Valeur », cliquez sur le bouton Browse. et sélectionnez « Expression », et saisissez « {M1} + 1 » dans le champ « Expression »

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.

  • Dans le groupe « StartEvent » développé, cliquez sur StartEvent1 et sur l'onglet « Contrôle » ; cliquez sur la flèche déroulante « Nouveau paramètre » et sélectionnez « Déclencheur Count », puis saisissez une « Valeur » de « 1 »
Configurez maintenant les conditions des flux Séquence sortants des passerelles. Dans la liste des éléments à gauche de le dialogue , développez le groupe « Passerelle » :
  • Développez Gateway1 , cliquez sur EndEvent1 et sur l'onglet « Contrôle », puis cliquez sur la flèche déroulante « Nouveau paramètre » et sélectionnez « Condition » ; dans le champ « Valeur », cliquez sur le bouton Browse. et sélectionnez « Expression », puis saisissez « {M1} >= 50 » dans le champ « Expression »
  • Cliquez sur EndEvent2 et sur l'onglet « Contrôle », puis cliquez sur la flèche déroulante « Nouveau paramètre » et sélectionnez « Condition » ; dans le champ « Valeur », cliquez sur le bouton Browse. et sélectionnez « Expression », puis saisissez « {M1} < 50 » dans le champ « Expression »
  • Développez Gateway2 , cliquez sur Activity3 et sur l'onglet « Contrôle », puis cliquez sur la flèche déroulante « Nouveau paramètre » et sélectionnez « Condition » ; dans le champ « Valeur », cliquez sur le bouton Browse. et sélectionnez « Expression », puis saisissez « {M1} >= 15 » dans le champ « Expression »
  • Cliquez sur Activity4 et sur l'onglet « Contrôle », puis cliquez sur la flèche déroulante « Nouveau paramètre » et sélectionnez « Condition » ; dans le champ « Valeur », cliquez sur le bouton Browse. et sélectionnez « Expression », puis saisissez « {M1} < 15 » dans le champ « Expression »

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
Il existe en fait deux « M1 » : Process1.M1 et Process2.M1
  • [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