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

Signal Événements

Un événement de signal offre la facilité de facilité de manière lâche les « lanceurs » et les « attrapeurs » par l'intégration de la publication et de l'abonnement. Un « lanceur » diffusera un signal plutôt que de l'adresser à un processus particulier ; tout processus écoutant cet événement particulier pourrait déclencher une nouvelle instance à l'aide d'un événement Signal Début .

Un signal peut être lancé à partir d'un événement intermédiaire de lancer ou d'un événement final de lancement, et peut être Début dans un événement de début ou un événement intermédiaire de rattrapage (y compris un événement de signal de bordure ).

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

  • Début de l'événement Signal :
    - Début By Signal1 dans le processus de niveau supérieur (Pool1)
    - Début Par Signal2 Interruption dans le sous-processus d' événement eventSubProcess2
         - Début By Signal1 Non Interrupting in event sub-process eventSubprocess1
  • Lancer un événement de signal intermédiaire :
    - Signal de diffusion1
  • Attraper l'événement de signal intermédiaire :
    - Recevoir Signal1 (normal)
          - Recevoir Signal2 (normal)
          - Recevoir Signal2 ( bordure Interrompre)
          - Recevoir Signal1 ( bordure sans interruption)
          - Recevoir Signal2 (dans Event Passerelle )
  • Événement signal de fin :
    - Terminer en lançant Signal2

Créer un Modèle BPMN

