Download Lista de Tablas - Pontificia Universidad Javeriana

Document related concepts
no text concepts found
Transcript
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
ANEXO 5:
MANUAL DE ADMINISTRACIÓN Y USUARIO DE LA HERRAMIENTA
APPLICATION 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 administración de WAPP Generator
Tabla de Contenidos
Lista de ilustraciones ................................................................................................................. 3
Lista de Tablas .......................................................................................................................... 5
1.
Introducción ...................................................................................................................... 6
1.1
Rol Mantenimiento Meta-Modelo ............................................................................. 6
1.2
Rol Modelador de la Aplicación web ........................................................................ 6
1.3
Rol Mantenimiento de los Transformadores de Java EE 6 ....................................... 6
1.4
Rol desarrollador que completa el código generado ................................................. 6
2.
Requisitos previos ............................................................................................................. 6
3.
Rol Mantenimiento Meta-modelo ..................................................................................... 7
4.
5.
3.1
Diseño del Meta-modelo ........................................................................................... 7
3.2
Características herramienta modelado..................................................................... 10
A.
Archivo webApplication.ecore ................................................................................ 10
B.
Archivo webApplication.ecorediag ......................................................................... 12
Rol Modelador de Aplicaciones Web ............................................................................. 15
4.1
Instancia dinámica de la Meta-clase WebApplication ............................................ 15
4.2
Agregar nuevo elementos al modelo jerárquico ...................................................... 16
4.3
Ventana de Propiedades .......................................................................................... 18
4.4
Transformación modelo a la aplicación Java EE 6 ................................................. 18
4.5
Estructura de la aplicación generada ....................................................................... 20
Rol de Mantenimiento de los Transformadores para Java EE 6 ..................................... 20
5.1
Características herramienta de transformación ....................................................... 21
5.2
Diagrama de invocación (Gestión de plantillas) ..................................................... 21
5.2.1
5.3
6.
Plantilla generate.mtl ....................................................................................... 23
Elementos generales dentro de una plantilla común: .......................................... 24
Rol desarrollador que completa la aplicación generada .................................................. 32
6.1
Crear proyecto en Netbeans 7.4 .............................................................................. 32
6.2
Configuración Unidad de Persistencia. ................................................................... 33
6.3
Configuración de seguridad..................................................................................... 33
Página 2
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Lista de ilustraciones
Ilustración 1: Diseño del meta-modelo. ........................................................................................ 7
Ilustración 2: Archivo webApplication.ecore. ............................................................................ 11
Ilustración 3: Archivo webApplication.ecore. ............................................................................ 11
Ilustración 4 Agregar meta-clase................................................................................................. 12
Ilustración 5: Propiedades meta-clase. ........................................................................................ 12
Ilustración 6: Archivo webApplication.ecorediag....................................................................... 13
Ilustración 7: Archivo webApplication.ecorediag....................................................................... 13
Ilustración 8: Propiedades Atributo............................................................................................. 14
Ilustración 9: Propiedades Relación. ........................................................................................... 14
Ilustración 10: Propiedades Atributo booleano. .......................................................................... 14
Ilustración 11: Creación instancia dinámica. .............................................................................. 15
Ilustración 12: Archivo instancia dinámica. ................................................................................ 16
Ilustración 13: Editor jerárquico para la instancia....................................................................... 16
Ilustración 14: Ejemplo agregando un nuevo elemento a WebApplication. ............................... 17
Ilustración 15: Ejemplo agregar nuevo elemento a una entidad.................................................. 17
Ilustración 16: Ventana propiedad WebApplication. .................................................................. 18
Ilustración 17: Ventana propiedades Entity. ............................................................................... 18
Ilustración 18: Ejecución archivo generate.mtl. .......................................................................... 19
Ilustración 19: Ventana de configuración. .................................................................................. 19
Ilustración 20: Estructura proyecto generado. ............................................................................. 20
Ilustración 21: Diagrama de invocación de plantillas. ................................................................ 21
Ilustración 22: Importar la plantilla entitiesGenerate. ................................................................. 24
Ilustración 23: Invocación método generación de las entidades. ................................................ 24
Ilustración 24: Archivo entitiesGenerate..................................................................................... 25
Ilustración 25: Fragmento plantilla entitiesGenerate. ................................................................. 25
Ilustración 26: Etiquetas if dentro de plantilla. ........................................................................... 26
Ilustración 27: Etiqueta for dentro de la plantilla. ....................................................................... 26
Ilustración 28: Ubicación clase Utils.java. .................................................................................. 27
Ilustración 29: Fragmento clase Utils.java. ................................................................................. 28
Ilustración 30: Ubicación utilsGenerate.mtl. ............................................................................... 28
Ilustración 31: Firma método generateRelations......................................................................... 29
Ilustración 32: Invocación de método generateRelations. ........................................................... 29
Ilustración 33: Archivos prexistentes. ......................................................................................... 30
Página 3
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 34: Estructura del proyecto generado. ....................................................................... 31
Ilustración 35: Arquitectura aplicación generada. ....................................................................... 31
Ilustración 36: Ventana creación proyecto. ................................................................................. 32
Ilustración 37: Unidad de persistencia. ....................................................................................... 33
Ilustración 38: Consola de administración GlassFish. ................................................................ 34
Ilustración 39: Dominios de seguridad........................................................................................ 34
Ilustración 40: Configuración dominio de seguridad. ................................................................. 35
Ilustración 41: Archivo glassfish-web.xml. ................................................................................ 36
Ilustración 42: Despliegue aplicación web. ................................................................................. 36
Ilustración 43: Ubicación insert-roles.sql.................................................................................... 37
Ilustración 44: Archivo insert-roles.sql. ...................................................................................... 37
Ilustración 45: Ejecución aplicación web.................................................................................... 38
Ilustración 46: Página modelada en ejecución. ........................................................................... 38
Ilustración 47: Página detalle de una entidad. ............................................................................. 39
Página 4
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Lista de Tablas
Tabla 1: Descripción meta-clases. ............................................................................................... 10
Tabla 2: Descripción diagrama de invocación con seguridad. .................................................... 22
Tabla 3: Descripción diagrama de invocación plantillas............................................................. 23
Página 5
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
1. Introducción
Este manual pretende documentar la administración de la herramienta Wapp Generator. Teniendo
en cuenta los roles que se encargan de la administración, este manual tendrá una sección dedicada
al rol Mantenimiento del Meta-modelo y al rol Mantenimiento de los Transformadores para Java
EE 6.
Los roles que se involucran durante el uso y mantenimiento del ambiente Wapp Generator son
los siguientes:
1.1 Rol Mantenimiento Meta-Modelo
Este rol se encarga de modificar el meta-modelo del ambiente Wapp Generator. Agregando
elementos al meta-modelo o modificando los elementos existentes. Encargándose principalmente
de la administración del meta-modelo.
1.2 Rol Modelador de la Aplicación web
Este rol actúa principalmente como usuario del ambiente Wapp Generator, para modelar una
aplicación web utilizando el meta-modelo definido previamente. Asimismo esta persona debe
tener en cuenta en sus modelos los cambios que sean realizados a la definición del meta-modelo.
1.3 Rol Mantenimiento de los Transformadores de Java EE 6
Esta rol se encarga de modificar y agregar nuevas plantillas cuando quiera hacer un cambio en la
transformación del modelo a la aplicación en tecnología en Java EE 6. Igualmente esta persona
se encarga de que las plantillas del transformador este completamente adaptada al meta-modelo.
Este rol se encarga de la administración del transformador.
1.4 Rol desarrollador que completa el código generado
Este rol actúa como usuario, debido a que es la encargada de configurar la aplicación web
generada para que pueda se desplegada y ejecutada. Dentro de las tareas de este rol se encuentra
la configuración de la base de datos, la configuración del servidor web y agregar las librerías al
proyecto.
2. Requisitos previos
La herramienta WAPP Generator debe estar instalada. Para instalar la herramienta revise el
Manual de Instalación de la herramienta.
Página 6
Manual de administración de WAPP Generator
Pontificia Universidad Javeriana
3. Rol Mantenimiento Meta-modelo
En la presente sección, mostraremos la forma en que la persona encargada podrá hacer el
mantenimiento y definición del meta-modelo, agregando nuevos elementos como meta-clases,
atributos y relaciones entre las meta-clases.
3.1 Diseño del Meta-modelo
Para la definición del meta-modelo de la aplicación web se identificaron los elementos
característicos en todas las aplicaciones web, independiente de la tecnología. A continuación se
muestra el diseño del meta-modelo:
Ilustración 1: Diseño del meta-modelo.
En la siguiente tabla se muestra la descripción de cada meta-clase:
Página 7
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Meta-Clase
Definición
WebApplication
Es el punto de partida para 
NameAplication:
modelar la aplicación web. En
Nombre de la aplicación.
esta meta-clase se definen las 
Banner: condicional para
características básicas de la
definir si la página tiene
aplicación web.
banner.
Atributos

