Réserver une Démo

SVP notez : Cette page d’aide n’est pas pour la dernière version d’Enterprise Architect. La dernière aide peut être trouvée ici.

Pré. Proc.

Gardes et Effets

Les Gardes et Effets sont utilisés pour contrôler le déroulement de la Simulation et pour exécuter des actions ou des effets supplémentaires au cours d'une Simulation .

Gardes et Effets

Concept

Détail

Voir également

Gardes

Les gardes sont des instructions conditionnelles qui sont évaluées chaque fois que le simulateur doit déterminer le chemin à suivre. Les gardes ont généralement ces caractéristiques :

  • Défini sur les transitions et les flux de contrôle pour régir le déroulement d'une Simulation
  • Écrit en JavaScript
  • Peut faire référence à des variables définies lors de la Simulation
Simulation Dynamique avec Javascript

Ajout de gardes

Les gardes sont définies sur la transition ou le flux de contrôle dans la boîte de dialogue ' Propriétés ' pour le connecteur sélectionné. Un Guard est généralement un morceau de JavaScript qui sera évalué à True ou False. Par exemple, voici une instruction conditionnelle qui fait référence à une variable actuelle (Solde) supérieure à zéro. Note l'utilisation du préfixe ' this' pour indiquer que la variable est un membre du contexte Class actuel.

Guard Composition using Javascript

Sémantique d'évaluation

Pendant l'exécution, le simulateur examinera tous les chemins possibles et évaluera toutes les conditions de garde. Cette évaluation pourrait établir que :

  • Un seul chemin d'accès valide est évalué à True ; le simulateur suivra ce chemin
  • Deux chemins valides existent ; le simulateur se bloquera, attendant une entrée manuelle via la fenêtre de la console pour résoudre le blocage
  • Aucun chemin valide n'existe ; la même réponse que lorsque deux chemins sont trouvés - le simulateur attend que l'utilisateur modifie le contexte d'exécution à l'aide de la fenêtre de la console
  • Aucun chemin n'a la valeur True mais une valeur par défaut (chemin non protégé) existe ; le simulateur prendra le chemin non surveillé

Effets

Les effets sont des comportements définis qui sont exécutés à des moments particuliers :

  • A l'entrée dans un état
  • A la sortie d'un état
  • Lors du passage d'un état à un autre (effet de transition)
Les effets peuvent être soit une section de code JavaScript , soit un appel à un autre élément Behavior dans la simulation en cours.

Effets JavaScript

Un effet JavaScript pourrait ressembler à cet exemple, dans lequel la variable Balance est décrémentée :

Composing the effect of a transition using Javascript

Effets de comportement d'appel

Dans cet exemple, l'effet est un effet de comportement d'appel. Dans ce cas, il appelle dans un modèle l'activité nommée Decrement Balance qui est définie ailleurs. La simulation entrera alors dans ce diagramme /comportement et continuera à s'exécuter jusqu'au retour au point où l'effet a été invoqué.

Specifying CallBehaviors as Effects

Ordre d'exécution des effets

Dans les simulations complexes qui peuvent impliquer la transition d'états profondément imbriqués vers d'autres états profondément imbriqués dans un contexte parent différent, il est important de tenir compte de ces règles concernant l'ordre d'exécution :

  • Toutes les actions de sortie (Effets) rencontrées en quittant un contexte imbriqué sont exécutées dans l'ordre du plus profondément imbriqué au moins profondément imbriqué
  • Toutes les actions (effets) définies sur les transitions sont exécutées ensuite
  • Enfin, tous les effets d'entrée sont exécutés du contexte le moins profondément imbriqué au plus profondément imbriqué.
La règle de base est donc la suivante : toutes les actions de sortie, suivies de toutes les actions de transition, et enfin de toutes les actions d'entrée.

Note sur les variables JavaScript

Les variables JavaScript auxquelles accéder et auxquelles il est fait référence pendant l'exécution de la Simulation appartiennent à :

  • sim (par exemple, sim.pedestrianwaiting) - généralement utilisé pour les variables de Simulation globales, ou
  • this (par exemple, this.CustomerNumber) - généralement utilisé pour faire référence à la possession d'attributs de classe
Ceci est important pour que le moteur JavaScript sache que vous faites référence à une variable de Simulation et non à une simple variable locale utilisée lors, par exemple, de calculs de base. Vous pouvez créer des variables de Simulation de portée et de profondeur arbitraires - par exemple, this.customer.name est un nom qualifié légitime.

Apprenez Plus