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

Exemple : Motif d'événement différé

Enterprise Architect supporte le Motif d'événement différé.

Pour créer un événement différé dans un State :

  1. Créer une transition autonome pour l' State .
  2. Changez le 'type' de la transition en 'interne'.
  3. Spécifiez le déclencheur comme étant l'événement que vous souhaitez différer.
  4. Dans le champ 'Effet', tapez 'defer();'.
Simuler:
  1. Sélectionnez 'Simuler > Simulation Dynamique > Simulateur > Ouvrir la fenêtre de Simulation '. Sélectionnez également 'Simuler > Simulation Dynamique > Événements ' pour ouvrir la fenêtre Simulation Événements .
  2. La fenêtre Événements du simulateur vous aide à déclencher des événements ; double-cliquez sur un déclencheur dans la colonne ' Déclencheurs en Attente '.
  3. La fenêtre Simulation affiche l'exécution sous forme de texte. Vous pouvez taper "dump" dans la ligne de commande du simulateur pour afficher le nombre d'événements différés dans la file d'attente ; la sortie pourrait ressembler à ceci :
    24850060] Groupe d'événements : [NOUVEAU, NOUVEAU, NOUVEAU, NOUVEAU, NOUVEAU,]

Exemple d'événement différé

Cet exemple montre un modèle utilisant des événements différés et la fenêtre Événements de Simulation affichant tous les Événements Événements .

Nous mettons d'abord en place les contextes (les éléments Class contenant les Statemachines ), les simulons dans un contexte simple et élevons l'événement de l'extérieur ; puis simulez dans un contexte client-serveur avec le mécanisme d'événement Envoyer.

Créer un contexte et Statemachine

Créer le contexte du serveur

Class diagram providing context definition in Sparx Systems Enterprise Architect

Créez un diagramme de classes et :

  1. Un élément de classe TransactionServer , auquel vous ajoutez un Statemachine ServerStateMachine .
  2. Un élément Class TestClient , auquel vous ajoutez un Statemachine ClientStateMachine .
  3. Une association de TestClient à TransactionServer , avec le rôle cible nommé server.

Modélisation pour ServerStateMachine

Simple example State Machine diagram in Sparx Systems Enterprise Architect

  1. Ajoutez un Initial Node Initial au diagramme Statemachine et passez à un State idle .
  2. Transition (avec événement NEW_REQUEST comme Trigger) vers un State busy .
  3. Transition (avec l'événement QUIT comme déclencheur) vers un State final Final.
  4. Transition (avec l'événement AUTHORIZED comme Trigger) vers idle .
  5. Transition (avec l'événement NEW_REQUEST comme Trigger et defer (); comme effet) vers occupé

Modélisation pour ClientStateMachine

Example multi-state State Machine diagram in Sparx Systems Enterprise Architect

  1. Ajoutez un Initial Node Initial au diagramme Statemachine et passez à un State State0 .
  2. Transition (avec l'événement RUN_TEST comme déclencheur) vers un State State1 .
  3. Transition (avec effet : %SEND_EVENT("NEW_REQUEST", CONTEXT_REF(server))%;) vers un State State2.
  4. Transition (avec effet : %SEND_EVENT("NEW_REQUEST", CONTEXT_REF(server))%;) vers un State State3 .
  5. Transition (avec effet : %BROADCAST_EVENT("NEW_REQUEST")%;) vers un State State4 .
  6. Transition (avec effet : %SEND_EVENT("AUTHORIZED", CONTEXT_REF(server))%;) vers un State State5 .
  7. Transition vers un State final final.

Simulation dans un contexte simple

Créer l'artefact de Simulation

Model Simulation with Executable StateMachine in Sparx Systems Enterprise Architect

  1. Créez un artefact Statemachine Exécutable avec le nom Simulation with Deferred Event et le champ 'Language' défini sur JavaScript .
  2. Agrandissez-le, puis Ctrl + faites glisser l'élément TransactionServer sur l'artefact et collez-le en tant que propriété avec le serveur de noms.

Exécuter la Simulation

  1. Sélectionnez l'Artefact, puis sélectionnez l' Statemachine États Exécutables Générer , Build et Exécuter ', et spécifiez un répertoire pour votre code ( Note : tous les fichiers du répertoire seront supprimés avant le démarrage de la simulation).
  2. Cliquez sur le bouton Générer .
  3. Sélectionnez l'option 'Simuler > Simulation Dynamique > Événements ' pour ouvrir la fenêtre Simulation Evénement.

Lorsque la simulation démarre, l'état inactif sera l'état actif.

  1. Double-cliquez sur NEW_REQUEST dans la fenêtre Simulation Event pour l'exécuter en tant que déclencheur ; inactif est quitté et occupé est activé.
  2. Double-cliquez sur NEW_REQUEST dans la fenêtre Simulation Event pour l'exécuter à nouveau en tant que déclencheur ; occupé reste activé et une instance de NEW_REQUEST est ajoutée au pool d'événements.
  3. Double-cliquez sur NEW_REQUEST dans la fenêtre Simulation Event pour l'exécuter une troisième fois en tant que déclencheur ; occupé reste activé et une instance de NEW_REQUEST est ajoutée au pool d'événements.
  4. Type dump dans la ligne de commande de la fenêtre Simulation ; notez que le pool d'événements a deux instances de NEW_REQUEST.
  5. Double-cliquez sur AUTORISÉ dans la fenêtre Événement de Simulation pour l'exécuter en tant que déclencheur ; ces actions ont lieu :
    - occupé est quitté et inactif devient actif
    - un événement NEW_REQUEST est extrait du pool, inactif est quitté et occupé devient actif
  6. Type dump dans la ligne de commande de la fenêtre Simulation ; il n'y a maintenant qu'une seule instance de NEW_REQUEST dans le pool d'événements.

Simulation interactive via Send/Broadcast Event

Créer l'artefact de Simulation

Deferred event in business process simulation in Sparx Systems Enterprise Architect

  1. Créez un Statemachine Exécutable Artifact avec le nom Interactive Simulation with Deferred Event et le champ 'Language' défini sur JavaScript ; agrandir l'élément.
  2. Ctrl + faites glisser l'élément TransactionServer sur l'artefact et collez-le en tant que propriété avec le serveur de noms.
  3. Ctrl + faites glisser l'élément TestClient sur l'artefact et collez-le en tant que propriété avec le nom client .
  4. Créez un connecteur du client au serveur .
  5. Cliquez sur le connecteur et appuyez sur Ctrl+L pour sélectionner l'association de l'élément TestClient à l'élément TransactionServer .

Exécuter interactive de l' Simulation

  1. Lancez la simulation de la même manière que pour le contexte simple.

    Une fois la simulation lancée, le client reste à State0 et le serveur reste à idle .

  2. Double-cliquez sur RUN_TEST dans la fenêtre Simulation Event pour le déclencher. L'événement NEW_REQUEST sera déclenché trois fois (par SEND_EVENT et BROADCAST_EVENT) et AUTHORIZED sera déclenché une fois par SEND_EVENT.


    Type dump dans la ligne de commande de la fenêtre de Simulation . Il reste une instance de NEW_REQUEST dans le pool d'événements. Le résultat correspond à notre test de déclenchement manuel.