Afin de démontrer la capacité à 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 diagramme appelé CollaborationForTestingSignalEvents , (choisissez l'option 'Créer ce diagramme dans un nouveau Modèle de collaboration '). Cliquez-droit sur le nom du diagramme dans la fenêtre Navigateur et sélectionnez l'option 'Encapsulate Process'.

Un Pool PoolMain et un processus BusinessProcess_PoolMain sont créés, et ces balises 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ébut Event S1 et ajouter une Flux séquence à un Fork Parallel Passerelle parallelFork

Ajouter Séquence flux de séquence à :

  • Une Tâche Abstraite Tâche1 (20) puis ajoutez cette chaîne de Flux de Séquence :
    - Vers un signal de diffusion d'événement de signal intermédiaire de lancement1
    - Puis à une Tâche Abstraite Tâche2 (10)
    - Puis à un événement de réception de signal intermédiaire de capture Signal2 (normal)
    - Puis à une Tâche Abstraite Tâche3 (20)
    - Puis à une Merge Parallel Passerelle parallelMerge
    - Puis à un End Event E1
  • Une Tâche Abstraite Tâche4 (10) puis ajoutez cette chaîne de Flux de Séquence :
    - Vers un événement de réception de signal intermédiaire de réception Signal1 (normal)
    - Puis à une Tâche Abstraite Tâche5 (100), sur laquelle vous créez une Bordure Interruption Attrape
    Intermediate Signal Event Receive Signal2 ( bordure interrompant)
    - Puis à une Tâche Abstraite Tâche6 (10)
    - Puis à l'ancien Merge Parallel Passerelle parallelMerge
  • Une Tâche Abstraite Task7 (30) , puis ajoutez cette chaîne de Séquence Flows :
    - Vers une Tâche Abstraite Tâche8 (5)
    - Puis à l'ancien Merge Parallel Passerelle parallelMerge
Sur la tâche 7 (30) , créez un événement de réception de signal intermédiaire de capture sans interruption Bordure Signal1 ( bordure sans interruption) . Ajoutez une Flux séquence à un Event Passerelle eventGateway , et à cela ajoutez Séquence Flows à :
  • Un signal de réception d'événement de signal intermédiaire de capture Signal2 (dans Event Passerelle ), puis cette chaîne de flux de Séquence :
    - Vers une Tâche Abstraite Tâche9 (10)
          - Puis à l'ancien Merge Parallel Passerelle parallelMerge
  • Attente d'événement de minuterie intermédiaire de capture (25) , puis cette chaîne de flux de Séquence :
    - Vers une Tâche Abstraite Tâche10 (10)
    - Puis à un End Event E2

Créer un sous-processus d'événement (déclenché par un événement de signal Début sans interruption) dans le processus principal

  • Créez une activité eventSubProcess1 et, dans sa boîte de dialogue ' Propriétés ', définissez le champ ' Type ' sur subProcess et changez l'attribut 'triggeredByEvent' en true
  • Dans eventSubProcess1, créez un Début Event Début By Signal1 Non Interrupting et, dans sa boîte de 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âche11 (20)
  • Ajoutez une Flux séquence à une cible End Event End By Throwing Signal2 et, dans la boîte de dialogue de l'élément ' Propriétés ', 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 Cliquez-droit sur Pool1 dans la fenêtre Navigateur et sélectionnez l'option 'Encapsulate Process'; un processus BusinessProcess_Pool1 est créé et la balise 'Pool1.processRef' est définie sur BusinessProcess_Pool1

Créer le processus principal pour Pool1

  • Créer un événement Signal Début Début par Signal1
  • Ajouter une Flux séquence à une cible Tâche abstraite Tâche12 (100)
  • Ajouter une Flux séquence à un End Event cible E3

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

  • Créez une Activité eventSubProcess1 et, dans la boîte de dialogue ' Propriétés ', définissez le champ ' Type ' sur subProcess ; changer l'attribut 'triggeredByEvent' en true
  • Dans eventSubProcess2, créez un Début Event Début By Signal2 Interrupting et, dans la boîte de 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âche13 (10)
  • Ajouter une Flux séquence à un End Event cible E4

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

Dans la Toolbox BPMN 2.0, déroulez la page 'BPMN 2.0 - Types' et faites glisser l'icône 'Signal' sur le diagramme ; nommez l'élément Signal1 . Faites à nouveau glisser l'icône sur le diagramme pour créer Signal2 . Ce sont des éléments racine (qui peuvent être utilisés par tous les processus) donc ils seront créés directement sous le modèle Paquetage .

Double-cliquez sur chacun des éléments Signal Event et, dans le champ 'Value' de la balise 'signalRef', cliquez sur le bouton Browse. et naviguez jusqu'à l'élément Signal approprié.

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

  • Définissez signalRef sur 'Signal1' sur :
    - Signal de diffusion1
         - Début By Signal1 dans le processus de niveau supérieur ( Pool1 )
    - Début By Signal1 Non Interrupting in Event sub-process eventSubprocess1
          - Recevoir Signal1 (normal)
          - Recevoir Signal1 ( bordure sans interruption)
  • Définissez signalRef sur 'Signal2' sur :
    - Début By Signal2 Interrupting in Event sub-process eventSubProcess2
          - Recevoir Signal2 (normal)
          - Recevoir Signal2 ( bordure Interrompre)
          - 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 Signal Événements ne nécessite de configuration BPSim. Tout ce que nous avons à faire est de définir le temps de traitement des tâches afin de 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 ('Simuler > Analyse de Processus > BPSim > Ouvrir BPSim Manager')
  • Créez un artefact nommé 'SignalEvent Complete Example' (dans le champ 'Select/Create Artifact', cliquez sur le bouton Browse. et sélectionnez son Paquetage parent et cliquez sur le bouton Ajouter nouveau, puis tapez 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 du le dialogue , déroulez le groupe 'StartEvent', puis cliquez sur S1 et sur l'onglet 'Control' ; cliquez sur la flèche déroulante 'Nouveau paramètre' et sélectionnez 'Nombre de déclencheurs', puis tapez '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 « Nouveau paramètre » et sélectionnez « InterTriggerTimer », puis cliquez sur le bouton Browse. dans le champ « Valeur » ; sélectionnez 'Constant' et 'Numeric', et tapez '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 passé l'élément Passerelle parallelMerge dans une simulation. Ceci est très utile pour certaines statistiques et analyses. Cependant, il 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 les paramètres de propriété. Nous créons donc un paramètre factice.

Dans la boîte de dialogue 'Configuration BPSim', développez le groupe 'BusinessProcess'.

  • Cliquez sur BusinessProcess_Main et sur l'onglet ' Propriétés ', et écrasez New Property avec dummyVariable ; dans le champ 'Valeur', cliquez sur le bouton Browse. et sur 'Constante' et 'Numérique', et dans le champ 'Constante Numérique' tapez '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 Tâche listé ici : sélectionnez l'onglet 'Temps', 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 'Constant' et 'Numérique', tapez la valeur comme indiqué dans le champ 'Constant Numeric' et sélectionnez 'secondes' dans le champ 'TimeUnit'.

  • Tâche1 (20) : 20 secondes
  • Tâche2 (10) : 10 secondes
  • Tâche3 (20) : 20 secondes
  • Tâche4 (10) : 10 secondes
  • Tâche5 (100) : 100 secondes
  • Tâche6 (10) : 10 secondes
  • Tâche7 (30) : 30 secondes
  • Tâche8 (5) : 5 secondes
  • Tâche9 (10) : 10 secondes
  • Tâche10 (10) : 10 secondes
  • Tâche11 (20) : 20 secondes
  • Tâche12 (100) : 100 secondes
  • Tâche13 (10) : 10 secondes

Exécuter Simulation

  • Dans la barre d'outils de la boîte de dialogue 'Configurer BPSim', cliquez sur l'icône ' Exécuter ' pour ouvrir la boîte de dialogue 'BPSim Simulation Controller'
  • 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 de la barre d'outils pour afficher la boîte de dialogue 'BPSim PropertyParameter Values'
  • Cliquez sur le bouton Query et sur l'onglet 'Group by Property', et développez 'dummyVariable'

Une analyse

D'après les résultats directs de la simulation, il se peut que ce qui s'est passé ne soit pas évident ; cependant, si nous dessinons la ligne de vie pour chaque tâche, cela devient assez clair.

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

  • Tâche1, Tâche4 et Tâche7 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 Throwing Intermediate Event Broadcast Signal1 et :
    - Le signal de réception 1 (normal) a été activé et la tâche 5 a démarré
    - Début By Signal1 Non-Interrupting a été activé et Task11 dans eventSubProcess1 a démarré
    - Début By Signal1 a été activé et Task12 dans Pool1 a démarré
  • À 40 secondes, Signal2 a été diffusé par End Event 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âche5 a été interrompue et la tâche6 a démarré
    - Receive Signal2 (dans Event Passerelle ) a été activé et Task9 a démarré
    - Début By Signal2 Interrupting a été activé, et :
              > Le processus principal du Pool1 a été interrompu et la Tâche12 s'est arrêtée
    > Task13 dans eventSubProcess2 démarré
  • L' événement SubProcess2 à l'intérieur de 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' attente d'événement de minuterie intermédiaire (25) n'a pas été activée 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é, par :

  1. Double-cliquer sur l'élément <<BPSimReport>>.
  2. Développer le groupe "Heure".
  3. Développer l'élément de tâche.
  4. Vérifier 'Temps total dans la tâche'.
Par exemple, pour l'élément Task5 (100) , bien que nous ayons défini son processingTime sur 100 secondes, le Total Time In Task était de 20 secondes, qui a été interrompu par Receive Signal2 ( bordure interrupting) à 20 secondes.