Download Tabla de Ilustraciones - Trabajos de Grado de la facultad de
Document related concepts
no text concepts found
Transcript
Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator ANEXO 4: DOCUMENTACIÓN DEL TRANSFORMADOR DE LA APLICACIÓN WEB GENERATOR (WAPP Generator) FERNEY SANTOS AGUILLÓN MARTÍNEZ MARIO ALONSO MATEUS GÓMEZ PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERÍA CARREA DE INGENIERÍA DE SISTEMAS BOGOTÁ D.C. 2014 Página 1 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator Tabla de contenido Tabla de Ilustraciones................................................................................................................ 4 1. Introducción ...................................................................................................................... 5 2. Herramientas Utilizadas para la Transformación .............................................................. 5 3. Transformador V1.0 .......................................................................................................... 5 4. Transformador V2.0 .......................................................................................................... 7 5. Transformador V3.0 .......................................................................................................... 8 6. Transformador V4.0 ........................................................................................................ 10 7. Transformador V5.0 ........................................................................................................ 10 8. Transformador V6.0 ........................................................................................................ 12 Página 2 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator Página 3 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator Tabla de Ilustraciones Ilustración 1: Archivos generate.mtl. ............................................................................................ 5 Ilustración 2: Directorio src-gen. .................................................................................................. 6 Ilustración 3: generate.mtl V2.0. ................................................................................................... 7 Ilustración 4: Generación de la aplicación web............................................................................. 8 Ilustración 5: Plantilla faces-config.xml. ...................................................................................... 9 Ilustración 6: Plantilla Acceleo Generación Tabla. ..................................................................... 10 Ilustración 7: Invocación método generateRelations. ................................................................. 11 Ilustración 8: Fragmento método generateRelations. .................................................................. 11 Ilustración 9: Plantillas generación CRUD. ................................................................................ 11 Ilustración 10: Fragmento de código web.xml. ........................................................................... 12 Ilustración 11: Carpeta de archivos prexistentes. ........................................................................ 13 Ilustración 12: Fragmento plantilla menú. .................................................................................. 13 Ilustración 13: Plantilla sql. ......................................................................................................... 14 Página 4 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator 1. Introducción Este documento presenta una documentación sobre el transformador del meta-modelo de la aplicación web a código en tecnología Java EE 6 utilizando como framework de desarrollo JSF 2.2, utilizando como servidor de aplicación GlassFish 4.0 e IDE Netbeans 7.4. Al igual que el meta-modelo, el transformador fue desarrollado incrementalmente para ir transformando este a medida que se hacen cambios incrementales. 2. Herramientas Utilizadas para la Transformación Para la transformación del metamodelo de la aplicación web se utilizó la herramienta Acceleo, el cual es una implementación del OMG (Object Management Group) para transformar un modelo MOF a un lenguaje textual. Esta herramienta es un plugin del IDE Eclipse, lo que la hace muy útil debido a que la integración con el proyecto Emf también desarrollado por Eclipse la hace la mejor elección. 3. Transformador V1.0 Para desarrollar la primera versión del transformador, debido a que una aplicación web solo tenía un conjunto de páginas web, donde estas a su vez solo tienen las siguientes propiedades: nombre del archivo, título, altura y ancho de la página web. En la siguiente ilustración se muestra el archivo de generación en Acceleo: Ilustración 1: Archivos generate.mtl. Página 5 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator El archivo generate.mtl es el modulo principal donde tiene como entrada una aplicación web, este archivo sirve como punto central para utilizar los demás módulos y generar los archivos necesarios para poder crear una aplicación web en Java EE 6, utilizando como servidor de aplicación. Los siguientes son los módulos con los que cuenta el transformador: El archivo pageGenerate.mtl es el módulo para la generación de las páginas web. El archivo buildGenerate.mtl es el módulo para la generación del archivo build.xml del proyecto web. El archivo webFileGenerate.mtl es el módulo que se encarga de la generación del archivo web.xml necesario para la configuración del proyecto web en Java EE6. El archivo manifestGenerate.mtl es el módulo que crea el archivo MANIFEST.MF. El archivo antDeployGenerate.mtl es el módulo que crea el archivo ant-deploy.xml del proyecto de la aplicación web, necesario para la construcción y compilación de la aplicación web. El archivo build-impl.mtl, módulo que se utiliza para la creación del archivo buildimpl.xml necesario para la compilación del proyecto. El archivo propertiesFilesGenerate.mtl, genera los archivos de propiedades que son utilizados en la compilación de la aplicación web. El archivo projectFileGenerate.mtl, es el encargado de generar el archivo project.xml. Una vez que el archivo generate.mtl es ejecutado es generado dentro de la carpeta src-gen, la aplicación web, como se puede observar en la siguiente ilustración: Ilustración 2: Directorio src-gen. Para el desarrollo del primer Sprint se desarrolló el meta-modelo que se muestra en la Ilustración 1. Página 6 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator 4. Transformador V2.0 Para el desarrollo del segundo transformador se eliminó la generación de archivos que no eran estándar y que solamente se utilizaban para poder generar el proyecto directamente a NetBeans, sin embargo el objetivo del transformador es ser independiente de tecnología, por lo que se generó los archivos estándar de un proyecto web en Java EE 6. En la siguiente ilustración se muestra los modulos desarrollados para llevar a cabo la transformación del modelo ajustándose a los objetivos de generación de páginas web con formularios web. Ilustración 3: generate.mtl V2.0. Como se puede observar al archivo generate.mtl se removieron varios módulos que no eran estándar en un proyecto Java EE 6. Asimismo se agregaron los siguientes módulos para cumplir con los objetivos del transformador. El archivo pageGenerate2.mtl que genera páginas web sin un estilo css y sin una plantilla. El archivo FaceletTemplateGenerate.mtl genera un archivo plantilla Facelet que es utilizado por JSF, para poder ser utilizada si se desea crear otra página, dándole uniformidad a la presentación del proyecto. El archivo entitiesGenerate.mtl, genera las entidades modeladas y que serán utilizadas dentro de los campos de los formularios, estas entidades contienen las anotaciones necesarias para mapear la entidad con una tabla en una base de datos relacional. El archivo cssStyleGenerate.mtl, genera el archivo css que es necesario para poder generar la plantilla Facelet. Página 7 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator Finalmente el archivo managebBeansGenerate.mtl, genera los MangebBean que son utilizados por las paginas para llevar acabo las solicitudes de las páginas web. Al igual que en la anterior iteración el proyecto Web generado por el proyecto se encuentra dentro de la carpeta src-gen, como se puede observar en la siguiente ilustración de la estructura del proyecto generado: Ilustración 4: Generación de la aplicación web. Como ejemplo se modelo una aplicación web con dos entidades llamadas Adress y Customer son generadas asimismo se generaron los ManagedBean que llevaran a cabo las solicitudes de las páginas, también son generados los archivos css para los Facelets. Por último se generaron las páginas web modeladas junto como el Facelet si se desea tener una aplicación con estilo css. 5. Transformador V3.0 Debido a que en el tercer sprint se modelo la transición entre las páginas web de una aplicación web, fue necesario transformar esto en elementos que se manejan en Java EE 6, fue necesario Página 8 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator generar el faces-config.xml¸ ya que este se encarga de manejar el flujo de navegación de la aplicación web en Java EE 6. Asimismo por medio de los ManagedBean y los Ejb se generaban las acciones que debían soportar las transiciones, como si estas transiciones poseían condiciones para poder llevar a cabo la transición. Para la generación del faces-config.xml, fue necesario la creación de una plantilla web que transformara el modelo al código xml. En la siguiente ilustración se muestra esta plantilla: Ilustración 5: Plantilla faces-config.xml. Como se observa en esta plantilla, esta recorre todas las páginas, igualmente en cada página se recorren los botones que son los que tienen una relación con la transición entre la paginas. Por medio de las etiquetas <navigation-rule>, <navigation-case> y la etiqueta <from-action>. Dentro de la etiqueta <navigation-rule> se definen la página de origen, asimismo dentro de cada etiqueta <navigation-case>, se define la página de destino y dentro de esta etiqueta se utiliza <from-action>, donde se define la acción relacionada con esta transición, igualmente si dentro de esta transición se existe una condición, esta es definida por medio de la etiqueta <if>, donde se determina que condición se debe cumplir para poder llevar a cabo la transición entre las páginas. Página 9 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator 6. Transformador V4.0 Para cumplir con la transformación de tablas dentro de las páginas web se agregaron dentro de las plantillas de Acceleo donde se generan las páginas web, se agregó ciclos que recorriera todas las tablas que posee una página web. Igualmente como cada tabla tiene un conjunto de elementos, en la plantilla se recorrieron para generar las columnas de la tabla en particular. En la siguiente imagen se muestra un fragmento de la plantilla de Acceleo para la generación de tablas: Ilustración 6: Plantilla Acceleo Generación Tabla. Como se observa cada tabla está relacionada con una lista de una entidad en específico, igualmente cada columna de esta tabla está relacionada con un atributo de una entidad en específico. Por último se generan los botones que tienen la tabla. Por otro lado dentro de cada ManagedBean se generó un atributo lista del tipo de entidad en particular que soportara el caso de uso. Para la generación de este atributo dentro del caso de uso fue necesario la utilización de servicios java por medio de la clase Utils.java. 7. Transformador V5.0 Dentro del quinto sprint se definió el módulo de entidades, sin embargo debido a la introducción temprana de este elemento dentro del meta-modelo, la plantilla de acceleo para la entidad no tuvo grandes cambios, modificándose únicamente las nuevas restricciones de atributos agregadas al meta-modelo y el cambio en la definición de relación entre entidades, utilizando un Página 10 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator límite inferior y un límite superior en la relación. Por último, para hacer las relaciones bidireccionales se utilizó servicios java dentro de la clase definida Utils.java. Se puede observar en la siguiente ilustración el uso de del servicio java para la generación de las relaciones bidireccionales: Ilustración 7: Invocación método generateRelations. Con el método generateRelations(), se invoca el método en llava para generar las relaciones bidireccionales. En la siguiente ilustración se muestra la definición de este método dentro de la clase Utils.java: Ilustración 8: Fragmento método generateRelations. Este método utiliza un HashMap para determinar las relaciones que tiene una entidad en particular con otras entidades. Por otro lado se genere el CRUD de cada entidad, generando páginas web, managedbean y ejbs para soportar los métodos necesarios para llevar a cabo los ejbs. Estas plantillas se encuentran dentro del paquete javeriana.edu.co.acceleo.webgenerator.m2t.templates. En la siguiente ilustración se muestran las plantillas creadas para cada entidad: Ilustración 9: Plantillas generación CRUD. Página 11 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator Asimismo dentro de las plantillas de ManagedBean y Ejb, se agregó que cada una de estas genera ManagedBean y Ejbs asociados a una entidad en particular. 8. Transformador V6.0 Dentro del sexto y último sprint estaba propuesto el módulo de seguridad. Para llevar a cabo esto, se protegieron los ejb haciendo uso de la anotación @RolesAllowed , en la que una lista de roles que pueden hacer uso de los ejb. Por otro lado para la protección de las páginas web, fue necesario la creación de un plantilla que creara el web.xml, que es el archivo de configuración donde se definen las restricciones de seguridad de las páginas web dentro de la aplicación web, debido a que anteriormente este archivo era prexistente. En la siguiente imagen se muestra un fragmento de la plantilla web-xml en acceleo: Ilustración 10: Fragmento de código web.xml. Como se observa se recorre cada página del meta-modelo y si esta tiene unos roles asociados se generan las restricciones de acceso. El mismo proceso es utilizado para la protección de las páginas que hacen parte del CRUD de una entidad, con la diferencia que en este se protegen un grupo de páginas y no una página en particular. Por otro lado dentro de la herramienta se incluyen los archivos prexistentes que se muestran en la siguiente ilustración: Página 12 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator Ilustración 11: Carpeta de archivos prexistentes. Dentro de los nuevos archivos prexistentes se encuentran: Auth.java: ManagedBean encargada de validar la autenticación y autorización a los recursos web por parte de un rol. Error.xhtml: Pagina cuando la autenticación no se pudo llevar a cabo. Role.java: Entidad que representa la tabla role. User.java: clase que representa en memoria la tabla User. UserFacade: Ejb encargado de gestionar los métodos de negocio de la entidad User. Utils: clase auxiliar que contiene el método para encriptar la contraseña al algoritmo MD5. Adicionalmente se creó una página web que tuviera el menú con los enlaces a las páginas web y las páginas de los CRUD de las entidades, mostrándose únicamente los enlaces si se tienen los permisos necesarios para acceder a las páginas web. En la siguiente ilustración se muestra la plantilla acceleo de la página web menú.xhtml: Ilustración 12: Fragmento plantilla menú. Página 13 Pontificia Universidad Javeriana Manual de instalación y configuración de WAPP Generator Como se observa se recorren todas las páginas del modelo y se generan los enlaces con sus correspondientes restricción de seguridad. Por último la transformación genera un archivo .sql para la inserción de los roles modelados dentro de la tabla rol. A continuación se puede observar la plantilla Acceleo para la creación de este script: Ilustración 13: Plantilla sql. Adicionalmente se crea el rol admin asociado a un usuario, que podrá acceder a todos los recursos de la aplicación web. Vale la pena a clarar que si la aplicación no posee seguridad, se utiliza el archivo web.xml prexistente. Página 14