Réserver une Démo
Pré. Proc.

Signal Événements

Un événement Signal fournit la facilité de coupler de manière souple les « lanceurs » et les « capteurs » par une intégration de type publication-abonnement. Un « lanceur » diffusera un signal plutôt que de l'adresser à un processus particulier ; tout processus à l'écoute de cet événement particulier pourrait déclencheur une nouvelle instance à l'aide d'un événement Signal Démarrer .

Un signal peut être lancé soit à partir d'un événement intermédiaire de lancement, soit à partir d'un événement de fin de lancement, et peut être attrapé dans un événement Démarrer ou un événement intermédiaire de capture (y compris un événement de signal bordure ).

Dans cet exemple, nous démontrons ces Événements de signal et leur impact sur les lignes de vie des tâches, via les paramètres BPSim.

  • Démarrer Signal Événement :
    - Démarrer par Signal1 dans le processus de niveau supérieur (Pool1)
    - Démarrer Par Signal2 Interruption dans le sous-processus événementiel eventSubProcess2
         - Démarrer par Signal1 Non interrompu dans le sous-processus événementiel eventSubprocess1
  • Lancer un événement de signal intermédiaire :
    - Signal de diffusion1
  • Capture d'un événement de signal intermédiaire :
    - Réception du signal 1 (normal)
          - Réception du signal 2 (normal)
          - Réception du signal 2 ( bordure d'interruption)
          - Réception du signal 1 ( bordure non interrompue)
          - Recevoir Signal2 (dans Event Passerelle )
  • Signal de fin d'événement :
    - Terminez en lançant le signal 2

Créer Modèle BPMN

Afin de démontrer la capacité de communiquer entre les processus via un événement de signal, nous créons un modèle de collaboration avec un pool principal et un processus dans un autre pool ( Pool1 ).

Collaboration diagram in Business Process Simulation in Sparx Systems Enterprise Architect

Créer la collaboration et le processus principal

Créez un nouveau diagramme de collaboration BPMN2.0 appelé CollaborationForTestingSignalEvents , (choisissez l'option 'Créer ce diagramme dans un nouveau Modèle de collaboration'). Cliquez-droit sur le nom diagramme dans la fenêtre Navigateur et sélectionnez l'option 'Encapsuler le processus'.

Un Pool PoolMain et un processus BusinessProcess_PoolMain sont créés, et ces étiquettes sont définies avec les valeurs automatiques :

  • CollaborationForTestingSignalEvents.mainPool est défini sur PoolMain
  • PoolMain.processRef est défini sur BusinessProcess_PoolMain

Créer les éléments du processus principal

Créer un Démarrer Event S1 et ajouter une Flux séquence à une Fork Parallel Passerelle parallelFork

Ajoutez des flux Séquence à :

  • Une tâche abstraite Tâche 1 (20) puis ajoutez cette chaîne de flux Séquence :
    - Vers un événement de signal intermédiaire de lancement Signal de diffusion1
    - Ensuite, vers une tâche abstraite Tâche 2 (10)
    - Ensuite, vers un événement de signal intermédiaire de capture , recevoir le signal 2 (normal)
    - Ensuite, une tâche abstraite Tâche 3 (20)
    - Ensuite vers une Passerelle Parallèle Merge parallelMerge
    - Puis vers un événement final E1
  • Une tâche abstraite Tâche 4 (10) puis ajoutez cette chaîne de flux Séquence :
    - Vers un événement de signal intermédiaire de capture Recevoir Signal1 (normal)
    - Ensuite à une Tâche Abstraite Tâche 5 (100), sur laquelle vous créez une Bordure Interrupting Catching
    Événement de signal intermédiaire Réception du signal 2 ( bordure interrompante)
    - Ensuite, une tâche abstraite Tâche 6 (10)
    - Ensuite, à la précédente Merge Parallel Passerelle parallelMerge
  • Une tâche abstraite Tâche 7 (30) , puis ajoutez cette chaîne de flux Séquence :
    - À une tâche abstraite Tâche 8 (5)
    - Ensuite, à la précédente Merge Parallel Passerelle parallelMerge
Dans la tâche 7 (30) , créez un événement de réception de signal intermédiaire de capture Bordure non interrompue Signal1 ( bordure non interrompue) . Ajoutez une Flux séquence à une Passerelle d'événements eventGateway , puis ajoutez à cela des flux Séquence à :
  • Un événement de signal intermédiaire de capture reçoit le signal 2 (dans l'événement Passerelle ), puis cette chaîne de flux Séquence :
    - À une tâche abstraite Tâche 9 (10)
          - Ensuite, à la précédente Merge Parallel Passerelle parallelMerge
  • Un événement de temporisation intermédiaire de capture Wait (25) , puis cette chaîne de flux Séquence :
    - À une tâche abstraite Tâche 10 (10)
    - Puis vers un événement final E2

Créer un sous-processus d'événement (déclenché par un événement Démarrer Signal non interrompant) dans le processus principal

  • Créez un événement d'activité SubProcess1 et, dans sa dialogue « Propriétés », définissez le champ « Type » sur subProcess et modifiez l'attribut « triggeredByEvent » sur true
  • Dans eventSubProcess1 créez un événement Démarrer Démarrer By Signal1 Non Interrupting et, dans sa dialogue ' Propriétés ', définissez le champ ' Type ' sur Event Sub-Process Non-Interrupting > Signal
  • Ajouter une Flux séquence à une cible Tâche abstraite Tâche 11 (20)
  • Ajoutez une Flux séquence à un événement de fin cible End By Throwing Signal2 et, dans la dialogue « Propriétés » de l'élément, définissez le champ « Type » sur Signal

Créer un autre processus

  • Depuis la boîte à outils, faites glisser et déposez l'icône « Pool » sur le diagramme et nommez l'élément Pool1
  • Cliquez-droit sur Pool1 dans la fenêtre Navigateur et sélectionnez l'option 'Encapsuler le processus' ; un processus BusinessProcess_Pool1 est créé et l' étiquette 'Pool1.processRef' est définie sur BusinessProcess_Pool1

Créer le processus principal pour Pool1

  • Créer un événement Signal Démarrer Démarrer par Signal1
  • Ajouter une Flux séquence à une cible Tâche abstraite Tâche 12 (100)
  • Ajouter une Flux séquence à un événement de fin cible E3

Créer un sous-processus d'événement pour interrompre Pool1

  • Créez un événement d'activité SubProcess1 et, dans la dialogue « Propriétés », définissez le champ « Type » sur subProcess ; modifiez l'attribut « triggeredByEvent » sur true
  • Dans eventSubProcess2, créez un événement Démarrer Démarrer By Signal2 Interrupting et, dans la dialogue « Propriétés », définissez le champ « Type » sur Event Sub-Process Interrupting > Signal
  • Ajouter une Flux séquence à une cible Tâche abstraite Tâche 13 (10)
  • Ajouter une Flux séquence à un événement de fin cible E4

Créez les éléments de signal BPMN2.0 et configurez-les pour Événements de signal

Dans la boîte à outils BPMN 2.0, développez la page « BPMN 2.0 - Types » et faites glisser l'icône « Signal » sur le diagramme ; nommez l'élément Signal1 . Faites glisser à nouveau l'icône sur le diagramme pour créer Signal2 . Il s'agit d'éléments racines (qui peuvent être utilisés par tous les processus) et ils seront donc créés directement sous le modèle Paquetage .

Double-cliquez sur chacun des éléments de l'événement Signal et, dans le champ « Valeur » de l' étiquette « signalRef », cliquez sur le bouton Browse. et accédez à l'élément Signal approprié.

Conseils : Alternativement, vous pouvez faire glisser l'élément Signal depuis la fenêtre Navigateur et le déposer sur les éléments Événement dans le diagramme ; un menu contextuel s'affiche, à partir duquel vous sélectionnez l'option 'set signalRef'.

  • Régler signalRef sur « Signal1 » sur :
    - Signal de diffusion1
         - Démarrer par Signal1 dans le processus de niveau supérieur ( Pool1 )
    - Démarrer par Signal1 sans interruption dans le sous-processus Event eventSubprocess1
          - Réception du signal 1 (normal)
          - Réception du signal 1 ( bordure non interrompue)
  • Régler signalRef sur « Signal2 » sur :
    - Démarrer par Signal2 Interrompre dans le sous-processus Event eventSubProcess2
          - Réception du signal 2 (normal)
          - Recevoir le signal 2 ( bordure d'interruption)
          - Recevoir Signal2 (dans Event Passerelle )

Configurer BPSim

Dans cette section, nous créons l'artefact de configuration, spécifions le modèle Paquetage et configurons les valeurs des paramètres de chaque élément.

La configuration est assez simple car aucun des Événements Signal ne nécessite de configuration BPSim. Il suffit de paramétrer le temps de traitement des tâches pour pouvoir observer comment les processus, les threads et les tâches sont démarrés et interrompus.

Tâche

Description

Configurer la configuration

  • Ouvrez la fenêtre Configurer BPSim ('Simulate > Analyse de Processus > BPSim > Open BPSim Manager')
  • Créez un artefact nommé « Exemple complet de SignalEvent » (dans le champ « Sélectionner/Créer un artefact », cliquez sur le bouton Browse. et sélectionnez son Paquetage parent et cliquez sur le bouton Ajouter un nouveau, puis saisissez le nom de l'élément et cliquez sur le bouton Enregistrer. et le bouton OK )
Ensuite, tous les éléments BPMN seront chargés dans la fenêtre Configurer BPSim.

Événements sans signal

  • Dans la liste des éléments à gauche de le dialogue , développez le groupe 'StartEvent', puis cliquez sur S1 et sur l'onglet 'Contrôle' ; cliquez sur la flèche déroulante 'Nouveau paramètre' et sélectionnez ' Déclencheur Count', puis saisissez '1' dans le champ 'Valeur'
  • Développez le groupe « IntermediateEvent », puis cliquez sur Wait (25) et sur l'onglet « Control » ; cliquez sur la flèche déroulante « New Parameter » et sélectionnez « InterTriggerTimer », puis cliquez sur le bouton Browse. dans le champ « Value » ; sélectionnez « Constant » et « Numeric », et saisissez « 25 » dans le champ « Constant Numeric » et « seconds » dans le champ « TimeUnit »

Variable fictive pour le processus

Le contrôleur de simulation affiche une liste indiquant le nombre de jetons d'exécution pour chaque élément. Par exemple, 4 jetons ont dépassé l'élément Passerelle parallelMerge dans une simulation. Cela est très utile pour certaines statistiques et analyses. Cependant, cela n'indique pas QUAND parallelMerge a été traversé pendant la simulation. Afin d'obtenir la trace exacte d'un seul jeton, nous utilisons l'utilitaire de trace de propriété, qui s'appuie sur des paramètres de propriété. Nous créons donc un paramètre factice.

Dans la dialogue « Configuration BPSim », développez le groupe « BusinessProcess ».

  • Cliquez sur BusinessProcess_Main et sur l'onglet « Propriétés », et remplacez New Property par dummyVariable ; dans le champ « Value », cliquez sur le bouton Browse. et sur « Constant » et « Numeric », et dans le champ « Constant Numeric », saisissez « 0 »
  • Cliquez sur BusinessProcess_Pool1 et effectuez exactement les mêmes actions que pour BusinessProcess_Main

Temps de traitement des tâches

Développez le groupe « Activité » et pour chaque élément de tâche répertorié ici : sélectionnez l'onglet « Heure », cliquez sur la flèche déroulante « Nouveau paramètre » et sélectionnez « Temps de traitement », puis cliquez sur le bouton Browse. dans la colonne « Valeur », sélectionnez « Constante » et « Numérique », saisissez la valeur comme indiqué dans le champ « Constante numérique » et sélectionnez « secondes » dans le champ « Unité de temps ».

  • Tâche 1 (20) : 20 secondes
  • Tâche 2 (10) : 10 secondes
  • Tâche 3 (20) : 20 secondes
  • Tâche 4 (10) : 10 secondes
  • Tâche 5 (100) : 100 secondes
  • Tâche 6 (10) : 10 secondes
  • Tâche 7 (30) : 30 secondes
  • Tâche 8 (5) : 5 secondes
  • Tâche 9 (10) : 10 secondes
  • Tâche 10 (10) : 10 secondes
  • Tâche 11 (20) : 20 secondes
  • Tâche 12 (100) : 100 secondes
  • Tâche 13 (10) : 10 secondes

Exécuter Simulation

  • Dans la barre d'outils de la dialogue « Configurer BPSim », cliquez sur l'icône « Exécuter » pour ouvrir la dialogue « Contrôleur Simulation BPSim »
  • Cliquez sur la flèche déroulante de l'icône « Exécuter » et sélectionnez « Simulation standard »
  • Après la simulation, cliquez sur le bouton dans la barre d'outils pour afficher la dialogue « Valeurs PropertyParameter BPSim »
  • Cliquez sur le bouton Query et sur l'onglet « Grouper par propriété », puis développez « dummyVariable »

Analyse

À partir des résultats directs de la simulation, il n’est peut-être pas évident de savoir ce qui s’est passé ; cependant, si nous traçons la ligne de vie de chaque tâche, cela devient assez clair.

Timing diagram, BPMN Business Process Simulation in Sparx Systems Enterprise Architect

  • Tâche 1, Tâche 4 et Tâche 7 démarrées en parallèle
  • La tâche 2 a commencé immédiatement après la fin de la tâche 1 (sans s'arrêter à l'événement de lancer)
  • À 20 secondes, Signal1 a été diffusé par le Signal1 de diffusion d'événement intermédiaire de lancer et :
    - Le signal de réception 1 (normal) a été activé et la tâche 5 a démarré
    - Démarrer By Signal1 Non-Interrupting a été activé et Task11 dans eventSubProcess1 a démarré
    - Démarrer By Signal1 a été activé et Task12 dans Pool1 a démarré
  • À 40 secondes, Signal2 a été diffusé par l'événement de fin End By Throwing Signal2 et :
    - Le signal de réception 2 (normal) a été activé et la tâche 3 a démarré
    - La tâche 5 a été interrompue et la tâche 6 a démarré
    - Le signal de réception 2 (dans Event Passerelle ) a été activé et la tâche 9 a démarré
    - Démarrer By Signal2 L'interruption a été activée, et :
              > Le processus principal de Pool1 a été interrompu et Task12 s'est arrêté
    > La tâche 13 dans eventSubProcess2 a démarré
  • L' événement EventSubProcess2 dans BusinessProcess_Pool1 s'est terminé lorsque E4 a été atteint à 50 secondes
  • Le BusinessProcess_MainPool s'est terminé lorsque E1 a été atteint à 60 secondes
  • L'événement de temporisation intermédiaire Wait (25) n'a pas été activé car l'événement de signal dans la Passerelle a été activé en premier ; par conséquent, la tâche 10 n'a jamais été démarrée

Note : Le temps d'exécution réel de chaque tâche peut être observé à partir de l'élément BPSimReport généré, en :

  1. Double-cliquez sur l'élément <<BPSimReport>>.
  2. Extension du groupe « Heure ».
  3. Extension de l'élément de tâche.
  4. Vérification du « Temps total dans la tâche ».
Par exemple, pour l'élément Task5 (100) , bien que nous ayons défini son processingTime à 100 secondes, le temps total dans la tâche était de 20 secondes, ce qui a été interrompu par Receive Signal2 ( bordure d'interruption) à 20 secondes.