Desarrollo de herramienta de Administración, Desarrollo y Despliegue
De MorfeoWiki
Tabla de contenidos |
Empaquetado de redes.
Para desplegar una red en la máquina de estados como paquete debe construirse un archivo JAR con la siguiente estructura:
- META-INF/
- Descriptor de la red, con información sobre las clases, nombre y versión de la red, etc. (descriptor.xml)
- Archivo PNML (pn_nombre_version.xml).
- Archivo WAI.
- Paquetes Java con las clases de la red.
Descriptor de la red
El descriptor contiene la información necesaria para el despliegue de la red en la máquina de estados. Es una instancia de un esquema W3C:
<pdp:pdpDescriptor xmlns:pdp="http://tidsteng.morfeo-project.org/2006/PDP" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tidsteng.morfeo-project.org/2006/PDP pdp.xsd" network="RevSys" version="3"> <pdp:classes generatedCodePkg="org.morfeo.lysi.networks" action="org.morfeo.lysi.networks.ActionRevSysv3Impl" transformation="org.morfeo.lysi.networks.TransformationRevSysv3Impl"/> <pdp:handlers operational="org.morfeo.lysi.networks.DataHandlerRevSysv3Impl"/> <pdp:bindings/> </pdp:pdpDescriptor>
Como puede verse en el ejemplo, el descriptor indica:
- Nombre y versión de la red incluída en el archivo JAR.
- Paquete Java de las clases generadas al compilar la red, clases Java de acción, transformación y manejadores.
- Lista de enlaces («bindings») para la red.
Proceso de despliegue.
Despliegue de redes (1.2.0).
La máquina de estados se inicia con un directorio en la ruta de búsqueda de clases (CLASSPATH) para localizar ahí las clases Java de las redes. El proceso de despliegue de una red requiere copiar en ese directorio las clases necesarias e invocar la operación add_net del repositorio. Ésta busca las clases y las carga en memoria, de forma que quedan fijas para toda la ejecución del motor de estados.
Por otra parte, parece que las asociaciones «bindings» no se insertan en la base de datos al desplegar la red.
Propuesta para el despliegue.
En la implementación del despliegue para la herramienta de administración, a partir de un empaquetado, se ha optado, en principio, por descomprimir el contenido del JAR en los directorios del servidor adecuados.
De esta forma, el proceso es similar al de la versión 1.2.0 de la máquina. Sin embargo, se han añadido los siguientes cambios:
- Si el proceso de despliegue no tiene éxito, los archivos desplegados se eliminan.
- Las asociaciones («bindings») que estén presentes en el descriptor de despliegue se insertan en la tabla de la base de datos.
- Las clases generadas al compilar la red se buscan en el paquete Java indicado en el descriptor. De esta forma, es posible desplegar redes compiladas en diferentes paquetes. Como en la versión 1.2.0, las clases de usuario se especifican en el descriptor, así que pueden estar en otros paquetes.
En la parte cliente se han desarrollado tareas Ant para la creación del descriptor XML de un paquete y para solicitar el despliegue de un paquete en una instancia de la máquina de estados.
Manejadores.
Manejadores en la versión 1.2.0
El despliegue de una red en el sistema puede requerir la creación de tablas para los manejadores de datos. El desarrollador puede incluir en el descriptor una referencia a una clase que implementa las operaciones necesarias para la instalación y desinstalación de esa red particular.
…
<pdp:classes action="…" transformation="…" generatedCodePkg="…"
manager="org.example.nets.RevSysv1Manager"/>
…
La clase debe implementar la interfaz «DeploymentManager», que dispone de dos métodos: «install(Connection)» y «uninstall(Connection)». En ellos el parámetro ofrece una conexión a la base de datos, por si fuera necesario crear o eliminar tablas.
Eliminación de redes.
Eliminación de redes del sistema (1.2.0).
Para eliminar una red es necesario que ésta no tenga tareas activas asociadas y que además un administrador las haya eliminado de la base de datos.
Ya que no existe una relación entre las redes registradas y las clases asociadas, al borrar definitivamente una red del sistema se hace difícil localizar las clases que ya no son necesarias.
Plugin para Eclipse.
Instalación.
Requisitos:
- Para que el plugin pueda interaccionar con un SMARTFlow-StateEngine, este debe ser como mínimo de la versión 2.0.1 (actualmente sólo se puede obtener mediante CVS).
- Para ciertas tareas es necesario tener definida la variable de entorno JAVA_HOME, aunque se pueda hacer funcionar Eclipse sin definir esta variable de entorno.
Los pasos para instalar el plugin son:
- Ejecutar "Help ↝ Software ↝ Updates ↝ Find and Install..." en el menú de Eclipse.
- Selecionar "Search for new features to install" y pulsar en Next
- Añadir el sitio remoto de Morfeo. http://www.morfeo-project.org/eclipse_updates mediante el botón "New Remote Site..."
- Seleccionar el sitio de Morfeo añadido en el paso anterior y "Callisto Discovery Site".
- Pulsar el botón "Finish".
- Expandir la lista de Callisto (Esto que parece una tontería no lo es, mirar bug #105317 en https://bugs.eclipse.org/bugs/)
- Seleccionar el plugin SmartieFlow.
- Pulsar el botón "Select Required" y después "Finish".
- Seguir las indicaciones de Eclipse.
CVS.
El código fuente del plugin está en el modulo "SMARTFlow-Admin/plugins/org.morfeo.smartieflow" del CVS de tidsteng. Este a su vez es un proyecto de Eclipse, por lo que se puede importar fácilmente como un proyecto CVS.
Nota: Se puede probar el plugin directamente en eclipse sin instalarlo pulsando con el boton derecho del ratón en el nombre del proyecto y ejecutando la entrada del menú contextual "Run As↝Eclipse Application"
Utilización.
El plugin esta en Inglés y en Español (Si en el S.O. esta configurado el Español como idioma principal, se usara Español, en cualquier otro caso se usara el idioma Inglés).
El plugin añade:
- un nuevo tipo de proyecto: SmartieFlow project.
- un sistema de administración de motores SMARTFlow-StateEngine.
- un nuevo tipo de fichero: PNML File.
- un builder automatico para ficheros PNML.
- un editor grafico para los ficheros PNML.
- ...
Los ficheros PNML tienen las siguientes propiedades:
- paquete en el que se generará las clases de apoyo.
- ...
Los ficheros PNML tendrán un submenu "Smartie Flow" con las siguientes acciones:
- Build Ant File - Genera un fichero build.xml para poder compilar, desplegar ... sin usar eclipse. El fichero contendrá información recolectada en el momento de generar el build.xml por lo que cuando se cambien datos asociados al fichero PNML se deberá regenerar el build.xml.
- Deploy - Desplegara la red en uno de los motores configurados.
- ...
Los proyectos SmartieFlow tienen las siguientes propiedades:
- ...
Para administrar los motores se dispone de una "vista" activable mediante "Window↝Show View↝Other...↝Smartie Flow↝SMARTFlow-StateEngines".
En esta vista se podrá ver los motores actualmente configurados así como su estado. Además se podrá realizar ciertas acciones sobre ellos como arrancarlos, pararlos, reiniciarlos, configurarlos, etc...
También se dispone de una página de preferencias en "Window↝Preferences...↝Smartie Flow↝Engines" en la que se podrá añadir y borrar motores (aparte de en la vista anteriormente comentada).
...
Gestión de versiones.
En Debate sobre Gestión de Versiones se está llevando a cabo el debate sobre la funcionalidad de gestión de versiones que se espera de la máquina y la capacidad de migrar tareas entre diferentes versiones.