Security:
condicional
para determinar si la
aplicación
tendrá
seguridad.

cssStyle: define si la
página usara un css.
UseCase
Representa un caso de uso 
Name: nombre del caso
dentro de la aplicación, en la
de uso.
cual
la
meta-clase
WebApplication
tiene
conjunto
metaclases
de
un
UseCases. Estos casos de
usos además contienen un
conjunto de acciones, que son
soportados por este.
Action
Meta-clase que representa 
Name: nombre de la
una acción dentro del meta-
acción.
modelo. Esta meta-clase es 
Condition: se define un
usada
nombre de la condición si
por
la
meta-clase
la
UseCase.
acción
tiene
una
nombre
del
condición.
WebPage
Representa dentro del meta- 
Name:
modelo una página web. La
archivo de la página.
meta-clase

WebApplicationWeb tiene un
conjunto de esta meta-clase.
Title: título de la página
web.

Width: ancho de la página
web.

Height:
altura
de
la
página web.
Página 8
Manual de administración de WAPP Generator
Pontificia Universidad Javeriana
Table
Esta clase es utilizada para
modelar una tabla dentro de
una página web. Siguiendo
este orden de ideas la metaclase WebPage tiene una
colección de la meta-clase
Table. Asimismo la metaclase está relacionada con la
meta-clase Entity, ya que este
elemento es el encargado de
mostrar el valor de los
atributos
de
todas
las
entidades.
Text
Meta-clase
utilizado
para 
determinar que campos de la
Header: Titulo que tendrá
cada columna.
entidad serán mostrados en la
tabla, esta meta-clase está
relacionada con los atributos
de la entidad.
Forms
Esta meta-clase es utilizada 
Id: identificación único
cuando se desea modelar un
del formulario.
formulario, asimismo la metaclase
WebPage
tiene
un
conjunto de Forms.
Element
Meta-clase que sirve para 
Id: identificación único
modelar un elemento dentro
del elemento.
de un formulario. Asimismo 
Value: label relacionado a
como esta meta-clase sirve
los campos de entrada
como
padre
para
las
metaclases:

