Java Platform, Enterprise Edition

Java EE Journal

Subscribe to Java EE Journal: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get Java EE Journal: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


J2EE Journal Authors: Stackify Blog, Sumith Kumar Puri, Javier Paniza, Yakov Fain, Ken Fogel

Related Topics: RIA Developer's Journal, Java EE Journal, Java Developer Magazine, ERP for Small and Midsize Businesses

ERP for SME: News Item

OpenXava 4.5: Desarrollo Rápido Java para aplicaciones Web

OpenXava genera automáticamente la interfaz de usuario a partir de las clases del dominio

OpenXava es una herramienta para el Desarrollo Rápido de aplicaciones Web, apropiada para aplicaciones de gestión y orientadas a bases de datos.
OpenXava permite desarrollar aplicaciones simplemente escribiendo clases del dominio con Java o Groovy. La interfaz de usuario se genera automáticamente en tiempo de ejecución, sin generación de código.

OpenXava 4.5 tiene algunas nuevas funcionalidades muy interesantes, como por ejemplo:

  • Soporte de todas las estrategias de mapeo de herencia JPA.
  • Los datos de la lista y las colecciones se obtienen vía JPA, antes se usaba JDBC.
  • Librería Automated Business Logic (ABL) añadida.
  • Una arquitectura de generación de interfaz de usuario completamente nueva. Todavía está en BETA pero se puede activar con layout.painter en xava.properties.

Y muchas otras nuevas funcionalidades y arreglos.

Soporte de todas las estrategias de mapeo de herencia JPA

Esto es algo que la comunidad llevaba pidiendo bastante tiempo. Hasta ahora sólo la estrategia de una tabla por jerarquía de clases estaba soportada. A partir de OpenXava 4.5 también se puede usar la estrategia joined y de tabla por clase de JPA.
Es decir, podemos escribir unas clases como estas:

@Entity
@Inheritance(strategy=InheritanceType.JOINED)
class Ordenador extends Identifiable {
String nombre
}

@Entity
class Tableta extends Ordenador {
int tamañoPantalla
}

En este caso, tenemos una tabla para Ordenador con la columnas ID y NOMBRE y una tabla para Tableta con las columnas ID y SCREENSIZE. JPA realizará un JOIN de las dos tablas cuando sea necesario.
Podemos escribir también:

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
class Tienda extends Identifiable {
String nombre
}

@Entity
class TiendaInternet extends Tienda {
String url
}

En este caso, tenemos una tabla para Tienda con las columnas ID y NOMBRE y otra para TiendaInternet con las columnas ID, NOMBRE y URL.
Desde ahora OpenXava genera una interfaz de usuario correcta a partir de las classes de arriba.

Los datos de la lista y las colecciones se obtienen vía JPA

Hasta ahora OpenXava ha usado JDBC para obtener los datos para lista y las colecciones. Esto era así por razones históricas, en concreto porque la primera versión de OpenXava usaba entidades EJB 1.0 CMP para la persistencie y EJB CMP es demasiado lento y rigido para implementar el comportamiento necesario de la lista de OpenXava, por eso usamos JDBC. Pero ahora, JPA es lo suficiente rápido y flexible como para ser usado para obtener los datos de la lista, por eso hemos escrito un nuevo JPATabProvider para leer los datos de la lista y es el que se usa por defecto. Estos nos ha permitido soportar todos los tipos de herencia de JPA, pero también abre un universo nuevo de posibilidades para el futuro, como usar DataNucleus en lugar de Hibernate como motor de JPA y así poder acceder a bases de datos no relacionales.

Libreria Automated Business Logic (ABL) añadida

La gente de la startup de California Automated Business Logic ha estado trabajando duro para integrar su libreria, ABL, en OpenXava. ABL permite definir lógica de negocio declarativamente usando anotaciones. El wiki explica como usar ABL en OpenXava.

Una arquitectura de generación de interfaz de usuario completamente nueva

El equipo de SicFlex, una compañía dominicana que ha desarrollado un ERP completo con OpenXava, ha desarrollado un nuevo motor de visualización para OpenXava. Esta es la parte más importante y complicada de OpenXava. Este nuevo motor de visualización permitirá generar interfaces de usuario más complejas y bonitas aún. Todavía está en beta y está desactivado por defecto, pero puedes activarlo con las siguientes entradas en xava.properties:

# Layout parser calculate and prepare properties to be renderer.
# This is optional, by default OX uses org.openxava.render.DefaultLayoutParser
layout.parser=org.openxava.web.layout.DefaultLayoutParser

# Layout painter, render all properties in cell forms
# If a valid painter is defined here, view rendering is performed by it.
layout.painter=org.openxava.web.layout.DefaultLayoutPainter

Y más

Mira la lista de cambios para la lista completa de nuevas características y arreglos.

Descarga OpenXava 4.5 y pruébalo

More Stories By Javier Paniza

Javier Paniza is the project lead for OpenXava project. He works as software developer at Gestión 400, a software company for public administration in Spain. He has been developing with Java Enterprise since 1998. Also he has been J2EE mentor for development teams in banking projects.