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

Gardes et Effets

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 aussi

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 les caractéristiques suivantes :

  • 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 aux variables définies pendant Simulation
Simulation Dynamique avec Javascript

Ajout de gardes

Les gardes sont définies sur la transition ou le flux de contrôle dans la dialogue « Propriétés » du connecteur sélectionné. Une garde est généralement un morceau de JavaScript qui sera évalué comme étant vrai ou faux. Par exemple, voici une instruction conditionnelle qui fait référence à une variable actuelle (Balance) supérieure à zéro. Note l'utilisation du préfixe « this » pour indiquer que la variable est un membre du contexte de classe actuel.

Guard Composition using Javascript

Sémantique d'évaluation

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

  • Un seul chemin valide vers l'avant est évalué à True ; le simulateur suivra ce chemin
  • Il existe deux chemins valides ; le simulateur se bloquera en attendant une saisie 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'est évalué à True mais une valeur par défaut (chemin non protégé) existe ; le simulateur prendra le chemin non protégé

Effets

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

  • À l’entrée dans un État
  • À la sortie d’un État
  • Lors de la transition 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 de comportement dans la simulation actuelle.

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 du 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'à revenir au point auquel l'effet a été invoqué.

Specifying CallBehaviors as Effects

Ordre d'exécution des effets

Dans les simulations complexes qui pourraient impliquer une 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 prendre en compte 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 toutes les actions d’entrée.

Note sur les variables JavaScript

Les variables JavaScript auxquelles il faut accéder et auxquelles il faut faire référence pendant l'exécution Simulation appartiennent à :

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

Apprenez Plus