Concurrencia entre Diagramas
Con esta implementación se van a contemplar dos formas distintas de trabajar con un diagrama, una es el modo ‘editing’ y otra el modo ‘reading’.
MODO ‘EDITING’
Este modo permitirá editar y salvar el diagrama como hemos estado haciendo hasta ahora. La probeta que aparece en la pestaña de modeling cuando entras por primera vez en la tabla de diagramas se verá cambiada por lápiz en este modo, para indicar que se está editando.
MODO ‘READING’
La probeta que aparece en la pestaña de modeling cuando entras por primera vez en la tabla de diagramas se verá cambiada por ojo en este modo, (por defecto aparecerá siempre el ojo) para indicar que se está editando por otro usuario.
Se van a bloquear los botones:
Save diagram.
Delete item.
Assistants.
Validate mapping.
Drawing tools.
El resto de las herramientas van a estar desbloqueadas.
Con la herramienta: ‘launch validation’, hay un cambio de funcionamiento, estará desbloqueada en los dos modos, pero en el modo ‘reading’ solo enviará el diagrama al ejecutor y en el modo ‘editing’ funcionará como hasta ahora, salvará el diagrama y enviará el diagrama al ejecutor.
COMO SE CIERRA UN DIAGRAMA
Cuando con un diagrama que está abierto en modo ‘editing’ su estado is_open pasa a false cuando:
Se hace logout en la aplicación.
Cuando se sale de la vista de modeling navegando por la propia aplicación.
Cuando caduca automáticamente la sesión del usuario (la sesión de un usuario dura 30’).
Cuando cierras la pestaña del diagrama en cuestión.
IMPLEMENTACIÓN
Todos los diagramas se abrirán por defecto en modo ‘reading’.
Se nos indica que el diagrama está cerrado, si al intentar pulsar en el candado que tenemos nos dice que alguien lo está usando, y con la marca del ojo en la pestaña de modeling de la cual hablamos anteriormente. También el candado estará cerrado en este caso.
Si el usuario quiere editar el diagrama, lo hará pulsando ese botón. Y el diagrama quedará liberado cambiando el icono por un candado desbloqueado.(Solo se puede guardar una vez se pulsa el candado y se realiza algún cambio).
Puede pasar que al querer desbloquear un diagrama este ya esté siendo editado por otra persona. En este caso se mostrará una alerta que indique que no podrá desbloquearlo porque está siendo modificado por otro usuario, se mostrará el nombre y apellidos de ese usuario y su XI.
¿Desde donde se puede abrir un diagrama?
Desde la tabla de diagramas: cuando abrimos un diagrama desde ese punto el diagrama aparecerá por defecto en estado READING, solo se podrá visualizar y no modificar.
En el botón more info. de la tabla de diagramas. Cuando consultamos la información en un diagrama, este también se abre. En este caso el diagrama se abrirá por defecto en estado READING, solo se podrá visualizar y no modificar.
Mediante url: cuando se abre un diagrama desde acceso directo por
URL su estado por defecto será
READING, solo se podrá visualizar y no modificar.
Al importar un diagrama: una vez importado el diagrama este se abre, en este caso el estado con el que se abre el diagrama será EDITING ya que al ser un diagrama nuevo nadie más estará editándolo al mismo tiempo.
Al importar desde selenium: una vez importado el diagrama este se abre, en este caso el estado con el que se abre el diagrama será EDITING ya que al ser un diagrama nuevo nadie más estará editándolo al mismo tiempo.
Al crear un diagrama nuevo: al crear un diagrama nuevo nadie más estará editándolo por lo tanto cuando creamos un diagrama nuevo al aceptar la ventana modal se carga el nuevo diagrama en estado EDITING.
Al crear un diagrama que es copia de una template: al crear un diagrama nuevo nadie más estará editándolo por lo tanto cuando creamos un diagrama nuevo al aceptar la ventana modal se carga el nuevo diagrama en estado EDITING.
Al importar mensajes desde selenium: para importar mensajes desde selenium será necesario estar antes en el estado EDITING (sino la herramienta importar mensajes desde selenium estará bloqueada) por lo que después de importar los nuevos mensajes seguiremos en el estado EDITING.
Desde el assistant: para trabajar con los asistentes de mapeo será necesario estar antes en el estado EDITING (sino estas herramientas estarán bloqueadas) por lo que después de importar los nuevos mensajes seguiremos en el estado EDITING.
¿Qué se puede hacer en el canvas cuando estemos en modo READING?
Podemos desplazarnos por el lienzo.
Podemos aplicar zoom.
Utilizar determinados atajos de teclado. Los atajos de teclado sobre el canvas estarán inhabilitados, excepto los que sean atajos de los botones desbloqueados. Los atajos habilitados son los siguientes: los del zoom, la herramienta move, la herramienta puntero y la tecla escape para cerrar el formulario de propiedades.
Hacer doble click para ver las propiedades de un Item, pero sin editar los formularios. Todos los campos de los formularios estarán deshabilitados. Podremos cerrar el formulario desde el propio botón que tiene el formulario
¿Como pasamos un diagrama al estado EDITING?
Sobre el diagrama, en la barra de iconos roja hay un candado. Ese candado estará cerrado si estamos en modo CLOSE o READING. Solo se podrá abrir si estamos en modo READING. Al abrirlo pasa al estado EDITING. Pero solo se podrá si el diagrama que tenemos abierto no está siendo editado por otra persona o si el que lo estaba editando era el mimo usuario que intenta desbloquearlo. Si al desbloquearlo ya está siendo editado por otra persona se muestra una ventana modal con los datos de ese usuario.
También podemos pasar el diagrama a modo Editing con el atajo de teclado: “Alt+9”
¿Cuándo se libera un diagrama que esa siendo editado para que pueda editarlo otra persona?
Liberar un diagrama quiere decir que ya no lo estamos utilizando, se considera que dejamos de utilizar un recurso cuando:
Cuando hacemos logout en la aplicación, se libera el diagrama que teníamos abierto.
Cuando salimos de la vista de modeling navegando a otra opción de menú izquierdo, se libera el diagrama que teníamos abierto.
Al cerrarse automáticamente la sesión de usuario (cuando esta expire después de 30 minutos).
Cuando cerramos la pestaña del navegador.
Cuando creamos un diagrama nuevo desde la misma pestaña que ya tenía otro diagrama abierto, se cerrara el recurso que estaba abierto antes.
Cuando importamos un nuevo diagrama desde selenium en la misma pestaña que ya tenía abierto otro diagrama, se cerrara el recurso que estaba abierto en esa pestaña.
Cuando importamos un nuevo diagrama en la misma pestaña que ya tenía abierto otro diagrama, se cerrara el recurso que estaba abierto en esa pestaña.
Al abrir otro diagrama desde el treeView si en la misma pestaña ya había otro distinto abierto se cerrará ese diagrama.
Al abrir la vista de data management desde la vista de modeling se cerrar el diagrama que teníamos abierto.
¿Cuándo se liberan todos los recursos que tenía abiertos un mismo usuario?
Cuando hacemos logout desde el propio botón de la aplicación ó cuando cerramos el navegador (30 minutos después al caducar la sesión) se cerrarán todos los recursos que el usuario tenía abiertos.
¿Caso particular del botón ‘Lanzar validación’?
El botón ‘Lanzar validación’ estará desbloqueado en el estado EDITING y en el estado READING, pero según el estado cambia su comportamiento. En el estado EDITING salva el diagrama y envía el diagrama al ejecutor; en el estado READING solo envía el diagrama al ejecutor.
¿Caso particular del botón ‘exportar diagrama’?
Recordar que el botón de exportar diagrama solo estaba desbloqueado en los estados READING y EDITING, pero en el caso del estado EDITING solo estará desbloqueado si el diagrama tiene salvados todos los cambios.
Comprobación al salvar un diagrama.
Al salvar un diagrama se comprueba si el usuario que intenta salvarlo coincide con el que está editándolo en ese momento. Si por alguna inconsistencia no es él el que lo está editando se avisa con el siguiente mensaje: “Current diagram cannot be save because current user has not permission. Reload the diagram and try to save it again.” En el caso de que sea porque lo está editando otra persona distinta al que lo está editando se indicara el nombre e id de ese usuario.