Artículos
- Inicio
- Artículos
- Sesiones y Reglas
- Reglas de Variables II
Reglas de Variables II
Tutorial de Utilización de Reglas de Variables aplicadas a una sesión.
Parte II
Tutorial de Utilización de Reglas de Variables aplicadas a una sesión Parte II.
Continuamos....¿Como se consigue esto?.
En primer lugar como la ejecución de las tareas que tiene que hacer Tom son cíclicas o sea, tiene que ejecutar una serie de ordenes repetidas veces, debemos buscar alguna regla que nos permita realizar dicha operación.
Esta regla es la de Lista Ordenada, por lo tanto añadimos una regla de lista ordenada justo por debajo de la asignación de valor a la variable de trabajo, como aparece en la imagen siguiente:

Después de añadir la regla de lista ordenada la tenemos que configurar.
Tener en cuenta que como queremos que el conductor realice unas serie de operaciones unas detrás de otras hay que utilizar esta regla para que dichas operaciones sean correlativas y no simultáneas.
Dichas operaciones (ejecución de tareas – reglas), deben de ser como hemos indicado más arriba de una forma cíclica, lo que nos obliga a que la regla de lista tenga seleccionada la opción segunda o sea The proccess will repeat forever (El proceso se repetirá siempre), esto le indica a la regla que cuando se terminen de ejecutar todas las reglas anidadas dentro de esta regla de lista, deberá iniciarla de nuevo, volviendo a ejecutar todas las reglas anidadas de nuevo, y no parará de realizarlas hasta que el usuario, acabe manualmente con la sesión.
Para mayor claridad de lo que hace esta regla, también le he cambiado el título de la misma colocándole "Lista ordenada de Tom".
Esta regla no tiene nada más que configurar.

Bueno, ahora es cuando vienen y lo matan.
Empecemos realmente con la sesión propiamente dicha, en primer lugar necesito que nuestro amigo Tom, espere a que se produzca un acontecimiento para que empiece a circular, dicho acontecimiento será que otro tren, pase por encima de un trigger, pero claro el pasar por un trigger, sólo lo hará al inicio de la sesión, posteriormente, este trigger no será utilizado más veces para que Tom avance, pues Tom después de esto, ya tiene unas tareas programadas, para que las realice cíclicamente.
Necesito algún procedimiento que me permita decirle a Tom que dicha espera (aguardar a que otro tren pase por el trigger), sólo se realice la primera vez, y que posteriormente, realice todas las tareas siguiente n veces.
Aquí es donde entra en juego la variable que he creado anteriormente "vtom".
Lo que haré es preguntar por dicha variable, y si se cumple la condición de valor de dicha variable, ejecutaré una serie de instrucciones, dentro de las cuales (las instrucciones), aparte de ejecutar tareas sobre nuestro amigo Tom, también modificaré el valor de dicha variable.
Y ¿para qué hago esto?.
La lista de tareas que he creado es una lista que se ejecuta n veces, por lo tanto, cuando termina de ejecutar todas sus tareas asignada, empieza de nuevo a ejecutarlas, si yo quiero que algunas de esas tareas sólo se ejecute una sola vez, tengo que decirle de alguna forma que lo haga así, esta forma es ir
evaluando la variable "vtom" en cada ciclo de ejecución.
La primera vez que Tom comienza con sus tareas, ve que dicha variable "vtom" vale 0 (valor que le asigne a la hora de crear e inicializar la variable), como la regla que controla esto está en primer lugar, lo que hace es precisamente esto, chequea que esa variable valga 0, como es así entra dentro de sus operaciones anidadas y las ejecuta, y lo que realiza es asignarle a Tom la espera de que otro tren pase por encima de un trigger, (lo haremos a través de la regla Driver Schedule, que ya veremos como se utiliza más adelante) y justo después modificar el valor de la variable vtom, precisamente para que justo después de que termine de ejecutar todas las tareas de la lista y vuelva a evaluar la variable vtom al principio, no cumpla la condición de evaluación y no ejecute de nuevo la instrucción de espera, yendo directamente a la ejecución de las tareas posteriores, cíclicamente e indefinidamente sin entrar nunca más en la primera tarea chequeada por la variable.
Bueno, ¿Como se hace esto?.
Después de añadir la lista ordenada, añadiremos una regla de chequeo de variable (Variable Check), en la cual evaluaremos el valor (y valga la redundancia), de la variable que nos viene preestablecida recordar "vtom".

Después de añadir dicha regla la configuraremos de la siguiente forma, tal como aparece en la imagen de abajo.
"Evaluar variable Tom".

La siguiente regla que tenemos que añadir es una que nos permita asignarle al conductor acciones a realizar, esta regla es la Driver Schedule Rule.
La añadimos tabulada, indentada o subordinada (como se quiera llamar), a la regla de chequeo de variable, como muestro en la imagen siguiente:

En dicha regla (Driver Schedule), añadiremos aquellas acciones que tiene que realizar el Conductor sólo la primera vez), en nuestro caso y como se muestra en la siguiente imagen, anidaremos la regla de espera por un trigger.
Además de añadir dicha regla tenemos que decirle a la regla Driver Schedule sobre que conductor se van a aplicar las reglas, en nuestro caso, nuestro amigo Tom, como aparece en la parte superior derecha de la imagen.
Después de añadir las reglas en la lista de tareas seleccionaremos la primera opción (por defecto), que aparece justo debajo de esta lista.
Clasic style, if there a schedule running, do not emit a new schedule.
Osea que es un estilo clásico, si se ejecuta como horario, no emitir un nuevo horario, osea, que cuando acabe, que no realice, nada después.
También he cambiado el título de la regla para que sea más descriptivo, la he llamado “Inicio Tom” tal como se ve en la imagen.

Justo después de que esta regla se ejecute, debemos de decirle a la sesión, que dicha regla, no vuelva a ejecutarse, esto como ya se ha indicado más arriba se consigue modificando el valor de la variable "vtom" para que la próxima vez que inicie el ciclo, la condición no se cumpla y no vuelva a ejecutar
la regla Drive Schedule en la cual le decimos que tiene que esperar a que otro tren pase por encima de un trigger.
¿Como se hace esto?
Lo que tenemos que hacer es buscar alguna forma de modificar el valor de la variable vtom para conseguir nuestro fin, para ello utilizamos de nuevo la regla Variable Modify (Modificar Variable), como aparece en la imagen que se muestra a continuación.

La modificación de sus características es como sigue:
Lo que hay que hacer es modificar de alguna manera el valor de vtom para que no cumpla la condición inicial osea vtom = 0 esto se logra en la primera línea tal como aparece en la imagen.
"Modificar Variable Tom" , tal como se muestra en la imagen anterior.
Continuará....
No hay comentarios.