Novedades de aries

Post on 13-Jun-2015

293 views 1 download

Transcript of Novedades de aries

Novedades de Aries

15 Noviembre 2010(Desde Sep 2009)

Anotación de Entidades

• @Entidad(gestion=“xxx”, campoDescripcion=“yyy”)• campoDescripcion permite decidir qué propiedad hace de

descripción a diversos efectos:– HibernateSearch– Recientes globales– Títulos de pantallas

@Entidad(campoDescripcion=“resumen”)public class Pedido { … @Transient public String getResumen() { }}

// Para acceder a ello.RegistroUtil.getDescripcion(ciertoRegistro);

http://wiki.seresco.red/aries/index.php?title=Hibernate_Search

Mapear Id Componentes• Al desarrollar componentes compuestos podemos mapear los

“ids” de los campos contenidos para facilitar la reutilización.

<Row> <TextField id="#{entidad}.nombre" etiqueta="Nombre"/> <TextField id="#{entidad}.apellidos" etiqueta="Apellidos"/> </Row>

• Al declarar el componente podemos mapear el trozo de id

<apli:NombreApellidos entidad="cliente"/>

http://wiki.seresco.red/aries/index.php?title=Desarrollar_un_componente#Mapeo_de_identificadores

Nueva Interfaz Validable• Permite validar nuestros componentes propios dentro del componente.• Se validan aunque el componente no tenga id.

http://wiki.seresco.red/aries/index.php?title=Desarrollar_un_componente#Validable

