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

Créer un Modèle BPMN

MessageEvent Business Process Simulation in Sparx Systems Enterprise Architect

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

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 'Select Paquetage ' sélectionner le Paquetage contenant le modèle
Tous les éléments BPMN du modèle sont chargés dans la fenêtre Configurer BPSim.

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 :

  • Déroulez le groupe 'StartEvent', cliquez sur StartEvent1 et sur l'onglet ' Propriétés ', et écrasez New Property par 'M1' ; dans le champ 'Valeur' cliquez sur le bouton Browse. et sélectionnez 'Constante' et 'Numérique, et tapez '10' dans le champ 'Constante Numérique'
  • Développez le groupe 'Activity', cliquez sur Activity1 et sur l'onglet ' Propriétés ', et écrasez New Property par 'M1'; dans le champ 'Valeur' cliquez sur le bouton Browse. et sélectionnez 'Expression', et tapez '{M1} + 100' dans le champ 'Expression'
  • Cliquez sur Activity2 et sur l'onglet ' Propriétés ', et écrasez New Property par 'M1'; dans le champ 'Valeur' cliquez sur le bouton Browse. et sélectionnez 'Expression', et tapez '{M1} + 10' dans le champ 'Expression'
  • Cliquez sur Activity3 et sur l'onglet ' Propriétés ', et écrasez New Property par 'M1'; dans le champ 'Valeur' cliquez sur le bouton Browse. et sélectionnez 'Expression', et tapez '{M1} + 10' dans le champ 'Expression'
  • Cliquez sur Activity4 et sur l'onglet ' Propriétés ', et écrasez New Property par 'M1'; dans le champ 'Valeur' cliquez sur le bouton Browse. et sélectionnez 'Expression', et tapez '{M1} + 1' dans le champ 'Expression'

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.

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

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
Maintenant, il y a en fait deux 'M1's - Process1.M1 et Process2.M1
  • [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