Download Herramienta de Generación de Código Framework

Document related concepts
no text concepts found
Transcript
Herramienta de Generación de Código
Framework ATLAS
Versión 1.1
Área de Aplicaciones Especiales y Arquitectura de
Software
Framework Atlas
Crystal Reports 2008
Hoja de Control
Título
Manual de Usuario de la Herramienta de Generación de Código de ATLAS
Documento de
NORMATIVA ATLAS
Referencia
Responsable
ICM
Versión
1.1
Fecha Versión
Fecha
1
Revisado/Validado por:
2
12/06/2012
Revisión/Validación
Aprobado por:
Fecha Aprobación
Registro de Cambios
Versión
Causa del Cambio
Responsable del Cambio
Fecha del Cambio
Área de Aplicaciones Especiales y
1.0
Versión inicial del documento
1.1
Nueva versión de la herramienta
que incluye generación de
pantallas.
Listado de ficheros modificados
y/o creados por la herramienta
Documentada incrementalidad
parcial.
Documentado alcance y
funcionalidades futuras
Arquitectura de Software
23/02/2012
Área de Aplicaciones Especiales y
Arquitectura de Software
Página 2 de 20
12/06/2012
Framework Atlas
Crystal Reports 2008
Índice
1
INTRODUCCIÓN ................................................................................................................................................................ 4
1.1
1.2
2
AUDIENCIA OBJETIVO .............................................................................................................................................. 4
CONOCIMIENTOS PREVIOS ...................................................................................................................................... 4
USO DE LA HERRAMIENTA ........................................................................................................................................... 6
2.1
2.2
2.3
2.4
2.5
2.6
2.7
CONFIGURACIÓN DE LA CONSOLA DE HIBERNATE .......................................................................................... 7
CONFIGURACIÓN DEL PAQUETE JAVA ................................................................................................................. 8
CONFIGURACIÓN DE LA CONEXIÓN A BASE DE DATOS ................................................................................... 9
SELECCIÓN DE LAS TABLAS .................................................................................................................................... 9
EJECUCIÓN ................................................................................................................................................................. 11
COMPROBACIÓN DE CÓDIGO GENERADO ......................................................................................................... 14
EJECUCIÓN DE LA APLICACIÓN ............................................................................................................................ 17
3
USO INCREMENTAL DE LA HERRAMIENTA .......................................................................................................... 19
4
ALCANCE DE LA VERSIÓN ACTUAL ......................................................................................................................... 20
Página 3 de 20
Framework Atlas
Crystal Reports 2008
Contenido
1
INTRODUCCIÓN
A partir de la versión 1.2.0 del framework de desarrollo de aplicaciones ATLAS, se incluye una herramienta de
generación automática de código. Esta herramienta permite, a partir de un modelo de datos, generar una serie
de clases Java que se utilizarán para acceder a ese modelo de datos desde una aplicación ATLAS.
En la versión actual, además del código Java, la herramienta genera las pantallas que permiten administrar el
contenido de las tablas seleccionadas, con las operaciones de alta, baja y modificación.
La versión actual de la herramienta genera el siguiente código fuente:
-
Clases con los objetos de Domino
-
Clases con los DAOs
-
Clases con los Servicios
-
Clase(s) con la Fachada
-
Tests de JUnit de los servicios
-
Backing Beans de JSF
-
Ficheros xhtml con las pantallas para los listados de entidades
-
Ficheros xhtml con las pantallas para los formularios de alta y edición de entidades
La herramienta nos permite seleccionar las tablas de las que queremos generar el código, y a partir de ellas realiza
una ingeniería inversa del modelo de datos y genera el código en la aplicación.
Para el desarrollo de la herramienta se ha tomado como punto de partida el plugin JBoss Hibernate Tools, y se
ha personalizado su configuración para adaptarlo a las necesidades propias de ATLAS.
En este documento se describe cómo configurar la herramienta, y cómo utilizarla para generar código fuente.
1.1
AUDIENCIA OBJETIVO
Este documento está orientado a toda aquella persona que desee desarrollar una aplicación con el framework
ATLAS y para ello requiera interaccionar con un modelo de datos.
1.2
CONOCIMIENTOS PREVIOS
Para un completo entendimiento del documento, el lector deberá tener conocimientos previos sobre las siguientes
tecnologías:
Lenguaje Java
Spring
JSF
Página 4 de 20
Framework Atlas
Crystal Reports 2008
Hibernate
Framework de desarrollo de aplicaciones ATLAS
Página 5 de 20
Framework Atlas
Crystal Reports 2008
2
USO DE LA HERRAMIENTA
Este documento toma como punto de partida un Arquetipo Web recién generado, y asume que se dispone del
entorno Eclipse correctamente configurado y con el plugin JBoss Hibernate Tools instalado. Si no se dispone del
arquetipo o el entorno, para más información sobre cómo configurar el entorno y generar un arquetipo web,
consultar el manual ATLAS_MUS_Preparacion_Entorno_Desarrollo.
En los ejemplos mostrados en este documento se ha utilizado un arquetipo web generado con los siguientes
parámetros:
Para configurar el entorno de desarrollo para utilizar la herramienta, y posteriormente utilizarla es necesario realizar
los pasos descritos en los siguientes apartados.
Página 6 de 20
Framework Atlas
Crystal Reports 2008
2.1
CONFIGURACIÓN DE LA CONSOLA DE HIBERNATE
Antes de poder utilizar la ingeniería inversa, es necesario crear una Consola de Hibernate. Para ello, pulsamos con
el botón derecho sobre la carpeta “generador”, seleccionamos “New -> Other -> Hibernate Console
Configuration”:
Pulsamos sobre “Next” y aparece la pantalla para crear una nueva consola.
Página 7 de 20
Framework Atlas
Crystal Reports 2008
En este pantalla, pulsamos sobre “Finish” y la consola ya estará creada.
2.2
CONFIGURACIÓN DEL PAQUETE JAVA
Las clases que generará la herramienta estarán dentro de un paquete que puede ser configurado a través de la
variable “generador.paquete” del fichero “web/src/main/resources/environment.properties”. Se deberá
modificar el valor de esta variable para configurar el paquete en el que deseamos generar las clases Java:
Página 8 de 20
Framework Atlas
Crystal Reports 2008
2.3
CONFIGURACIÓN DE LA CONEXIÓN A BASE DE DATOS
Para que la herramienta pueda conectarse a la base de datos, debemos modificar el fichero de configuración del
arquetipo situado en “web/generador/hibernate.cfg.xml”, y modificar las siguientes propiedades:
hibernate.connection.url: Cadena de conexión JDBC.
-
Ej: jdbc:oracle:thin:@icm21:1521:denivel2
hibernate.connection.username: Usuario de conexión a la base de datos.
-
Ej: DBA_EJPL
hibernate.connection.password: Contraseña de conexión.
hibernate.default_schema: Schema de conexión (igual que el usuario).
-
2.4
Ej: DBA_EJPL
SELECCIÓN DE LAS TABLAS
Antes de ejecutar la herramienta tenemos que seleccionar las tablas para las que queremos realizar la generación.
Para ello, debemos abrir el fichero “generador/hibernate.reveng.xml”, y seleccionar la pestaña “Table Filters”:
Página 9 de 20
Framework Atlas
Crystal Reports 2008
Aquí, pulsamos sobre el botón “Refresh”, y aparecerá un desplegable en el que debemos seleccionar consola de
hibernate que ya habíamos creado:
En ese momento es posible que aparezca el siguiente mensaje:
Página 10 de 20
Framework Atlas
Crystal Reports 2008
Pulsamos sobre “Yes”, y ya podemos desplegar en la zona “Database Schema” todas las tablas del esquema.
Debemos seleccionar las tablas que queramos, y pulsar sobre “Include…”, para pasarlas a la zona de la izquierda
y que así sean utilizadas para la generación de código.
Cuando hayamos terminado de seleccionar las tablas, pulsaremos sobre “Save” para guardar el fichero:
2.5
EJECUCIÓN
Una vez que ya hemos terminado de configurar la herramienta, podemos proceder a su ejecución para generar el
código. La ejecución de la herramienta se realiza mediante Maven, para ello pulsamos con el botón derecho sobre
el proyecto “XXXX_web”, y seleccionamos “Run As… -> Maven build”:
Página 11 de 20
Framework Atlas
Crystal Reports 2008
En la pantalla que aparece, deberemos rellenar los siguientes valores:
-
Goal: generate-resources
-
Profiles: generador
Posteriormente pulsamos sobre el botón “Run” para ejecutar Maven con esos valores:
Página 12 de 20
Framework Atlas
Crystal Reports 2008
Comenzará entonces la ejecución de la herramienta, que mostrará todo el log por la consola:
Página 13 de 20
Framework Atlas
Crystal Reports 2008
Nota 1
Si se ha seleccionado alguna tabla que no contenga definida una PRIMARY KEY, la herramienta de generación
de código preguntará por pantalla qué columnas identifican unívocamente los elementos de esa tabla. Debemos
introducir los nombres de las columnas EN MAYÚSCULA separados por coma (si pulsamos “Enter” sin introducir
ningún nombre de columna, utilizará todas las columnas de la tabla como clave única):
Nota 2
Es importante revisar el log de la consola, porque en ocasiones se muestran advertencias sobre ficheros que no
se han creado porque ya existían, o modificaciones que no se ha podido realizar.
2.6
COMPROBACIÓN DE CÓDIGO GENERADO
Una vez ejecutada la herramienta, sólo queda comprobar que el código se ha generado correctamente. Para ello,
debemos pulsar con el botón derecho sobre el proyecto “XXXX_Web”, y seleccionar la opción “Refresh”:
Página 14 de 20
Framework Atlas
Crystal Reports 2008
Podemos comprobar entonces que se han generado los ficheros deseados, tanto Java como xhtml dentro de las
carpetas correspondientes del arquetipo. A continuación se muestra una tabla con los ficheros que crea y/o
modifica la herramienta de generación de código durante su ejecución:
Creación /
Fichero
Descripción
Modificación
Creación, sólo Entidades de dominio asociadas a cada una
src/main/java/xxxx/domain/YYYY.java
si no existe
src/main/java/xxxx/dao/BaseDAO.java
Creación, sólo
src/main/java/xxxx/dao/BaseDAOImpl.java
si no existe
de las tablas seleccionadas.
Clases padre de las que heredan los
distintos DAOs para cada una de las tablas
seleccionadas.
src/main/java/xxxx/dao/YYYYDAO.java
Creación, sólo Clases con los DAOs para cada una de las
src/main/java/xxxx/dao/YYYYDAO.java
si no existe
entidades.
Creación, sólo Bean de respaldo de JSF para el
src/main/java/xxxx/jsf/YYYYBean.java
si no existe
Modificación
(si no existen
src/main/java/xxxx/jsf/NavigationResults.java
ya los
cambios)
src/main/java/xxxx/services/BaseService.java
Creación, sólo
src/main/java/xxxx/services/BaseServiceImpl.java
si no existe
mantenimiento de los catálogos
Resultados de navegación de las distintas
páginas JSF, que se utilizan en facesnavigation.xml
Clases padre de las que heredan los
distintos Servicios para cada una de las
tablas seleccionadas.
src/main/java/xxxx/services/YYYYService.java
Creación, sólo Clases con los Servicios para cada una de
src/main/java/xxxx/services/YYYYServiceImpl.java
si no existe
Creación si no
src/main/java/xxxx/services/facade/XxxxFacade.java
src/main/java/xxxx/services/facade/XxxxFacadeImpl.java
existe, y
modificación.
las entidades.
Clases con la fachada y la implementación
para el paquete xxxx.
Creación, sólo Clases con los Tests de JUnit de cada uno
src/test/java/xxxx/services/YYYYServiceTest.java
si no existe
src/main/resources/conf/applicationContext-
Modificación
database.xml
src/main/resources/conf/applicationContext-dao.xml
Modificación
de los servicios.
Incluye el paquete de las clases generadas
en la entrada “packagesToScan”.
Incluye los Beans para los distintos DAOs.
Incluye los Beans para los distintos
src/main/resources/conf/applicationContextservices.xml
Modificación
Servicios.
Crea y/o modifica el bean de la fachada para
inyectar los servicios.
Incluye las opciones de menú
src/main/resources/menu.xml
Modificación
correspondientes a cada uno de los
catálogos administrados
Página 15 de 20
Framework Atlas
Crystal Reports 2008
src/main/resources/msg/messages_es.properties
Modificación
src/main/webapp/WEB-INF/faces-managed-beans.xml
Modificación
src/main/webapp/WEB-INF/faces-navigation.xml
Modificación
src/main/webapp/secure/catalogos.xhtml
src/main/webapp/secure/listaYYYY.xhtml
src/main/webapp/secure/formularioYYYY.xhtml
Incluye todos los textos mostrados en las
distintas pantallas
Incluye la declaración de los distintos
Managed Beans.
Incluye las reglas de navegación para las
distintas pantallas
Creación si no Página principal de administración de
existe
catálogos
Creación si no Página JSF para listado de elementos de la
existe
entidad YYYY
Creación si no Página JSF para edición y alta de elementos
existe
de la entidad YYYY
Nota 1
En casos excepcionales es posible que algunos de los tests de JUnit no se ejecuten correctamente, en ese caso
será necesario revisar los logs de ejecución para identificar los posibles errores y corregirlos.
En tablas con Primary Key única y numérica, el generador de código asume que se cumple la normativa de
Base de Datos y ERWIN V7, por lo que asume que existe una secuencia con la nomenclatura
XXXX_S_NOMBRETABLA, que utilizan las entidades para crear nuevos objetos. Un fallo típico en los tests de
JUnit es al tratar de insertar un objeto de algún tipo de datos para el cuál no existe la secuencia.
Nota 2
En tablas con foreign keys no nulas a otras entidades de dominio , la herramienta de generación de código
genera el código de los Tests de JUnit, pero deja comentada la anotación @Test, y por tanto el test no se
ejecuta. En estos casos deberá modificarse el test manualmente, y posteriormente descomentar la anotación para
que se ejecute el test.
Para saber dónde hay que modificar el test, la herramienta deja un comentario “// TODO: “ en las líneas concretas:
Página 16 de 20
Framework Atlas
Crystal Reports 2008
Nota 3
Puede observarse que para poder tratar las entidades de manera genérica en las pantallas de administración de
catálogos, la herramienta de generación de código crea tres métodos anotados como @Transient en las
entidades de dominio. Estos métodos son:
-
getPKAsString y getPKFromString: necesarios para identificar una entidad a través de una cadena
de texto.
-
getTextoListaValores: Utilizado para mostrar un texto descriptivo de la entidad cuando se muestra
dentro de una lista de valores.
2.7
EJECUCIÓN DE LA APLICACIÓN
Por último, debemos de ejecutar Maven para compilar el proyecto (goals “clean install”), y comprobar que los tests
de JUnit generados se ejecutan correctamente.
Página 17 de 20
Framework Atlas
Crystal Reports 2008
Después, procederemos a ejecutar la aplicación para comprobar que efectivamente se han generado las pantallas
de mantenimiento de catálogos. La herramienta de generación automática de código genera una sub-opción de
menú por cada catálogo, en la opción “Mantenimiento de Catálogos”:
Página 18 de 20
Framework Atlas
Crystal Reports 2008
3
USO INCREMENTAL DE LA HERRAMIENTA
La herramienta está pensada para poderse ejecutar incrementalmente, de manera que se puedan generar las
pantallas correspondientes a una serie de tablas, y en el futuro cuando se añadan tablas nuevas volverse a
ejecutar con las nuevas.
Así, antes de introducir una modificación en el código, la herramienta comprueba que dicha modificación no exista
ya, de forma que no realiza ninguna modificación dos veces.
Nota
La incrementalidad de la herramienta de generación de código es incrementalidad a nivel de tabla, no a nivel
de campo. Si se modifican las columnas de una tabla para la que ya se generó el código, es necesario eliminar
primero manualmente el código anterior para que vuelva a generarse el código con los campos modificados.
Página 19 de 20
Framework Atlas
Crystal Reports 2008
4
ALCANCE DE LA VERSIÓN ACTUAL
La versión actual de la herramienta genera correctamente las pantallas para el mantenimiento cualquier tabla de
base de datos independientemente de que se cumpla o no la nueva normativa (Erwin 7). Por tanto, pueden
generarse pantallas para la administración de tablas heredadas que no tengan integridad referencial, o que tengan
claves únicas identificadas por varios campos.
Sin embargo, existen algunas limitaciones que se irán resolviendo en versiones futuras:
1) Vistas: La herramienta no identifica que una entidad se refiere a una vista, por lo que añade los métodos y
pantallas para edición, creación y eliminación de elementos (imposible en una vista). En el futuro la
herramienta identificará que se trata de una vista y sólo generará los métodos y pantallas necesarios.
2) Campos Lob (Blob y Clob): La herramienta no administra tablas con campos de tipo Blob/Clob, en el
futuro se incluirá esta funcionalidad para que pueda descargarse el Blob/Clob a un fichero local (o subirse
a la aplicación si se trata de un alta / modificación).
En la versión actual, las pantallas asociadas a tablas con campos Blob/Clob tienen un mensaje indicando
que no se soporta dicho campo:
Página 20 de 20