Concepto
|
Detalle
|
Ver También
|
Guardas
|
Las Guardas son declaraciones condicionales que se evalúan cada vez que el simulador necesite decidir que ruta tomar a continuación. Las Guardas generalmente tienen las siguientes características:
•
|
Definidas en transiciones y flujos de control para gobernar como procede la simulación
|
•
|
Se puede referir a variables definidas durante la simulación
|
|
Simulación Dinámica con JavaScript
|
Agregando Guardas
|
Las Guardas son definidas en la Transición o Flujo de Control en la ventana de Propiedades para el conector seleccionado. Una Guarda generalmente es una pieza de Javascript que se va a evaluar como verdadera o falsa. Por ejemplo, la siguiente es una declaración condicional que se refiere a una variable actual (Balance) que es mayor que cero. Note el uso del prefijo this para indicar que la variable es un miembro del contexto de Clase actual.
|
|
Semántica de Evaluación
|
Durante la ejecución el Simulador examinará todas las rutas posibles hacia adelante y evaluará cualesquieracondiciones de guarda. Basado en esta evaluación puede ocurrir lo siguiente:
•
|
Una única ruta válida hacia adelante se evalúa como verdadera; el simulador seguirá esa ruta
|
•
|
Dos rutas válidas se encuentran; el simulador bloqueará, la espera para alguna entrada manual a través de la ventana de consola para resolver el punto muerto
|
•
|
No existe una ruta válida; la misma respuesta que cuando se encuentran dos rutas - espere a que el usuario cambie el contexto de ejecución utilizando la ventana de consola
|
•
|
Ninguna ruta se evalúa como verdadera pero existe una predeterminada (ruta sin guarda); el Simulador tomará la ruta sin guarda
|
|
|
Efectos
|
Los Efectos son comportamientos definidos que se ejecutan en momentos especiales:
•
|
Al hacer la transición de un estado a otro (efecto de transición)
|
Los Efectos pueden ser una sección del código de Javascript o una llamada a otro elemento de Comportamiento en la simulación actual.
|
|
Efectos de Javascript
|
Un efecto de Javascript puede asemejarse a este ejemplo, en el cual la variable de Balance se disminuye:
|
|
Efectos de Llamada de Comportamiento
|
En este ejemplo el efecto es un efecto de comportamiento de llamada. En este caso, llama a un modelo de Actividad llamadoBalance de Disminución que se define en otra parte. La simulación luego ingresará ese diagrama/comportamiento y se continuará ejecutando hasta volver al punto en el cual el efecto fue invocado.
|
|
Orden de Ejecución de Efectos
|
En simulaciones complejas que pueden hacer la transición fuera de estados profundamente anidados hacia otros estados anidados profundamente en un contexto padre diferente, es importante considerar las siguientes reglas con respecto al orden de la ejecución:
•
|
Todas las acciones de salida (efectos) que se encuentran al dejar un contexto anidado se ejecutan en orden desde anidado más profundo al anidado menos profundo
|
•
|
Todas las acciones (efectos) definidos en transiciones se ejecutan a continuación
|
•
|
Finalmente, todos los efectos de entrada son ejecutados desde el contexto anidado menos profundo al anidado más profundo
|
Por lo que la regla básica es: todas las acciones de salida, seguidas por todas las acciones de transición, y finalmente todas las acciones de entrada.
|
|
Nota en Variables de Javascript
|
Las Variables de Javascript para ser accedidas y referidas durante la ejecución de Simulación pertenecen a:
•
|
sim p.ej. sim.pedestrianwaiting - generalmente utilizado para variables de simulación global, o
|
•
|
this p.ej. this.CustomerNumber - generalmente utilizado para referirse a atributos de Clase dueña
|
Esto es importante para hacerle saber al motor de Javascript que usted se está refiriendo a una variable de Simulación y no a una simple variable local utilizada durante, por ejemplo cálculos básicos. Puede crear variables de Simulación de alcance y profundidad arbitrarios - por ejemplo, this.customer.name es un nombre legítimo calificado.
|
|