Guardas y Efectos [Guía de Usuario de Enterprise Architect]

Top Previous Next

Guardas y Efectos

button_main button_prev button_next

Las Guardas y Efectos son utilizados para controlar el flujo de la simulación y para ejecutar acciones adicionales o efectos durante el curso de una simulación.

Guardas y Efectos

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

Escrito en JavaScript

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.

 

statetxguard

 

 

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 entrar a un estado

Al salir de un estado

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:

transitioneffect1

 

 

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.

transitioneffect2

 

 

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.

 

 

Aprender más

Condición de Operando de Interacción y Comportamiento de Mensaje

Disparadores