OpenXava 5.6: Desarrollo rápido de aplicaciones empresariales
OpenXava es una herramienta 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.
En OpenXava 5.6 la lista recuerda los filtros y ordenaciones hechos por el usuario para poder ser reejecutados escogiendo de un combo, puedes renombrar los filtros/ordenaciones producidos. Con esto ya no necesitas la acción 'Mis informes', por eso la hemos quitado. También esta versión 5.6 incluye los nuevos estereotipos DISCUSION y TEXTO_HTML_SIMPLE, select parcial en baseCondition de @Tab y mucho más.
Te invitamos a que descargues esta nueva versión y actualices tus aplicaciones OpenXava. Mira las instrucciones de migración.
La lista recuerda los filtros y la ordenación
Cuando el usuario hace cualquiel filtro u ordenación una nueva entrada se añade en un combo encima de la lista:
Fíjate en que puedes cambiar el nombre del filtro. Además, la configuración de las columna (esto es si añades, quitas o cambias el orden de las columnas) se recuerda también. Es decir puedes dar un nombre a un filtro, ordenación y configuración de columnas, para restaurarlos después con un par de clics. Estas configuraciones de lista se almacenan por usuario.
No te conformes con el pantallazo de arriba, pruébalo tu mismo con la demo en vivo .
Quitamos 'Mis informes'
La acción Mis informes ya no está disponible por defecto:
La hemos quitado porque ahora prácticamente toda la funcionalidad de Mis informes está disponible directamente en la lista, por eso la quitamos por duplicada. De todas formas, si a tus usuarios no les gusta el paradigma de la manipulación directa y siguen prefiriendo utilizar engorrosos diálogos y asistentes puedes traer de nuevo a la vida Mis informes usando el controlador TypicalExtendedPrint en vez de Typical, por ejemplo:
<controlador nombre="Cliente"> <!-- <hereda-de controlador="Typical"/> --> <!-- Quita esto... --> <hereda-de controlador="TypicalExtendedPrint"/> <!-- ...y añade esto --> ... </controlador>
DISCUSION y TEXTO_HTML_SIMPLE
Recientemente hemos cambiado el color por el monocromo. Hicimos esto para la mayoría de la interfaz de usuario, pero TEXTO_HTML todavía estaba usando iconos de colorines. Para resolver esto hemos actualizado a la última versión de CKEditor y lo hemos adaptado para que sea consistente con el resto de la interfaz de usuario. Y de paso, hemos creado dos nuevos estereotipos basados en CKEditor. El primero es TEXTO_HTML_SIMPLE:
Es decir, lo mismo que el TEXTO_HTML de siempre pero con menos botones. También tenemos un estereotipo completamente nuevo, DISCUSION. Para usarlo anota una propiedad String con el estereotipo, así:
@Stereotype("DISCUSION") @Column(length=32) private String discusion;
Y obtendrás un hilo de discusión completo asociado a tu entidad:
Esto no sólo te permite crear aplicaciones como foros, blogs o gestores de incidencias, sino también dar un toque de sabor social a tus aplicaciones de gestión de toda la vida.
Condición parcial en baseCondition @Tab
Hasta ahora tenías dos opciones para baseCondition: poner la condición que va después del WHERE o escribir el SELECT completo. El SELECT completo no funciona bien si el usuario personaliza la lista y usar solo la parte del WHERE en la condición es muy limitado. A partir de v5.6 tenemos una tercera opción que es escribir la sentencia JPQL a partir de la cláusula FROM. Para hacer esto simplemente comienza la baseCondition por FROM, de esta manera:
@Tab(name="DeValencia", baseCondition="from Cliente e, in (e.provincias) p where p.id = 'V'")
En este caso provincias es una colección @ManyToMany en un Cliente, y seleccionamos los clientes con Valencia entre sus provincias.
También disponible para condicion-base de los componentes XML.
Otras mejoras
Hemos hecho muchas mejoras en otras áreas:
- Aparencia de CKEditor adaptada a NaviOX y Liferay 6.1.
- CKEditor actualizado a 4.5.9.
- Nuevo indexExt.jsp en naviox/web para añadir elementos a la página HTML principal que envuelve la aplicación.
- La combinación de componentes XML + persistencia JPA ya no se soporta.
- La página principal no se refresca al generar un SimpleHTMLReport.
- Nueva propiedad helpAvailable en xava.properties para activar/desactivar el icono de ayuda en los módulos.
- Workspace de Eclipse actualizado a Eclipse Neon, aunque todavía funciona bien con todas las versiones 4.x.
- MetaController.containsMetaAction() recibe una acción no calificada como argumento.
- Nuevo método validateViewValues() en ViewBaseAction.
- Nueva clases WithRequiredLongName para usar como clase transitoria generica para diálogos.
- Nuevo método move() en la clase de utilidad XArrays.
- Nuevo editor booleanWithSuffixEditor.jsp que permite poner una etiqueta como sufijo después de un campo de casilla de verificación.
- Algunas etiquetas de uso común nuevas para ser usadas en las aplicaciones.
- Nuevo método toString(Object [] array) en la clase de utilidad Strings.
- ModuleTestBase.setLocale() ya no reinicia el módulo.
- Nuevos métodos selectListConfiguration(), assertListSelectedConfiguration() y assertListAllConfigurations() en ModuleTestBase.
- Nuevo método clearCondition() en ModuleTestBase para simular pulsar en el botón de borrar condición.
- Nuevo método anyEqual() en la clase de utilidad Is.
- Nuevo método naturalLabelToIdentifier() en la clase de utilidad Strings.
- Nuevos métodos assertDiscussionCommentText(), assertDiscussionCommentsCount() y postDiscussionComment() en ModuleTestBase.
- IExplicitModifyPersistenceProvider para definir proveedores de persistencia que necesitan un comando explicito para modificar datos.
- Nueva propiedad connectionRefinerClass en xava.properties para definir un IConnectionRefiner para refinir conexiones JDBC.
- Cada tipo de componente tiene su propio IPersistenceProvider, ya no hay un único IPersistenceProvider para toda la aplicación.
- Las propiedades jpaCodeInPOJOs y persistenceProviderClass en xava.properties ya no tienen efecto.
- Los métodos isEJB2Persistence(), isJPAPersistence(), isJPACodeInPOJOs() y getPersistenceProviderClass() quitados de XavaPreferences.
- Analizadores de componentes enchufables por medio de implementaciones de IComponentParser declaradas en xava.properties.
- Mejoras de las etiquetas y mensajes para inglés, alemán y francés.
- Nueva propiedad smtpStartTLSEnable en xava.properties para configurar el comportamiento de Emails.
- Mapeo de servlet para genera archivos Excel personalizado se incluye por defecto en web.xml.
Arreglos
Aunque esta no es una versión de mantenimiento hemos arreglado algunas cosas:
- Arreglado: Labels.getQualified(String id) no devuelve la etiqueta calificada.
- Arreglado: Los cambios en custom.css se pierden al actualizar la versión de OpenXava.
- Arreglado: Estilo al pasar el ratón por encima el botón de la acción por defecto no funciona.
- Arreglado: La herramienta de generación de esquemas no añade el esquema en las sentencias CREATE INDEX.
- Arreglado: El orden de los subcontroladores en la interfaz de usuario es no el declarado en controladores.xml.
- Arreglado: En un módulo con 'ListOnly' o 'Void' como controlador-modo con subcontroladores pero sin acciones, los subcontroladores no se visualizan.
Reader Comments (2)
me haces dudar de mi heterosexualidad
Es la primera vez que escucho de este framework, me genera algunas interrogantes:
1. En su web usan el término "aplicaciones Java Web de gestión" ¿A qué le llaman "de gestión"? porque un ERP es una aplicación de gestión, un CRM es otra aplicación de gestión, un software de BSC también es una aplicación de gestión; entonces ¿se puede implementar este tipo de aplicaciones en Openxava?
2. Luego de una revisión rápida de la web queda la impresión que que el marco está orientado a lo que podría llamarse el módulo de "mantenimiento de entidades" de una aplicación, si ese es el caso para desarrollar el resto de funcionalidad (todo lo que no sea mantenimiento de entidades) ¿se desarrolla sobre openxava o se tendría que hacer en otra aplicación e integrarla a openxava?
3. Relacionado a la consulta del punto 2 ¿qué mecanismos de integración tienen las aplicaciones generadas con openxava?
Saludos.