miércoles
jun112014
OpenXava 5.0: Desarrollo rápido con Java
OpenXava es un marco de trabajo AJAX para desarrollo rápido de aplicaciones web empresariales.
Con OpenXava sólo has de escribir las clases del dominio con Java para obtener una aplicación web lista para producción.
Esta versión 5.0 tiene un nuevo estilo visual, incluye navegación entre módulos, identificación de usuario (por tanto ya no necesitas Liferay), colecciones editables en línea (como en una hoja de cálculo), un nuevo editor para adjuntar archivos a tu entidad y muchísimas cosas más.
Te invitamos a que lo descargues y actualices tus aplicaciones OpenXava. Mira las instrucciones de migración.
Por tanto, no necesitas usar Liferay para proveer navegación a tu aplicación, un simple Tomcat es suficiente. De todas formas, todavía puedes desplegar tus aplicaciones en Liferay donde estos nuevos menús no se muestran.
Por tanto, no necesitas usar Liferay para proveer identificación de usuario. De todas formas, si despliegas en Liferay este mecanismo de identificicación de usuario no se usará. Además, lo puedes desactivar si lo deseas, para desarrollo o aplicaciones públicas.
Donde el usuario puede modificar cualquier propiedad en cualquier elemento en cualquier momento y donde todos los elementos de la colección se graban a la vez, al mismo tiempo que la entidad principal.
Estas colecciones se definen usando @ElementCollection, una anotación nueva en JPA 2 y son de objeto incrustables (no de entidades).
Para definir un colección de elementos usa @ElementCollection en vez de @OneToMany:
Puedes ver como estas colecciones soportan propiedades calculadas, referencias, totales, etc.
Se puede configurar para almacenar los archivos en la base de datos o en el sistema de archivos.
Esta versión 5.0 tiene un nuevo estilo visual, incluye navegación entre módulos, identificación de usuario (por tanto ya no necesitas Liferay), colecciones editables en línea (como en una hoja de cálculo), un nuevo editor para adjuntar archivos a tu entidad y muchísimas cosas más.
Te invitamos a que lo descargues y actualices tus aplicaciones OpenXava. Mira las instrucciones de migración.
Nuevo estilo visual
La mejor manera de ver el nuevo estilo es echarle un vistazo a la demo.Navegación entre módulos
Por fin, tus aplicaciones OpenXava incluirán menús para acceder a los módulos:Por tanto, no necesitas usar Liferay para proveer navegación a tu aplicación, un simple Tomcat es suficiente. De todas formas, todavía puedes desplegar tus aplicaciones en Liferay donde estos nuevos menús no se muestran.
Identificación de usuario
Ahora tu aplicación le pedirá al usuario que se identifique:Por tanto, no necesitas usar Liferay para proveer identificación de usuario. De todas formas, si despliegas en Liferay este mecanismo de identificicación de usuario no se usará. Además, lo puedes desactivar si lo deseas, para desarrollo o aplicaciones públicas.
Colecciones editables
En OpenXava 5.0 puedes tener colecciones como esta:Donde el usuario puede modificar cualquier propiedad en cualquier elemento en cualquier momento y donde todos los elementos de la colección se graban a la vez, al mismo tiempo que la entidad principal.
Estas colecciones se definen usando @ElementCollection, una anotación nueva en JPA 2 y son de objeto incrustables (no de entidades).
Para definir un colección de elementos usa @ElementCollection en vez de @OneToMany:
@ElementCollection @ListProperties("producto.codigo, producto.descripcion," + "producto.precioUnitario, cantidad, " + "importe[factura.sumaImportes, factura.iva, factura.total]") private Collection<LineaFactura> lineas;Y define la clase para la colección de elementos como @Embeddable en lugar de @Entity:
@Embeddable public class LineaFactura {La interfaz de usuario generada a partir de este código será:
Puedes ver como estas colecciones soportan propiedades calculadas, referencias, totales, etc.
Editor para adjuntar archivos
Hasta ahora para adjuntar archivos a tus entidades tenias que crearte tu propio editor. Esto ya no es necesario, ahora puedes usar el nuevo estereotipo ARCHIVO, así:@Stereotype("ARCHIVO") @Column(length=32) private String trailer;Para obtener esto:
Se puede configurar para almacenar los archivos en la base de datos o en el sistema de archivos.
Otras mejoras
Hemos hecho muchas mejoras en otras áreas:- Nuevo motor de generación de interfaz gráfica.
- Apariencia del editor de fecha mejorada.
- Varios informes en un único PDF con la nueva JasperConcatReportBaseAction.
- Anotación @Collapsed para iniciar las colecciones o referencias cerrada en la interfaz de usuario. También disponible para los componentes XML.
- Nuevo controlador NoCustomizeList para desactivar la personalización de la lista para un módulo específico.
- El usuario puede compartir un informe de 'Mis informes' con todos los demás usuarios.
- Nuevo proyecto Addons añadido a la distribución que contiene caracteristicas extendidas fuera del nucleo de OpenXava.
- Nuevo proyecto InvoiceDemo añadido a la distribución.
- Groovy actualizado a 2.2.2.
- JasperReports actualizado a 5.5.1.
- DWR actualizado a 2.0.10.
- JSTL actualizado a 1.2 usando Apache Standard Taglibs 1.2.1.
- JavaMail actualizado a 1.5.1.
- Actualización de la librerías commons a: beanutils 1.8.0, logging 1.1.1, digester 2.1, codec 1.9, fileupload 1.3.1, io 2.4, lang 2.6, validator 1.4.0.
- Actualización a Servlet 2.5 y JSP 2.1.
- Añadida librería Commons Lang3 3.2.1.
- Tomcat 7 incluido en la distribución.
- Eliminado soporte para IE6, IE7 y IE8.
- Usar module.jsp para ejecutar módulos desde el navegador ya no está soportado.
- Eliminado soporte de Java 5, a partir de ahora Java 6 o superior es obligatorio.
- Eliminado soporte de WebSphere 6.1 y WebSphere Portal 6.1.
- Eliminado soporte de Tomcat 5.5.
- Eliminado libreria jakarta-oro, sólo se usaba en el viejo commons-validator.
- Añadidos ejb.jar y jpa.jar a WEB-INF/lib para facilitar el despliegue en Tomcat.
- Eliminado el proyecto MiEscuela de la distribución distribution.
- Eliminado el proyecto AccessTracking de la distribución OpenXava.
- Clase Objects de org.openxava.util eliminada, puedes usar XObjects en su lugar.
- Nuevos métodos is/setCollapsed() en View para cerrar los marcos de una referencia o colección programáticamente.
- Añadidos validateMinimum() y validateMaximum() a CollectionElementViewBaseAction.
- Nuevo método getPopupPDFPageCount() en ModuleTestBase.
- Nuevos métodos setValueInCollection(), assertEditableInCollection() y assertEditableInCollection() en ModuleTestBase.
- Nuevo método noFirstTokenWithoutFirstDelim() en Strings.
- Cuando se especifica @Digits la escala por defecto se ignora incluso si no especifica la fracción.
- Rendimiento de la acción de borrar en modo detalle mejorado.
- Comportamiento con nivel de aislamiento READ COMMITED mejorado.
- Nuevo métodos commit() y rollback() en BaseAction.
- Métodos Is.emptyString() y Is.emptyStringAll() permiten un número infinito de argumentos.
- Método clearCondition() quitado de ModuleTestBase.
Arreglos
Aunque esta no es una versión de mantenimiento hemos arreglado algunas cosas:- Arreglado: Doble borde usando .ox-frame en el CSS con el nuevo renderer.
- Arreglado: Totales en los marcos de colecciones no se muestra en el nuevo renderer.
- Arreglado: Método assertListRowCount() de ModuleTestBase falla cuando el valor de la propiedad summationInList es false.
- Arreglado: Los subcontroladores fallan en modo ambos.
- Arreglado: Codificación incorrecta en correos enviado con la clase Emails.
- Arreglado: Miembro dentro de @NoFrame no se alinean con los miembro de fuera.
- Arreglado: Tamaño por defecto incorrecto para java.lang.Boolean.
- Arreglado: Vista rota al recargar si el módulo está dentro de una tabla HTML.
- Arreglado: Propiedad simple después de un grupo sin ; no se coloca correctamente.
- Arreglado: Una referencia con @NoFrame dentro de un grupo produce una disposición fea.
- Arreglado: Mensajes de error para @Size en colecciones muestra 'Element' siempre en inglés, incluso si no se está usando inglés.
- Arreglado: Primer campo con poco margen arriba con el nuevo renderer.
- Arreglado: Id html de los marcos no es correcto para las referencias con el nuevo renderer.
- Arreglado: Propiedades alineadas por columna cuando no deberían, con el nuevo renderer.
- Arreglado: Iconos de propiedades no se alinean correctamente con el nuevo renderer.
- Arreglado: La escala definida en longitud-defecto.xml se ignora al formatear.
- Arreglado: La escala definida en @Column y @Digits se ignora al formatear.
- Arreglado: La anotación @LabelStyle no se soporta en el nuevo renderer.
Reader Comments (8)
La verdad no estuve viendo la version en detalle pero hace tiempo vengo viendo los cambios y mejoras y la verdad que 10 puntos, mis felicitaciones.
La verdad que me parece una herramienta muy interesante. La verdad que no la conozco en detalle y quizás lo que voy a decir no tiene sentido. Pido perdón de antemano.
Pero el caso es que no termino de verla útil. Es decir, realmente puede hacer aplicaciones profesionales con este framework.
Yo creo que al final las empresas prefieren sacrificar esta agilidad de desarrollo, por una aplicación más detallada, con un interfaz más amigable y con más sentido. Y no algo totalmente genérico.
No se, seguramente estoy equivocado. Quizás si viera una aplicación final hecha con este framework podría decir otra cosa. Pero las demos tampoco me convencen.
Paniza de grande quisiera ser como tu
Aunque no he utilizado nunca OpenXava, me encanta saber que existen alternativas y encima realizadas aquí a Frameworks anglosajones. Bravo!!
Javier, felicitaciones!!
Fui usuario de OpenXava hace varios años atras y si bien me pareció muy bueno, no contaba en ese momento con login y manejo de usuarios (estaba mas pensado para crear portlet) y yo quería hacer una clasica aplicación con su login, módulos, usuarios con roles y todo eso y se me complicó un poco.
Ahora que veo que tiene esto (y todo lo que le fueron agregando en las sucesivas versiones), creo que tu framework está realmente completo. Impresionante trabajo!
Saludos
Hola Retal,
Durante años muchas empresas han desarrollado aplicaciones profesionales con OpenXava, algunas de ellas bastante grandes, como una nómina que funciona en instituciones con más de 1000 trabajadores o un ERP completo. Aunque un poco desactualizada, hay un sección de casos de éxito en el sitio de OpenXava.
No es que lo prefieran, es que no tienen alternativa. Lo que tu dices está bien para una aplicación pública dirigida a usuarios casuales y con pocas páginas. Ahí un diseño artesanal con un gran esfuerzo en la experiencia de usuario es importante. Pero si tienes que desarrollar una aplicación de gestión no trivial, que normalmente tendrá cientos de módulos que tienen que ser coherentes (funcionar todos igual), te encuentras que los programadores pasan todo su tiempo haciendo un trabajo rutinario. Con OpenXava la parte rutinaria no la haces y como programador te concentras en las partes difíciles.
Es curioso, porque OpenXava permite mezcla interfaz de usuario hecha a mano con la generada automáticamente en una aplicación, y sin embargo los programadores de OpenXava se resisten a hacer UI a mano. Una vez te acostumbras a las UI automáticas, no quieres otra cosa.
Es cierto que con OpenXava hay que tener un enfoque más industrial, es decir, puede que la aplicación no sea exactamente como la hubieras hecho tú y a lo mejor los botones no están exactamente donde el usuario quiere, pero has hecho la aplicación en 2 meses en lugar de 6. Es decir, cambias un poco de flexibilidad por mucho tiempo y dinero. Lo bueno es que esto es lo normal en nuestra vida cotidiana. Por ejemplo, cuando necesitas un traje, ¿vas a un sastre a que te lo haga a medida o te lo compras en el corte inglés? Normalmente en el corte inglés encontrarás un traje que te guste y te siente bien, por un precio razonable, aunque todos los detalles no los hayas diseñado tú.
Mucha gente me pide ver código fuente de aplicaciones OpenXava finales y no se lo puedo dar. El problema es que, aunque OpenXava es de código abierto, la inmensa mayoría de las aplicaciones de OpenXava no lo son. Así que su código no está disponible.
Pero sí que puedes ver esta demo de un ERP hecho con OpenXava:
http://demo.sicflex.com/
Hola Javier.
Muchas gracias por tu comentarios. Han sido muy aclaratorios. Está claro que mis comentarios eran desde el desconocimiento.
La verdad que ya ver una aplicación completa, da una impresión diferente con respecto a ver pequeñas demos.
Tendré que probarlo!!
Excelente trabajo javier. Estoy probando el framework y anda buenisimo. Lo que no podido correr son las pruebas con JUNIT.
Saludos