RadioButton.

ComboBox.

TextField.

DateField.

CheckBox.
Página 9
Manual de administración de WAPP Generator
Pontificia Universidad Javeriana
Cada
está
Element
relacionado con un atributo de
la entidad.
ButtonLink
ButtonLink permite modelar 
Id: identificación único
un botón dentro del meta-
del boton.
ButtonLink 
modelo.
asimismo permite definir una
Value:
texto
que
se
mostrara en el botón.
transición de una página a
otra.
Permite
Transition
modelar
una
transición de una página a
otra. Está relacionada con la
meta-clase
ButtonLink,
WebPage y Action.
Action
Permite modelar una acción 
Name: Nombre de la
que es llevada a cabo por un
aplicación.
botón en medio de una 
Condition: nombre de una
transición entre páginas. Esta
condición si la acción
meta-clase
posee alguna condición.
se
encuentra
relacionada con la meta-clase
UseCase, debido a que este
último
tiene
definido un
conjunto de acciones.
Permite modelar un rol dentro 
Role
Name: nombre del rol.
de la aplicación web.
Tabla 1: Descripción meta-clases.
3.2 Características herramienta modelado
La
herramienta
Wapp
Generator
cuenta
con
el
proyecto
javeriana.edu.co.emf.webgenerator.model, en este proyecto se define las reglas del meta-modelo
y se modelan las aplicaciones, por medio Eclipse Modeling Framework (EMF).
A.
Archivo webApplication.ecore
El
proyecto
javeriana.edu.co.emf.webgenerator.model,
cuenta
con
el
archivo
webApplication.ecore. Por medio de este archivo se define los elementos que componen el metamodelo de la aplicación web. En la siguiente imagen se muestra la carpeta model:
Página 10
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 2: Archivo webApplication.ecore.
El archivo webApplication.ecore muestra de forma jerárquica la definición del meta-modelo. En
la siguiente figura se muestra la definición meta-modelo de forma jerárquica:
Ilustración 3: Archivo webApplication.ecore.
Por medio de este archivo se pueden agregar nuevos elementos como meta-clases, nuevos
atributos a una meta-clase, relaciones, etc. Al mostrar el meta-modelo de forma jerárquica al
adicionar se debe posicionar sobre el elemento y elegir el nuevo tipo de hijo que se desea colocar.
En la siguiente imagen se ve un ejemplo cuando se desea agregar una nueva meta-clase al metamodelo:
Página 11
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 4 Agregar meta-clase.
Como se observa para agregar una nueva meta-clase al meta-modelo, se debe posicionar en el
paquete y enseguida se da click derecho, se elige la opción new child, finalmente se elige
EClass.
Uno de las herramientas más importantes durante la definición del meta-modelo es la ventana de
propiedades, ya que aquí podemos modificar y dar valores a las propiedades de una meta-clase.
A continuación se muestra la ventana de propiedades de la meta-clase WebApplication:
Ilustración 5: Propiedades meta-clase.
En la figura anterior se muestra las propiedades de la meta-clase entre las que están: determinar
si es una clase abstracta, determinar si es una interfaz, el nombre de la meta-clase, etc.
B.
Archivo webApplication.ecorediag
El archivo webApplication.ecorediag, este es una representación gráfica del archivo
webApplication.ecore. En este archivo se muestra el diagrama el meta-modelo, haciendo esta vista
Página 12
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
más intuitiva para la definición del meta-modelo. Este archivo se encuentra en la carpeta model
dentro del proyecto javeriana.edu.co.emf.webgenerator.model, esta ubicación se muestra en la
siguiente figura:
Ilustración 6: Archivo webApplication.ecorediag.
Este archivo además cuenta con una paleta que permite arrastrar los elementos como meta-clase,
atributos, relaciones, etc., haciendo más intuitivo y natural el proceso de modelaje. A continuación
se muestra la ilustración del archivo .ecorediag:
Ilustración 7: Archivo webApplication.ecorediag.
Al lado izquierdo se observa la paleta con la que cuenta el editor del diagrama, donde se observa
los elementos comunes cuando se define el meta-modelo. Entre estos se encuentra, EClass,
EAttribute, EReference, EOperation, EEnum, entre otros.
Todos los cambios efectuados dentro del archivo webApplication.ecorediag, se verán reflejados
en el archivo webApplication.ecore.
Página 13
Manual de administración de WAPP Generator
Pontificia Universidad Javeriana
Al igual que en archivo .ecore, la ventana de propiedades es útil para definir los valores a un
elemento en particular. En la siguiente figura se muestra las propiedades de un atributo:
Ilustración 8: Propiedades Atributo.
Para el caso del ejemplo anterior, el atributo es el nombre de la aplicación web, dando el nombre,
la cardinalidad y el tipo del atributo.
A continuación veremos las propiedades de una relación en donde es preciso determinar la
cardinalidad:
Ilustración 9: Propiedades Relación.
Para las propiedades de una relación se encuentra el nombre de la relación, el límite inferior de la
relación, el límite superior de la relación y si la relación es de composición.
Ahora veremos las propiedades de un atributo pero cuyo tipo es un booleano:
Ilustración 10: Propiedades Atributo booleano.
Página 14
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
En este caso se esta definiendo un atributo llamado seguridad dándole como tipo EBoolean,
donde este es la representación del tipo booleano en ecore al igual que EString, EInt, etc.
4. Rol Modelador de Aplicaciones Web
El rol de modelador de aplicaciones web es el encargado de modelar una aplicación web
particular, haciendo uso del meta-modelo definido por el Rol Mantenimiento Meta-modelo.
4.1 Instancia dinámica de la Meta-clase WebApplication
Para modelar una aplicación web, es necesario crear una instancia dinámica de la meta-clase
WebApplication. A continuación se muestra como crear esta instancia dinámica:
Ilustración 11: Creación instancia dinámica.
Una vez se elige esta opción se da un nombre a la instancia dinámica para finalmente se crea un
archivo con el nombre propuesto y con extensión .xmi. En la ilustración 12 se muestra un ejemplo
de una instancia dinámica con nombre WebApplication1.xmi:
Página 15
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 12: Archivo instancia dinámica.
Una vez creada editamos este haciendo uso de un editor jerárquico del modelo de aplicación. En
la ilustración 13 se muestra el editor jerárquico:
Ilustración 13: Editor jerárquico para la instancia.
4.2 Agregar nuevo elementos al modelo jerárquico
Al ser un editor jerárquico, el nodo padre para poder modelar la aplicación web es una instancia
de la meta-clase WebApplication. Para agregar un nuevo elemento a la aplicación se da click
derecho sobre el nodo al que se le quiere agregar un nuevo elemento, para el primer caso se le
agrega un nuevo elemento a la instancia de la meta-clase WebApplication, esta tiene como opción
agregar una nueva instancia de la meta-clase WebPage, Role, Entity o UseCase. En la ilustración
14 se muestra un ejemplo para agregar un nuevo elemento a la instancia de la meta-clase
WebApplication:
Página 16
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 14: Ejemplo agregando un nuevo elemento a WebApplication.
Una vez elegido el nuevo elemento que se desea agregar al modelo de la aplicación este aparecerá
en el modelo jerárquico.
En la ilustración 15 se muestra el ejemplo para agregar un nuevo elemento a una instancia de una
entidad:
Ilustración 15: Ejemplo agregar nuevo elemento a una entidad.
Como se observa debido a que una entidad puede tener por un lado un conjunto de atributos o un
conjunto de relaciones con otras entidades.
Página 17
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
4.3 Ventana de Propiedades
Para modificar los atributos que tendrá cada instancia en particular se utiliza la ventana de las
propiedades donde se observa los atributos que tiene cada meta-clase. Por ejemplo la meta-clase
WebApplication tiene como atributos, NameApplication, Security, Banner, CssStyle, HomePage.
En la ilustración 16 se muestra un ejemplo de la ventana de las propiedades de la meta-clase
WebApplication:
Ilustración 16: Ventana propiedad WebApplication.
Para este caso particular se modela la aplicación teniendo un banner, con estilo css, página de
inicio que es llamada usuario, nombre de la aplicación y la aplicación tiene seguridad.
Ahora se muestra la ventana de propiedades de una entidad:
Ilustración 17: Ventana propiedades Entity.
La meta-clase Entity tiene como atributos NameEntity que para este ejemplo es Customer¸ y la
lista de Roles que tienen permitido utilizar el CRUD de estas Entidades, para este caso son los
roles administrador¸ gerente y empleado.
4.4 Transformación modelo a la aplicación Java EE 6
Una vez modelada la aplicación web, por parte del rol de modelador de la aplicación web a la
aplicación en Java EE 6. Para generar el proyecto se ejecuta el archivo generate.mtl, que se
encuentra en el proyecto javeriana.edu.co.acceleo.webgenerator.m2t, una vez ubicado este
archivo se da click derecho y se elige la opción Run Configuration como se muestra en la
ilustración 18:
Página 18
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 18: Ejecución archivo generate.mtl.
Una vez elegido esta opción aparecerá la venta de configuración de Acceleo. En esta ventana se
elige el modelo que va a ser transformado a una aplicación web en tecnología Java EE 6. En la
ilustración 19 se muestra la ventana de configuración:
Ilustración 19: Ventana de configuración.
Página 19
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
En la parte subrayada con color anaranjado se elige el modelo de la aplicación web que se desea
generar.
4.5 Estructura de la aplicación generada
Una vez transformado el modelo a la aplicación Java EE 6, este es generado dentro de la carpeta
src-gen en el proyecto javeriana.edu.co.acceleo.webgenerator.m2t, la estructura del proyecto
generado se muestra en la ilustración 20:
Ilustración 20: Estructura proyecto generado.
El nombre que toma la aplicación es el nombre que se le dio a la meta-clase WebApplication,
dentro de la src/ejb se encuentran los ejbs de la aplicación, que son tomados de los casos de uso
modelados y de los CRUD de las entidades. Por otro lado dentro de la carpeta jpa/entities se
encuentra las entidades modeladas de la aplicación web. Dentro de la carpeta web se encuentran
las páginas modeladas y en la carpeta Pages se encuentran las carpetas de cada entidad modelada,
que contienen las páginas necesarias para poder llevar a cabo el CRUD de estas. Por ultimo en la
carpeta WEB-INF se encuentra el archivo web.xml y el archivo faces-config.xml.
5. Rol de Mantenimiento de los Transformadores para Java EE 6
En la presente sección, mostraremos la forma en que la persona encargada del mantenimiento de
las plantillas en Acceleo para la transformación del modelo de la aplicación web a la aplicación
en Java EE 6. Teniendo la opción de crear nuevas plantillas, agregar nuevas características a las
Página 20
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
plantillas y por otro lado transformar los nuevos elementos que sean adicionados al actual metamodelo.
El proyecto que transforma el modelo a una aplicación web en Java EE 6, en la herramienta Wapp
Generator es llamado javeriana.edu.co.acceleo.webgenerator.m2t. A continuación se muestran
las principales características de este proyecto.
5.1 Características herramienta de transformación
En esta sección nombraremos los elementos más relevantes para la transformación del modelo a
la aplicación en tecnología Java EE 6:
5.2 Diagrama de invocación (Gestión de plantillas)
En la ilustración 21 se muestra en el diagrama de invocación de plantillas iniciando con la plantilla
generate.mtl, que actúa como main de la herramienta Wapp Generator:
Ilustración 21: Diagrama de invocación de plantillas.
Página 21
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Como se observa en la anterior imagen, el flujo inicia con el modulo generate.mtl, el cual
comienza consultando el atributo security del modelo de la aplicación, si este atributo se encuentra
en verdadero se invocaran las siguientes plantillas que serán necesarias para la creación de una
aplicación web con seguridad en Java EE 6:
Plantilla
Descripción
Generate Menu
Página web que contiene los enlaces a las
distintas páginas teniendo en cuenta las
restricciones de acceso de cada página.
Página web para el ingreso a la aplicación y
Generate Security Files
página de error, entidades Role y User, y por
ultimo managed bean Auth.java.
Generación del archivo web.xml, teniendo en
Generate web file
cuenta
las
restricciones
de
seguridad
modeladas.
Generación de script para la inserción de los
Generate SQL file
roles en la tabla Role.
Generate page with template:
Generación de las páginas web modeladas con
un template.
Generate template
Generación del Facelet que será utilizada por
las páginas web.
Tabla 2: Descripción diagrama de invocación con seguridad.
Si por el contrario, la aplicación web modelada no cuenta con módulo de seguridad, el archivo
web.xml no es generado si no es copiado al proyecto generado. Enseguida el módulo generate.mtl
verifica si el valor del atributo cssStyle del modelo de la aplicación web es verdadero, para generar
las paginas utilizando un template y asimismo generar el facelet que utilizaran estas páginas web.
Si por el contrario el atributo cssStyle es falso se generan páginas que no utilizan un template.
Una vez verificados estos atributos del modelo, el archivo generate.mtl, prosigue a invocar las
siguientes plantillas:
Página 22
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Plantillas
Descripción
Generate entities
Se encarga de generar los archivos .java
asociados a la entidad modelada.
Generate managedBeans
Encargada de generar los managed bean para
soportar los casos de uso.
Generate ejbs
Encargada de generar los ejbs asociados a los
casos de uso, cabe aclarar que la generación
de estos métodos no es completa y por lo tanto
deben
ser
implementados
por
los
desarrolladores.
Generate New Page CRUD
Genera las páginas web para la creación de las
entidades modeladas.
Generate View Page CRUD
Genera las páginas web para ver los detalles
de las entidades modeladas.
Generate Edit Page CRUD
Genera las páginas que permite la edición de
las entidades modeladas.
Generate List Page CRUD
Genera la lista
que permite ver las
colecciones instanciadas de las entidades
modeladas.
Tabla 3: Descripción diagrama de invocación plantillas.
5.2.1
Plantilla generate.mtl
El archivo generate.mtl, es el encargado de llamar a las otras plantillas que serán utilizadas
durante la transformación. Dentro de este archivo se agregaran las invocaciones a las nuevas
plantillas que sean agregadas. Para agregar una nueva plantilla se debe importar la plantilla, por
ejemplo a continuación se muestra la instrucción para importar la plantilla que genera las
entidades modeladas:
Página 23
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 22: Importar la plantilla entitiesGenerate.
Una vez importada la plantilla se invoca el método para la generación del archivo. Siguiendo con
el ejemplo anterior, las entidades se generan en tecnología Java EE 6 invocando el método. En la
siguiente imagen se muestra la invocación del método:
Ilustración 23: Invocación método generación de las entidades.
Este método recibe como parámetro el modelo de una aplicación web en particular para generar
todas las entidades modeladas dentro de esta entidad.
5.3 Elementos generales dentro de una plantilla común:
A continuación veremos la plantilla entitiesGenerate.mtl, utilizada para la generación de
entidades. Describiremos los elementos utilizados para transformar el meta-modelo en la
aplicación Java EE 6.
Página 24
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 24: Archivo entitiesGenerate.
A.
Instrucciones module y template
Dos de las etiquetas con la que es necesario empezar una plantilla en Acceleo serán mostradas
utilizando como ejemplo la plantilla entitiesGenerate.mtl.
Ilustración 25: Fragmento plantilla entitiesGenerate.
Con la etiqueta [module], se definen el nombre de la plantilla, así como el meta-modelo con el
cual trabajara la plantilla por medio de la instrucción 'http://javeriana.edu.co/webApplication'
Por otro lado la etiqueta [template] define el nombre del método de la plantilla
entitiesGenerate.mtl, estableciendo el nombre del método de la plantilla y el parámetro para llevar
a cabo el método, en este caso el parámetro es una instancia de la meta-clase webApplication.
B.
Instrucciones for, if y else
Acceleo posee una implementación del lenguaje OCL para utilizar las diferentes instrucciones de
control para poder transformar el modelo de una aplicación web a código en tecnología Java EE
6, cuenta con las etiquetas [for], utilizada al igual que lo hace un ciclo para iterar sobre una
colección, la etiqueta [if], representa una instrucción típica de if, en donde se eligen entre dos
Página 25
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
caminos posibles y por último la etiqueta [else], utilizada para definir el camino alternativo a una
etiqueta [if].
Comenzaremos con la etiqueta [if] analizándola mediante la plantilla de Acceleo
entitesGenerate.mtl. En la siguiente imagen veremos cómo se utiliza esta etiqueta dentro de la
plantilla:
Ilustración 26: Etiquetas if dentro de plantilla.
En el anterior fragmento anterior se utiliza la etiqueta para evaluar si las restricciones de tamaño
de un atributo de una entidad son mayor a 0. Por otro lado si no se cumple esta condición por
medio de la etiqueta [elseif], se evalúa si se cumple otra condición, en este caso se evalúa si la
restricción mínima de tamaño es mayor a 0. Esta etiqueta es finalizada con la etiqueta [/if].
Ahora entraremos a analizar la etiqueta [for] dentro de una plantilla de Acceleo, para recorrer las
colecciones que posee el modelo. A continuación se muestra una figura ilustrando el uso de la
etiqueta [for]:
Ilustración 27: Etiqueta for dentro de la plantilla.
En la anterior figura la etiqueta [for] es utilizada para recorrer todas las entidades modeladas
dentro de la aplicación web. Esta etiqueta está compuesta por el tipo de iterador y por otro lado
la colección que será recorrida, para este caso el tipo del iterador es Entity y la colección son las
entidades modeladas, accediendo por medio de la instrucción aWebApplication.entities. La
etiqueta [for] es delimitada por la etiqueta [/for].
C.
Instrucción file
La etiqueta [file], es utilizada para la creación de un nuevo archivo. Como se puede observar en
la ilustración 27, la etiqueta [file] toma como primer parámetro la ubicación y el nombre del
Página 26
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
nuevo archivo que va a ser generado, en el ejemplo anterior cada vez que se itera dentro de la
colección se crea un nuevo archivo con el nombre de la entidad modelada, accediendo a este por
medio de la instrucción aEntity.nameEntity y con extensión .java. Finalmente esta etiqueta está
delimitada por la etiqueta [/file], cuyo cuerpo representa el contenido que tendrá las entidades
generadas.
D.
Utilización servicios Java
Debido a que el lenguaje OCL no permite definir estructuras de datos y algoritmos complejos, es
necesario utilizar un lenguaje más completo. Para poder llevar a cabo esto, Acceleo permite
integrar OCL con servicios Java.
Para poder tener la integración con servicios Java en primer lugar se define la clase en Java que
se llevara a cabo los algoritmos complejos. Para la herramienta Wapp Generator se utilizó la clase
Utils.java, ubicada en el paquete javeriana.edu.co.acceleo.util, como se ve en la ilustración 28:
Ilustración 28: Ubicación clase Utils.java.
Dentro de la clase Utils.java se encuentran definidos estructuras de datos como mapas que serán
necesarios para la generación de código. En la ilustración 29 se muestra el fragmento del código
de la clase Utils.java:
Página 27
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 29: Fragmento clase Utils.java.
En la Ilustración 29 se muestra el algoritmo para generar las relaciones bidireccionales de una
entidad particular. Dentro de este método se utilización una HashMap para generar las relaciones
entre entidades, el texto Java define todos los atributos de relación de la entidad incluyendo para
cada atributo de relación la anotación @ManyToOne o @OneToOne según corresponda.
Finalmente este método retorna un String que contiene las relaciones que deben ser generadas.
Una vez definido los métodos necesarios se crea una archivo .mtl. La herramienta Wapp
Generator posee el utilsGenerate.mtl, que es el encargado de la integración entre OCL y los
servicios Java. En la Ilustración 30 se muestra la ubicación de esta clase:
Ilustración 30: Ubicación utilsGenerate.mtl.
En este archivo se definen los métodos que serán invocados desde cualquier plantilla. Dentro de
la definición se encuentra el nombre del método, los parámetros y el tipo de retorno. En la
Ilustración 31 se muestra la firma del método generateRelations:
Página 28
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 31: Firma método generateRelations.
Una vez importado el archivo utilsGenerate.mtl en la plantilla que se desea utilizar los métodos,
y se invocan teniendo en cuenta la firma y los parámetros necesarios para la invocación. En la
Ilustración 32 se muestra la invocación del método generateRelations, que recibe como parámetro
el nombre de la entidad y retorna las relaciones que tiene esa Entidad con las otras entidades,
dentro de la plantilla entitiesGenerate.mtl:
Ilustración 32: Invocación de método generateRelations.
Invocando este método se genera las relaciones para una entidad determinada.
E.
Uso de archivos prexistentes en el transformador
Debido a que algunos archivos no cambian y son estándar para todas las aplicaciones web en Java
EE 6, no era necesario su generación, por lo que se definieron como archivos prexistentes o de
soporte y son incluidos dentro del proyecto de transformación. La ilustración 33 muestra los
archivos prexistentes del ambiente Wapp Generator:
Página 29
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 33: Archivos prexistentes.
A continuación se describe estos archivos prexistentes son:

