| Tabla de contenidos | Ventana central inferior |

Machine. Editor de máquinas de estados

Se representa una máquina de estados (objetos de clases derivadas de Machine) mediante un grafo de globos conectados. Cada globo representa un estado. Las conexiones representan las transiciones posibles entre dos estados. La punta de flecha indica el estado de destino de la transición.

Algunos globos tienen el borde de línea de trazos. Esto significa que son estados instantáneos, también llamados acciones. La máquina no permanece en ese estado, sólamente efectúa las acciones para las que esté programado y retorna al estado anterior. Sus conexiones se dibujan mediante línea de trazos y sin punta de flecha.

Los estados son objetos, derivados de la clase State, hijos de la máquina de estados. El primer hijo es el estado inicial. Las máquinas de estados son, a su vez, estados, por lo que pueden ser insertadas en otra máquina de estados creando una submáquina.

Las transiciones son objetos que adminten, como hijos, otros objetos derivados de la clase Condition. El orden de las condiciones es significativo. La primera condición que se cumpla origina la transición. Se ésta apunta a una acción (representada con línea de trazos) se ejecuta la acción y se continúan evaluando las siguientes transiciones, si la transición es hacia un estado genuino, la máquina cambia de estado y ya no se comprueban las siguientes transiciones. El orden de evaluación de las transiciones viene indicado en el gráfico mediante un número dentro de un pequeño circulo junto al origen de la transición.

Edición visual de una máquina de estados

Al seleccionar una máquina de estados en la ventana del explorador, se carga dicha máquina en el editor de máquinas de estados. Se puede seleccionar un estado o una transición, clikeando con el ratón sobre su representación o en el explorador.

Pulsando el botón derecho del ratón mientras el cursor está en la ventana del editor de máquina de estados aparece el menú contextual con las siguientes posibles opciones.

Add Node
Crea un nodo nuevo. Si hay más de una, muestra una lista con todas las clases posibles. Posiciona el globo bajo el cursor.

Convert Selection to Embedded Machine :

Disconnect Current Node :

Disconnect (+Delete) Current Node
Aparece si hay un estado seleccionado que no tiene conexiones. Borra el estado seleccionado.
Rename Current Node
Aparece si hay un estado seleccionado. Muestra una ventana poppup para renombrarlo.
Delete Transition
Aparece si hay una transición seleccionada. Borra la transición.
Rename Transition
Aparece si hay una transición seleccionada. Muestra una ventana poppup para renombrarla.

Estas cuatro últimas operaciones también pueden hacerse desde el explorador de objetos.

Para crear una transición se posiciona el cursor sobre el borde del globo del estado origen. Cuando aparezca un pequeño círculo alrededor de un punto del borde que no contenga ya una transición se pulsa el botón izquierdo y se arrastra el cursor hasta el borde del globo del estado destino. Cuando aparezca otro pequeño círculo se suelta el botón. La transición queda establecida.

Para ajustar estéticamente el gráfico se pueden mover los globos o los puntos finales de las conexiones arrastrándolos con el ratón.

Si se hace un doble click sobre un globo que represente una máquina anidada o una referencia a otra máquina, se carga en el editor dicha máquina.

Para añadir condiciones a las transiciones se usa el Object Browser como con cualquier otro tipo de objetos.

Los estados y las condiciones se parametrizarán en el Object Inspector.

Barra de herramientas

Go to parent
Cuando la máquina que se está editando es hija de otra máquina, pulsando este botón se carga en el editor la máquina padre.
Emite señales de sincronización
Conmutador. Sólo cuando este botón está activo se emite la señal, cuando se selecciona un estado o transición, para que el Object Browser y el Object Inspector se sincronicen.
 
Movie Reel   Otras ventanas


(C) Paco Suárez (pacosu@xitai,es). 2020.
XITAI