2. V ia f ir m a H a n u m a n
¿Qué es viafirma Hanuman?
Viafirma Hanuman es una plataforma de desarrollo que permite la generación de código basado en la filosofía
desarrollo Dirigido por Modelo (MDA), permitiendo la generación de proyectos completamente funcionales en muy
poco tiempo desde un modelo previamente definido e independiente de la plataforma.
Viafirma Hanuman es un nuevo generador de código que hereda las ideás del antiguo generador de código "El
Mono" usado en Viavansi desde el 2004, pero que supone a su vez una completa reimplementación haciendo uso de
las últimas tecnologías disponibles en la generación de código y modelado.
3. V ia f ir m a H a n u m a n
Principales Funciones
Model Driven Architecture. Viafirma Hanuman permite la definición del modelo, arquitectura y comportamiento
del proyecto desde un lenguaje de definición de dominio. Este lenguaje de dominio que define el modelo del
proyecto puede a su vez ser editado desde un diagrama UML simplificado e importado desde un modelo de datos
SQL ya existente o un proyecto en Enterprise Architect.
JaveEE6. Viafirma Hanuman permite la generación de proyectos JavaEE6 que hacen uso de (JPA2, JSF2, CDI,...),
siendo compatible con cualquier servidor JavaEE6 Web Profile ademas de con Tomcat 7.
Extensible. Viafirma Hanuman ofrece un mecanismo sencillo de extensión que permite la generación de diferentes
tipos de proyectos (en función del cliente, funcionalidades requeridas, etc..) y tambien en función de la
arquitectura deseada. En este sentido, ademas de soportar JavaEE6 (framework V6), también soporta framework
v1,v2,v3,v4 y a corto plazo generación de proyectos para iPhone, Android y Windows Phone.
Independencia. Viafirma Hanuman genera código totalmente independiente que puede ser editado y evolucionado
sin necesidad de hacer uso de Viafirma Hanuman.
4. V ia f ir m a H a n u m a n
Ficha de características Viafirma Hanuman
• Mmodel/mtmodel/mgmodel Son las extensiones de utiliza el lenguaje de definición de dominio
Lenguajes de •SQL El sistema permite importar modelos sql ya existente para la generación de mmodels sobre los que
definición posteriormente trabajar
•Enterprise Architect. El sistema permite la importación de .XMI con la definición UML del proyecto
•Eclipse Web Tools 3.7
Requisitos •Java 6
• Generación de código en remoto, lo que permite una fácil actualización del comportamiento.
• Plugin Eclipse para la interactuación con el motor de generación.
Arquitectura
• Mecanismo de extensión para incluir nuevos formatos de generación
• Uso de plantillas estándar para la generación
5. V ia f ir m a H a n u m a n
Un poco de historia de “El Mono” en Viavansi
Historia
modelo
Conjunto de script para la generación de acceso a JDBC básico.
Framework V1 Marco de trabajo: JSP, JDBC, Struts
(2004-2006), Proyectos mas representativos: Pluton, Antigua página web de la consejería de Comercio
turismo y deporte de la Junta de Andalucía, Camara de Cuentas
Framework V2 Desarrollo específico utilizado sólo en el proyecto Marisma 1 a solicitud de unos de nuestros
(2006-2007) clientes y descartado como framework de trabajo general
Marco de trabajo:Java4, Tomcat5, iBatis, Myfaces JSF,svn
Herramienta de escritorio ejecutable desde JNLP para la generación de código.
Marco de trabajo: Myfaces JSF, JDBC, CVS
Framework V3
Cambios principales: Supuso el abandono de Struts en favor de JSF.
(2006-2008) Proyectos más representativos: Tramitón (nuestro primer producto para la tramitación
online), Viafirma v1, CRIHJA, Genista, Sancionador, Forestales...
Framework V4(2009-2011) Marco de trabajo: Jboss Seam 2, Sun JSF 1.1, Richfaces, Maven 2, Hudson
Proyectos mas representativos: Oficina Virtual, Viafirma Inbox, Augias
Fue abandonado antes de sar a ser utilizado. (EPIC FAIL!!)
Framework V5
(FAIL)
Framework V6 Marco de trabajo: Java6, Java EE6 Web profile
(2011-*) Proyectos más representativos: Viafirma Ra, ViaTravelCloud
6. V ia f ir m a H a n u m a n Funcionamiento
Generación de código desde modelo
Modelado Funcionalidades
Lenguaje propio Editor visual integrado en Eclipse
UML simplificado Actualización automática
Importación desde SQL Control de versionado de modelos
Importación desde Enterprise Architect
7. V ia f ir m a H a n u m a n Lenguaje
Lenguaje Mmodel
Permite definir
•Entidades • Relaciones y sus nombres (1-N, N-M)
•Atributos y sus tipos de dato • Módulos
•Label, comentarios, tamaños de campos
8. V ia f ir m a H a n u m a n UML simplificado
Dispositivos Móviles
Permite:
•Definición de entidades
•Definición relaciones y sus nombres
– 1-N
– N-M
9. V ia f ir m a H a n u m a n Importación
Importación desde Enterprise Architect
Importación desde SQL
CREATE TABLE TIPOCONTRATO
(
ID_TIPOCONTRATO NUMBER NOT NULL,
NOMBRE VARCHAR2(255 BYTE) NOT NULL,
DESCRIPCION VARCHAR2(255 BYTE) NOT NULL,
EMPLEADO NUMBER NOT NULL);
} Importación SQL Importación SQL
ALTER TABLE TIPOCONTRATO ADD (
CONSTRAINT PK_TIPOCONTRATO PRIMARY KEY (ID_TIPOCONTRATO) Table User → entity User{}
USING INDEX Table → Emtity
PCTFREE 10
INITRANS 2 Columna name → name:String label:'Nombre del
MAXTRANS 255 Colum → attribute usuario'
STORAGE (
INITIAL 64K ID_USER Primary Key → no aparece en el modelo,
MINEXTENTS 1 PK (formato id_tabla) → id valor por defecto
MAXEXTENTS 2147483645 por defecto
PCTINCREASE 0
)); ID_UR Primary Key → idUr:PK seccuence:'...'
PK (cualquier formato) →
id entity
10. V ia f ir m a H a n u m a n Versionado SQL
Generación automática de SQL de creación y upgrade
Funcionamiento del versionado:
•Cada modelo tiene un número de versión
•Se mantiene un histórico de la evolución de los modelos
•Generación automática de sentencias SQL DDL para cada versión
•Generación automática de script de migración entre versiones
11. V ia f ir m a H a n u m a n Interfaz
Plugin Viafirma Hanuman
Funcionamiento del versionado:
•Permite elegir la versión del generador a
utilizar
•Indicar el nombre y paquete del proyecto
•Seleccionar tipos de generación (en
función del cliente)
• Seleccionar opciones a incluir en el
proyecto (integración con WS, Viafirma,
REST,...)
Instalación desde
http://hanuman.viafirma.com/site
13. V ia f ir m a H a n u m a n
Objetivos y criterios
Evitar el uso de session
Calidad de código y Test Unitarios
Actualización de librerías y tecnologías
Reescritura completa de código obsoleto
Simpleza
Soporte para Internacionalización
Adaptación a dispositivos Móviles
14. V ia f ir m a H a n u m a n
Técnologías
Primefaces 3.X
Jquery UI: Theme-Roller
Java EE6 (JSF 2.x,CDI,...)
Prettyfaces
15. V ia f ir m a H a n u m a n
Tags Viavansi 2.0
o v:checkbox o v:inputSecret
o v:commandButton o v:inputText
o v:commandLink o v:inputTextarea
o v:form o v:link
o v:inputDate o v:radio
o v:inputImage o v:select
o v:inputNumber o v:selectItem
16. V ia f ir m a H a n u m a n
Ejemplos: /samples
o sample-components o ample-icons
o sample-database o sample-positioning
o sample-html-blocks
17. V ia f ir m a H a n u m a n
Ejemplos: /samples
o sample-components o ample-icons
o sample-database o sample-positioning
o sample-html-blocks
18. V ia f ir m a H a n u m a n
Theme aire
• Menú de navegación con desplegables
• Buscador general
• Pestañas interiores multinivel
• Menús de administración
19. V ia f ir m a H a n u m a n
Framework JS
• DataTable: Grupos de iconos
• DataTable: Mensajes de confirmación
• Bloques expandibles
• Formateo numérico
20. V ia f ir m a H a n u m a n
Flaminwork: CSS
• Maquetaciones internas
• Anchos
• Márgenes, paddings
• Iconos
22. V ia f ir m a H a n u m a n Framework V6
Características generales
Equivalenvias con V4 Arquitectura
Java EE6 Web Profile
PersonaVO → Persona y PersonaEntity Managed Bean en contexto de página
JSF 2.x JSF 1.x Facelets
PersonaBO → PersonaService @Page Controllers en Session
CDI Jboss Seam 2.x Reescritura completa del Framework
Bridge/DAO → PersonaPersistenceService y
Apache Tomcat 7 Apache Tomcat 5 PersistenceService Maven 3.x
Apache Tomcat 6t
PersonaContyroller → PersonaListPage,
Glassfish 3.1.x Jboss 7.1.x PersonaEditPage Jpa Entity VO
Composites
Glassfish 3.1.x Jboss 7.1.x
CadenaUtils -->StringUtils
FechaUtil → DateUtil ...
Test Junit /Jboss Arquillian
Capa Cliente
Transacciones JTA
JQuery
Query Named
Primefaces 3.0
Log SLF4J
Primefaces Richfaces Tomahawk
23. V ia f ir m a H a n u m a n Framework V6
Arquitectura
Stack Entorno de trabajo
UML
24. V ia f ir m a H a n u m a n Framework V6
CDI
Injección @Inject
Publicación de objetos @named
Scope @SessionScope
@ApplicationScope
@Singleton
@HttpParam, @Page
Eventos /auditoría Fire y @Observer
25. V ia f ir m a H a n u m a n Framework V6
JPA
@NamedQuery(name = "Cliente.perteneceA.Municipio",
Query Named query = "select e from Cliente as e where e.perteneceA=:perteneceA"),
Uso Named Query public List<Cliente> findByNotPerteneceAMunicipio(Municipio municipio){
return findByNamedQuery("Cliente.not.perteneceA.Municipio",
new QueryParam(Cliente_.perteneceA, municipio));
}
Static MetaModel @javax.persistence.metamodel.StaticMetamodel(CaEntity.class)
public final class Ca_ {
/**
* This field corresponds to Ca.name.
*/
public static volatile SingularAttribute<Ca, String> name;_
}
Transacciones doInTransaction(new PersistenceActionWithoutResult() {
public void execute(EntityManager em) throws ManagerException {
for (Cliente cliente : clientesList) {
cliente.setPerteneceA(null);
service.save(cliente);
}
for (Empleado empleado : empleadosList) {
empleado.setVivenEn(null);
service.save(empleado);
}
service.remove(entity);
}
});
27. V ia f ir m a H a n u m a n Framework V6
Tools
Menú de administración simple y avanzado (tablas masters)
Enlace a las entidades importantes Listado de todas las tablas masters
Panel de configuración y estado del sistema
28. V ia f ir m a H a n u m a n Framework V6
Cache Css/JavaScript
Permite optimizar tanto el tamaño de los ficheros como el número de recursos a
descargar por el navegador
<vh:head cache="false" version="4">
<vh:head cache="true" version="4">
4 veces más rápido.
18 peticiones HTTP menos
Tiempo: 2.75 seg Tiempo: 0.7 seg
Numero de recursos css/javascript descargados: 20 Numero de recursos css/javascript descargados: 2