Auth.java: ManagedBean utilizado cuando la aplicación web tienen seguridad.

cssLayout.css: Pagina de estilo para poder definir el template cuando la aplicación
web tiene el atributo cssStyle en verdadero.

Erro.xhtml: página de error cuando la autenticación no se llevó a cabo correctamente.

Login.xhtml: Pagina de autenticación cuando la aplicación web tiene seguridad.

Role.java: Entidad para persistir los roles que tendrá la aplicación web.

User.java: Entidad para persistir los usuarios que podrán autenticarse en la aplicación
web.

UserFacade: Ejb de la entidad User para poder llevar a cabo los métodos de negocio
de la entidad.

Utils.java: Clase de soporte que contiene para encriptar la contraseña durante la
autenticación.
F.
Estructura de la aplicación Java EE 6 generada
Una vez transformado el modelo a la aplicación Java EE 6, este es generado dentro de la carpeta
src-gen en el proyecto javeriana.edu.co.acceleo.webgenerator.m2t, la estructura del proyecto
generado se muestra en la ilustración 34:
Página 30
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 34: Estructura del proyecto generado.
El nombre que toma la aplicación es el nombre que se le dio a la meta-clase WebApplication,
dentro de la src/ejb se encuentran los ejbs de la aplicación, que son tomados de los casos de uso
modelados y de los CRUD de las entidades. Por otro lado dentro de la carpeta jpa/entities se
encuentra las entidades modeladas de la aplicación web. Dentro de la carpeta web se encuentran
las páginas modeladas y en la carpeta Pages se encuentran las carpetas de cada entidad modelada,
que contienen las páginas necesarias para poder llevar a cabo el CRUD de estas. Por ultimo en la
carpeta WEB-INF se encuentra el archivo web.xml y el archivo faces-config.xml.
5.3.1.6.1
Arquitectura aplicación web generada
En la ilustración 35 se muestra la arquitectura de la aplicación generada por el ambiente Wapp
Generator:
Ilustración 35: Arquitectura aplicación generada.
Página 31
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Por un lado se encuentra el contenedor web, en donde se encuentra las páginas web con tecnología
JSF. En la capa de negocio se encuentra los Enterprise Java Beans, que contienen la lógica de
negocio de la aplicación, que será utilizada por la capa Web, para poder llevar a cabo las
solicitudes del cliente. Por último la capa de negocio se comunica con la capa de datos, donde
estará la base de datos que almacena la información de la aplicación web.
6. Rol desarrollador que completa la aplicación generada
Una vez generada la aplicación web el desarrollador debe completar los siguientes pasos para
poder desplegar la aplicación y ejecutarla:
6.1 Crear proyecto en Netbeans 7.4
El IDE elegido para el despliegue de la aplicación fue Netbeans en la versión 7.4. Para utilizar el
código generado se da la opción de crear nuevo proyecto web con recursos existentes. Una vez
elegida esta opción se coloca la ubicación del archivo generado, la ubicación del nuevo proyecto,
se elige el servidor de aplicación, para efectos de este manual se utilizó GlassFish en la versión
4.0 y la versión Java EE 6. En la ilustración 33 se muestra la opción para crear un archivo con
recursos existentes:
Ilustración 36: Ventana creación proyecto.
Una vez creada la aplicación el IDE se encarga de crear los archivos de configuración para ser
utilizado en Netbeans.
Página 32
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Debido a que la aplicación utiliza etiquetas PrimeFaces en los elementos de la aplicación por lo
que es necesario agregar la librería de PrimeFaces en el proyecto antes de desplegar este, debido
a que aparecerán errores ya que estas etiquetas no son reconocidas hasta que la librería sea
importada.
6.2 Configuración Unidad de Persistencia.
Por otro lado cuando se hace uso de la capa de acceso a datos, se debe ser configurada la unidad
de persistencia, especificando la conexión a la base de datos, dejando como nombre de la unidad
de persistencia el nombre de la aplicación modelada más las letras PU.
En la ilustración 37 se muestra una unidad de persistencia de una aplicación web con nombre
Sprint61:
Ilustración 37: Unidad de persistencia.
6.3 Configuración de seguridad
Para la parte de seguridad se debe configurar el dominio de seguridad del servidor de aplicaciones.
En este caso se muestra la configuración para el servidor Glassfish 4.0, para la configuración de
otro servidor revise el manual del servidor. En primer lugar entramos a la consola de
administración y se elige configuración de servidor como se muestra en la ilustración 38:
Página 33
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 38: Consola de administración GlassFish.
Elegimos la pestaña de seguridad y elegimos la carpeta dominios como se muestra en la
ilustración 39:
Ilustración 39: Dominios de seguridad.
Una vez acá observaremos los dominios de seguridad por defecto de la aplicación y los dominios
de seguridad que se hayan definido anteriormente. Debemos crear un nuevo dominio de seguridad
por lo elegimos la opción nuevo dominio.
Elegida esta opción aparecerá la siguiente ventana donde se configura el nuevo dominio de
seguridad:
Página 34
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 40: Configuración dominio de seguridad.
Como nombre del nuevo dominio se le da el nombre de la aplicación web modelada, enseguida
como nombre de clase se elige JDBCRealm, en contexto JAAS se le da un nombre, en JNDI le
damos el JNDI de la fuente de la base de datos.
Por otro lado en tabla de usuarios se da el nombre USERS, en columna de nombres de usuario
colocamos LOGIN, en columna de contraseñas colocamos PASSWORD, en tabla de grupos
colocamos ROLE_USERS, en columna de nombres de usuario de la tabla de grupos colocamos
USERS_LOGIN, en columna de nombres de grupo se coloca ROLES_NAME, en algoritmo de
cifrado y algoritmo de resumen se coloca MD5 y finalmente en juego de caracteres se coloca
UTF-8 y guardamos el dominio.
Una vez configurado el nuevo dominio de seguridad se crea el archivo de configuración para el
servidor, en este caso particular se crea el archivo de configuración para GlassFish, una vez creado
este se mostraran los roles que se crearon durante la etapa de diseño de la aplicación web. En la
ilustración 38 se muestra el ejemplo de un archivo de configuración para GlassFish:
Página 35
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 41: Archivo glassfish-web.xml.
Como se observa, en la pestaña Security del archivo glassfish-web-xml, se ven los roles que fueron
modelados en la aplicación web.
Por ultimo desplegamos la aplicación en el servidor, para este caso es GlassFish versión 4.0, como
se muestra en la siguiente imagen:
Ilustración 42: Despliegue aplicación web.
Página 36
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Por otro lado el ambiente Wapp Generator crea un script para almacenar la base de datos los roles
que fueron modelados, ingresando en la tabla Role de la base de datos, igualmente para probar la
todos los recursos de la aplicación web se crea un rol llamado admin, que tiene permisos para
trabajar sobre todos los recursos de la aplicación web que se encuentran protegidos, asimismo se
crea un usuario con login y password useradmin al que se le es asignado el rol de admin. Este
archivo se encuentra en la carpeta resources de la aplicación web generada con el nombre insertroles.sql. En la ilustración 43 se muestra la ubicación de este archivo:
Ilustración 43: Ubicación insert-roles.sql.
Dentro del archivo sql se encuentra la sentencias para la inserción en la tabla Role. A continuación
se muestra el contenido del archivo insert-roles.sql:
Ilustración 44: Archivo insert-roles.sql.
Este script es ejecutado sobre la base de datos de la aplicación para poder insertar los roles.
Una vez desplegada la aplicación y ejecutado el script de inserción en la base de datos,
procedemos a ejecutar la aplicación como se muestra en la siguiente ilustración:
Página 37
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Ilustración 45: Ejecución aplicación web.
En la siguiente imagen se ve una página web modelada en ejecución:
Ilustración 46: Página modelada en ejecución.
Página 38
Pontificia Universidad Javeriana
Manual de administración de WAPP Generator
Esta página en particular fue modelada dentro de una aplicación web con estilo y banner y está
compuesta por un formulario con campos y una tabla.
Por otro lado en la imagen se observa una página generada a partir del CRUD de una entidad:
Ilustración 47: Página detalle de una entidad.
Esta entidad llamada Customer tiene un conjunto de atributos que describe a un cliente, asimismo
tiene una relación uno a uno con la entidad Adress y una relación uno a muchos con la entidad
Car, que es vista en la ilustración como una lista.
Página 39