public class DuoDeComponentes extends Composite implements Validable{ public DuoDeComponentes() { …} public ErrorValidacion validar(InfoValidacion info) { log.debug("Validando el componente DuoDeComponentes"); return null;}public ErrorValidacion validar(Component componente, InfoValidacion info) { if (componente.equals(campo)) { log.debug("Validando el campo"); } else if (componente.equals(selecfField)) { log.debug("Validando el selectField"); } return null;}

Serializador• La clase Serializador se utiliza al guardar las preferencias,

criterios de búsqueda, etc.• Se guardan los datos en base64, excepto los tipos básicos

(String, Integer, …) que se guardan en cadenas sencillas para facilitar su lectura.

• Por ejemplo: La cadena "Hola mundo" serializada en base64 era: "rO0ABXQACkhvbGEgbXVuZG8" Ahora es: "<S:Hola mundo“.

• Se puede usar la clase Serializador para nuestros propósitos en la aplicación.

Objetos recientes Globales• Sistema que permite colocar un componente visor de la lista

de objetos recientes en cualquier parte, por ejemplo en el menú general.

• Los objetos recientes son los registros últimamente consultados en gestiones , aunque por programa se pueden añadir.

• Se guardan por usuario.

http://wiki.seresco.red/aries/index.php?title=Objetos_recientes

El nombre de las entidades• El método RegistroUtil.getNombreEntidad devuelve el

nombre (digamos la descripción) de una entidad en el idioma del usuario.

• El nombre de las entidades se pone como propiedad en algun .properties con el nombre lit.entidad.xxxx donde “xxxx” es el nombre completo de la entidad cambiado puntos por guiones bajos, por ejemplo:– lit.entidad.es_seresco_pruebas_datos_Cliente=Cliente

• De momento solo se usa en HibernateSearch, pero está ahí para que se pueda usar en otros contextos.

La descripción de las propiedades• Nuevo método Introspector.getDescripcionPropiedad que

retorna la descripción en el idioma del usuario de una propiedad.

• La descripción se busca como literal con el nombre “entidad.propiedad”. Si no existe se busca con comodín en la entidad, es decir “*.propiedad”.

• De momento esto se usa para la utilidad de poder personalizar una búsqueda, pero está ahí para cualquier otro uso de manejo genérico de las propiedades.

• Asociado a esto existe el método Introspector.getPropiedadesAlcanzables

Jbasica en procesos planificados• La librería Jbasica que permite conectar con modelo B, antes

no se podía ejecutar en procesos planificados porque no se conseguía una instancia de la conexión.

• Para que funcione bien hay que implementar un escuchador de fin de procesos planificados que se encargue de cerrar las conexiones usadas. Más detalles en la Wiki

http://bc.seresco.red/index.php?title=Jbasica#Liberaci.C3.B3n_de_la_conexi.C3.B3n_al_terminar_un_proceso_planificado_de_Aries

Configuración de columnas• Todas las búsquedas permiten que el usuario pueda

configurar las columnas resultantes.• Si queremos evitarlo en una hay que sobrescribir el método

isConfigurable.

http://wiki.seresco.red/aries/index.php?title=B%C3%BAsquedas_con_columnas_din%C3%A1micas#Pantalla_de_configuraci.C3.B3n_de_columnas

Subir,bajar y pasar filas• La clase ManejadorComponentes tiene dos nuevos métodos

de utilidad. SubirFilasSeleccionadas y BajarFilasSeleccionadas.

• Nuevos Componentes BotonesMoverFila , BotonesPasarFila.• Se usan en configuración de búsquedas:

Guadar y recuperar criteros• Nuevo sistema para guardar y recuperar criterios.• Hay que activarlo para que aparezca: Usa nuevas tablas.

http://wiki.seresco.red/aries/index.php?title=Guardar/Recuperar_criterios_en_b%C3%BAsquedas

Criterios automáticos• Los criterios automáticos ahora están ligados a la

funcionalidad de guardar y recuperar criterios.• Al guardar un criterio se puede marcar como automático.• Entonces en sucesivas ejecuciones se pasará directamente a

la pestaña de resultados.

http://wiki.seresco.red/aries/index.php?title=Criterios_autom%C3%A1ticos_en_b%C3%BAsquedas

Anotación Componente• La anotación @Componente permite establecer el tipo de

componente a utilizar para renderizar una propiedad de forma dinámica.

• De momento solamente se utiliza para mostrar las columnas dinámicas en las búsquedas , cuando el usuario utiliza el configurador de columnas para añadir nuevas propiedades a mostrar.

• Permite establecer el tipo de componente a utilizar. De momento solamente se puede declarar un SelectField y el nombre de un lista de literales en su caso:

public class Producto { @Componente(value="SelectField", literales="lit.TipoIva") public Integer getTipoIva() { … }

GestorTablaEnVentana en Pantalla• La gestión de líneas en ventana permite decidir qué forma de

presentación queremos (Pantalla ó Ventana)

<GrupoTablaGestion entidad="Pedidolin" ventana=“GestionLineasPedidos" modo="pantalla">

Nuevo componente Div• Div es un Contenedor pensado para maquetar usando CSS.• Es como un ContentPane pero puede contener más de un

hijo. • Se renderiza exactamente como un “Div” de Html.• Permite evitar posicionamiento absoluto de Css.• Mediante las propiedades RenderId ó RenderClass podemos

establecer estilos CSS.

<Div renderClass="clase1" > ... Cosas ... </Div> <Div renderClass="clase2" > ... Más Cosas ... </Div>

.clase1 { background-color: red;}.clase2 { background-color: blue;}

Componente Div: Ejemplo de uso<Div id="separadorCabecera">

<Div renderId="Cabecera"><Div renderId="BordeSuperior"/><Div renderId="CabeceraCentral">

<Div renderId="DivLogo"/><Div renderId="CabeceraDerecha">

<Div renderId="CabeceraAries" id="CabeceraAries"/><Div renderId="TituloFuncion" >

<Column><Label id="TituloFuncion"/>

</Column></Div>

</Div></Div><Div renderId="BordeInferior"/><Div renderId="MigaDepan" >

<Row id="MigaDePan" cellSpacing="4"/></Div>

</Div><Div renderId="Cuerpo">

<Div id="SeparadorMenu"><Div renderId="ZonaMenu">

<ContentPane id="menuContenedor"/></Div><Div renderId="ZonaPantalla">

<Div renderId="ZonaErrores"><apli:AreaMensajes />

</Div><ContentPane id="pantallaContenedor"/></Div>

</Div></Div><Div renderId="Pie"/>

</Div>

Estilos en CSS• Relacionado con el asunto "Ancho fijo".• Los elementos "body" y "c_root" se pueden estilizar con css

para obtener ancho fijo.• Con renderId se pueden establecer estilos a cualquier

componente• Con renderClass se pueden establecer a los componentes de

una clase.• Los estilos se escriben en

WebContent/recursos/css/estilos.css y se declara en src/META-INF/nextapp/echo2/ForeignCssURLs.properties.

http://wiki.seresco.red/aries/index.php?title=CSS#Estilos_b.C3.A1sicos

¿ Por qué usar Css ?• En el caso de necesitar más potencia.– Tipos de bordes,– Bordes redondeados,– Control de alineación, overflow , etc,...– Control de la cascada (Herencia).

Estilo BLOG• Aplicación con un único

scroll a nivel de toda página.

• Necesario para dispositivos móviles.

• Más moderna, atractiva y usable.

• Implica Ancho fijo.

http://wiki.seresco.red/aries/index.php?title=Estilo_Blog

Personalizar Documento Html• El Documento Html generado por Aries se puede personalizar,

por ejemplo para añadir un Favicon (El icono que aparece asociado a nuestra aplicación).

http://wiki.seresco.red/aries/index.php?title=Personalizar_el_documento_Html

Atributos minHeight, maxHeight• Permiten establecer el alto mínimo y máximo para una tabla.• El alto de la tabla variará en función del tamaño de la pantalla

MigaDePan practicable• Rehecho el componente MigaDePan• Ahora se puede pinchar en cualquier miga• Comienza por ">> Inicio"

<SplitPane orientation="vertical" separatorPosition="48"><ContentPane renderId="ZonaCabecera" id="cabeceraContenedor"/><Div renderId="ZonaMiga">

<Row id="MigaDePan" cellSpacing="4"/></Div>

</SplitPane>

Servicio de imágenes adjuntas• Nos permite obtener una imagen guardada en un adjunto

mediante una URL y hacerlo directamente sin que suponga una descarga.

• Esto nos permite incrustrarla en noticias , textos Html, etc.• Existe dos formas de hacerlo, mediante servicio de Echo2

(Requiere sesión) o Servlet (No requiere sesión).• Ejemplo de URL de llamada mediante servicio Echo2:

http://wiki.seresco.red/aries/index.php?title=Servicio_de_im%C3%A1genes_adjuntas

http://servidor/miapli/?serviceId=Aries.ImagenAdjunto&entidad=noticia&claves=1%3b&nombre=imagen.png

ManejadorComponentes• Nuevos métodos:– setObligatorio , isObligatorio– setErroneo, isErroneo

• Estos métodos se encargan de fijar también los estilos asociados a sus estados.

Validación y mensajes• Cuando se valida una pantalla ahora se muestran todos los

errores de campos erróneos (No solamente uno).• Se puede configurar la aplicación para que muestre mensajes

en una zona de la pantalla en vez de hacerlo en una ventana.• Podemos configurar la aplicación para no tener que declarar

el área de mensajes,pero si queremos declarar el área de mensajes en el escritorio o en cada pantalla podemos hacerlo.

• Debemos usar MensajeUsuarioUtil para mostrar mensajes.

# Area de mensajes automáticaes.seresco.aries.AreaMensajesAuto=true

http://wiki.seresco.red/aries/index.php?title=Visualizar_mensajes

AutoLogin• Podemos configurar la aplicación para que si un usuario ha

guardado usuario y contraseña, no la vuelva a pedir de nuevo.• Esto se desactiva si el usuario entra en sesión y pulsa cerrar

sesión.• Conviene en este caso mostrar claramente el usuario actual

en el escritorio.

http://wiki.seresco.red/aries/index.php?title=Seguridad#AutoLogin

es.seresco.aries.seguridad.AutoLogin=true

GrupoTablaConsulta: Paginación• Nuevo componente

GrupoTablaConsulta que permite mostrar los registros de una entida débil con paginación (Igual que se puede hacer con gestiones de líneas o búsquedas).

Componente TabbedPane• El componente TabbedPane de

EchoPointNG ahora puede ser utilizado en pantallas mediante el tag Tabbedpane.

• El texto de cada solapa se declara igual que TabPane.

• Internamente TabbedPane es muy diferente a TabPane, así que para poder funcionar se instancia un EnvoltorioTabbedPane.

• Ventajas : Puede estar dentro de un column, grid o row, permite añadir iconos, ¿más chulo?

• Inconvenientes: Aun no hay política de estilos, puede fallar en caso de renderización parcial ...

http://wiki.seresco.red/aries/index.php?title=TabbedPane

Clases de utilidad variadas• Clase CriterioListModel (Aportación de Alejandro), igual que

EjemploListModel pero con un criterio.

GestorEntityManagerHilo• Se eliminó error de memoria no liberada. Por culpa de la

estrategia antigua de tener un EntityManager por aplicación no se liberaban las instancias de Aplicación a pesar de que las sesiones caducaran.

• Nueva estrategia de EntityManager por Hilo que soluciona el problema además de que facilita la ejecución de procesos planificados o servicios web que no tienen aplicación.

http://wiki.seresco.red/aries/index.php?title=Estrategias_EntityManager#Estrategia_de_EntityManager_por_hilo_.3D

Spring• Si no declaramos la pantalla como Bean, se declarará

automáticamente cuando se cargue. Esto permite aprovechar la inyección de dependencias automática. Ejemplo:

public class BusquedaArticulos extends Busqueda { .. @Autowired private ServicioActualizarPrecios servicioActualizarPrecios; }

http://wiki.seresco.red/aries/index.php?title=Spring_con_Anotaciones#Declarar_pantallas_como_beans_para_cablearlas

• Recordar también que se pueden usar Beans con anotaciones.

Portlets: Prueba conceptual• Aries como Portlet

permitirá incluir una pantalla de Aries dentro de un portal como por ejemplo LifeRay.

• Es un trabajo iniciado y ha llegado a la fase de descubrir que es viable, pero habría que continuar trabajando antes de poder contar con él.

Gráficos JFC,OFC,Amchart• AriesExt ofrece clases que facilitan la presentación de gráficos.• Ejemplo de Servicio de gráfico OFC:

public class ServicioOfcVentas implements Service { public void service(Connection conn) throws IOException { List<String> categorias = new ArrayList<String>(); List<Double> valoresSerie1 = new ArrayList<Double>(); for (int i = 1; i <= 4; i++) { categorias.add("Trimestre " + String.valueOf(i)); valoresSerie1.add(1500d*i); } GeneradorDatosGrafico generadorDatosOfc = new

GeneradorDatosGraficoBase(); generadorDatosOfc.setCategorias(categorias); generadorDatosOfc.setValores(valoresSerie1); generadorDatosOfc.generarGrafico(conn.getRequest(), conn.getResponse()); } }

http://wiki.seresco.red/aries/index.php?title=OpenFlashChart

Cambios estéticos en Aries• Cambios disponibles en

aplicación plantilla. • Diseño tomado de aplicación

Fidel• Ventanas

– Borde mínimo– Se oscurece el resto

• Botones de Cabecera pasan a ser enlaces.

• Botón para anclar/desanclar menú.

• La Miga de Pan ocupa todo el ancho.

• Estilo AnchoFijo.• Banda del menú incluye zona

de información• Eliminados efectos relieve.

• Insets en los bloques• Combinación de colores basada en tres tonos.

Cambios estéticos: Papel Pijama• Papel pijama.

http://wikiaries.seresco.es/aries/index.php?title=Papel_Pijama

<style name="FilaImpar" type="nextapp.echo2.app.Label"><properties>

<property name="background" value="#e0e0f0"/></properties>

</style> <style name="FilaPar" type="nextapp.echo2.app.Label">

<properties><property name="background" value="#f0f0e0"/>

</properties></style>

Ancho de columnas en tablas• Si una tabla tiene width :• Y la suma del ancho de sus columnas es menor que él• Entonces se aumenta proporcionalmente cada columna para

aprovechar todo el ancho.

Plantilla GrupoTablaGestion• Ahora GrupoTablaGestion usa una plantilla lo que permite

personalizarla, por ejemplo, ponerla en horizontal.

Factorías de Renderers de Celdas• Para presentar información dentro de las tablas se utilizan los

renderers.• Mediante las factorías de Renderers se facilita la creación de

nuevos Renderers.• Un ejemplo de Renderer Personalizado, es una barra que

muestre un porcentaje.

http://wiki.seresco.red/aries/index.php?title=Desarrollar_Renderers_de_celdas

Celdas botón• Podemos declarar un Button dentro de una tabla.• Se renderiza con el aspecto de un enlace.

<Tabla id="pedidolin" editionEnabled="false" width="690">

<Button id="pedidolin.id.linPedido" etiqueta="Línea"/><CampoConBusqueda id="pedidolin.articulo.codArticulo"

etiqueta="Artículo"/><TextField id="articulo.descripcion"

etiqueta="Descripción" enabled="false"/></Tabla>

Lenguajes dinámicos• Se puede empotrar un lenguaje dinámico en nuestra

aplicación, por ejemplo, Jython.• Permite ofrecer al usuario final la posibilidad de introducir

desde fórmulas hasta algoritmos completos. • Muy sencillo de usar.

http://foros.seresco.red/desarrollo/viewtopic.php?f=5&t=111&p=197&hilit=Jython#p197

Componente ArbolXML• Permite mostrar un árbol cargado a partir de un fichero XML y

un fichero de configuración que describe qué hay que mostrar para cada tipo de nodo.

• Se puede mostrar el detalle de cada nodo en la misma pantalla o en una ventana aparte.

http://wiki.seresco.red/aries/index.php?title=Arbol_XML

SSO Sencillo• Permite hacer SSO entre varias aplicaciones de Aries o ir a

otras aplicaciones desde Aries.• La clase TicketManager nos permite generar y validar "tickets"

que tienen una duración determinada.

http://wiki.seresco.red/aries/index.php?title=SSO_sencillo

Servicios Web con Apache CXF• Resulta muy sencillo desarrollar servicios web usando Apache

CXF.• También se pueden ofrecer Servicios Web REST mediante CXF

de forma muy sencilla.

http://wiki.seresco.red/aries/index.php?title=SSO_sencillo

@WebServicepublic interface CheckTicket {

boolean checkTicket(@WebParam(name="ticket") String ticket, @WebParam(name="nombre") String nombre);

}

Multisesión• Se puede configurar Aries para permitir la multi sesión.• Esto permite a los usuarios tener abiertas varias pestañas

ejecutando funciones diferentes de la misma aplicación.• En realidad existe una única sesión de servlets pero puede

haber varias aplicaciones simultáneas.• No afecta a la programación. Cada instancia de Aplicacion

sigue aislada del resto, pero ahora una instancia de Session de servlets puede compartir varias sesiones de aplicación. Ojo al método guardarEnSesion.

http://wiki.seresco.red/aries/index.php?title=Varias_sesiones_con_el_mismo_navegador

Cursor y Esperas• Ha sido imposible superar los problemas de cambio de cursor

al interactuar. Cada solución incluía un nuevo problema en diferentes navegadores.

• La decisión salomónica es evitar el cursor en modo espera.• Nueva propuesta de espera prolongada. Cuando la respuesta

supera los 750ms puede aparecer el icono • En la aplicación Plantilla ya están aplicados estos cambios• Se pueden aplicar copiando

recursos/aries/ServerDelayMessage.xml y estableciendo el estilo .ServerDelayMessage tal como hace la aplicación plantilla.

Canales• Un canal es una forma de ejecutar la aplicación que

determina todos los detalles relacionados con la capa de presentación.

• Por ejemplo, para diferenciar dispositivos móviles.• Podemos determinar el canal usando URL's diferentes

mediante ServletParam• Podemos tener hojas de estilos diferentes en función del

canal.• Podemos tener pantallas diferentes en función del canal.

http://wiki.seresco.red/aries/index.php?title=Canales

Exportar tablas con Plantilla

http://wikiaries.seresco.es/aries/index.php?title=Exportar_tabla_con_plantilla

Exportar pantalla con Plantilla• Se puede exportar el contenido de una pantalla a Excel

usando una plantilla con muy poco esfuerzo de programación.• Por ejemplo, dada una pantalla de gestión de pedidos, se

puede incluir un botón que nos imprima el pedido en Excel.public void doExcel() {

Tabla t=getComponent("pedidolin");GrupoTablaGestion gt=(GrupoTablaGestion)t.getParent().getParent();

String nombreBoton="exportar" + gt.getSufijoBotones();

Button b=(Button)gt.getComponent(nombreBoton);b.fireActionPerformed(new ActionEvent(b, b.getActionCommand()));}

CampoFechaPop• El nuevo CampoFechaPop

permite mostrar el selector de fecha justo debajo del campo.

• Se puede configurar la aplicación para que todo CampoFecha se instancie realmente mediante un CampoFechaPop añadiendo lo siguiente a config.properties.

http://wiki.seresco.red/aries/index.php?title=CampoFechaPop

CampoFecha=es.seresco.aries.aplicacion.componente.CampoFechaPop

Refactorización de componentes• Nuevo componente SelectorFecha que permite seleccionar

una fecha de un calendario que incluye navegación entre meses. (Se utiliza dentro de CampoFechaPop).

• Nuevo interfaz CampoConEdicion que implementan todos los componentes que tengan una máscara de edición.

• Nuevo interfaz CampoConAditamentos que implementan los componentes que se compongan de un campo y más cosas. Por ejemplo CampoFechaPop.

• Nuevo interfaz WithText que marca los componentes de Echo2 o terceros que tienen el interfaz setText-getText.

• Gracias a estos interfaces, en las clases de Aries (ManejadorComponentes, Introspector , etc) se puede hacer una programación más genérica.

Componente Combo• Nuevo componente Combo que se implementa mediante el

ComboBox de EchoPointNG.• Es una combinación de TextField con SelectField, o digamos,

un SelectField editable.• Permite especificar el ListModel.• No permite Clave-Valor. (De momento)• También permite un ListModel automático formado por los

últimos valores introducidos. (Atributo historial="true").

http://wikiaries.seresco.es/aries/index.php?title=Combo

<apli:Combo id="usuario" etiqueta="Usuario"/>

Ventanas con tamaño automático• Si ponemos alto="0" y ancho="0" a una pantalla entonces su

tamaño es automático y se ajusta perfectamente a su contenido.

http://wiki.seresco.red/aries/index.php?title=Ventanas

Título y miga de pan• Ahora las gestiones establecen como título la descripción del

registro activo (Obtenido mediante el atributo campoDescripcion de la anotación @Entidad del mismo).

Atributo ColumnWidth• El componente Grid tiene un nuevo atributo columnWidth

que permite establecer el ancho de las columnas en pixeles o en porcentaje.

<Grid columnWidth="100px,25%, 300">

Plugin• Nuevo asistente de creación de componente• El asistente de pantalla y búsqueda permite seleccionar los

campos a mostrar tomados de la entidad principal.• Al crear una pantalla se puede pedir que nos la incluya en el

menú y que nos internacionalice las etiquetas generadas.

Componente HtmlEditor• Se ha integrado el CkEditor como componente de Aries, así

que se puede usar en cualquier pantalla.• Permite la edición WYSIWYG de campos con contenido rico

Html.• Es más potente que el que venía inicialmente con Echo2

http://wikiaries.seresco.es/aries/index.php?title=HtmlEditor

Menús• Nuevo menú horizontal.• Refactorización de menús. (Nuevo MenuVertical,

MenuEscritorio deprecated).• El escritorio puede contener varios menús.

http://wiki.seresco.red/aries/index.php?title=Men%C3%BAs

EntityManagerFactoryMultiple• Nuevo sistema para permitir dataSource diferente en función

del usuario que ha iniciado sesión.• Objetivo: Dar soporte de Outsourcing a múltiples clientes con

un único despliegue de aplicación.• Nueva clase EntityManagerFactoryMultiple que retorna un

EntityManagerFactory diferente en función de lo que devuelva el método a sobrescribir getNombre.

http://foros.seresco.red/desarrollo/viewtopic.php?f=5&t=182&p=302#p302

Soporte a Navegadores• Se soporta Internet Explorer 9• Se soporta mejor Internet Explorer 6

Drag & Drop

Favoritos