1 / 86

Curso avanzado de Fundeweb

Curso avanzado de Fundeweb. Índice de contenidos. Ciclo de vida JSF Immediate ="true" Procesamiento parcial Regiones ajax Propiedad process CMIS y Apache Chemistry Birt - Informes Intalio y Fundeweb Genética Patrones de diseño J2EE Fundeweb 2.0. JSF (Java Server Faces).

zwi
Download Presentation

Curso avanzado de Fundeweb

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso avanzado de Fundeweb

  2. Índice de contenidos • Ciclo de vida JSF • Immediate="true" • Procesamiento parcial • Regiones ajax • Propiedad process • CMIS y Apache Chemistry • Birt - Informes • Intalio y Fundeweb • Genética • Patrones de diseño J2EE • Fundeweb 2.0

  3. JSF (Java Server Faces) • Ciclo de vida JSF: • Reconstrucción del árbol de procesamiento con los datos introducidos por el usuario. • Aplicación de los valores reconstruidos en el servidor. • Procesamiento de eventos. • Validación de valores introducidos. • Actualización del modelo. • Invocar aplicación (calcular respuesta, redirección, etc…). • Renderizado de la respuesta al cliente.

  4. JSF (Java Server Faces) Aplicación de los valores reconstruidos en el servidor. • Reconstrucción del árbol de procesamiento con los datos introducidos por el usuario. • Procesamiento de eventos • Validación de valores introducidos. Invocar aplicación Actualización del modelo. Renderizado de la respuesta

  5. JSF (Java Server Faces) • Reconstrucción del árbol de procesamiento • Tras un submit se restaura el árbol de contenido. • El controlador examina el contenido y crea los componentes que se requieran por el contenido recibido. • El controlador examina el contenido recibido para saber si es una nueva vista o está en una ya creada de antemano. • El controlador almacena los ID de las vistas que ha recibido para saber qué objetos debe inicializar y cuales recargar.

  6. JSF (Java Server Faces) • Aplicación de los valores reconstruidos en el servidor • Cada componente creado en el paso anterior obtiene su valor de la petición recibida en el paso anterior. • Los valores recibidos se convierten a los esperados por sus respectivos componentes. • Si algún valor no puede convertirse se envía un error de conversión en esta fase. • Si un componente es marcado como inmediato, se asigna el valor y se pasa a la etapa de validación antes de tratar el resto de componentes. • Si hay algún evento enconlado hasta el momento, JSF lo reenvía en esta fase.

  7. JSF (Java Server Faces) • Procesamiento de eventos. • En este punto han podido lanzarse errores de conversión de tipos o de validación en caso de valores inmediatos. • Estos eventos se capturan y se le indican al controlador. • El controlador redirigirá el flujo hacia un estado seguro devolviendo un evento de error en caso de proceder.

  8. JSF (Java Server Faces) • Validación de valores introducidos. • Se procede a comprobar si los valores introducidos cumplen las restricciones definidas en la aplicación. • Estos eventos se capturan y se le indican al controlador. • El controlador redirigirá el flujo hacia un estado seguro devolviendo un evento de error en caso de proceder. • Se ejecutarán los validadores estándar y los definidos por el usuario en el código fuente. • En caso de no cumplirse alguna restricción se lanzará un evento de error y se redirigirá el flujo.

  9. JSF (Java Server Faces) • Actualización del modelo. • Una vez validados los datos se procede a actualizar el modelo. • Se copian los datos en las clases Java que los contienen pasando la información a la parte de control de la aplicación. • En este punto los valores copiados son válidos desde el punto de vista de la corrección, aunque pueden ser inválidos para la lógica de negocio.

  10. JSF (Java Server Faces) • Invocar aplicación. • Con los valores introducidos procedemos a invocar a la lógica de negocio de la aplicación. • Tras procesar los datos pasaremos a generar una respuesta o bien a un estado de error. • En este punto se persistirán los datos, calculará la redirección, se harán las llamadas a servicios externos, etc…

  11. JSF (Java Server Faces) • Renderizado de la respuesta al cliente. • Se genera la página de respuesta al cliente en base al resultado obtenido en la fase anterior. • Se tratará el árbol de respuesta para mostrar los elementos que así sean necesarios como sus valores. • En caso de haberse producido un error deberá notificarse al cliente en esta redirección.

  12. JSF (Java Server Faces) • Immediate = true • Confundido con la funcionalidad que permite ajax usando "ajaxSingle = true". • Adelanta la fase de validación sólo a los campos con immediate=true. • En caso de funcionar correctamente valida el resto de componentes y los envía. • Como vemos, en cualquier caso, si todo funciona correctamente se envían todos los valores.

  13. JSF (Java Server Faces) • Immediate = true • ¿Qué diferencia hay con ajaxSingle? • Immediate true manda siempre todos los valores. • ajaxSingle sólo manda el/los valores indicados para que se envíen por lo que el resto de valores no actualizarán el modelo. • En general en Fundeweb se aconseja usar ajaxSingle frente a immediate ya que el uso en la mayoría de casos es para evitar la validaciones de determinados campos, que con immediate no se evita.

  14. Índice de contenidos • Ciclo de vida JSF • Immediate="true" • Procesamiento parcial • Regiones ajax • Propiedad process • CMIS y Apache Chemistry • Birt - Informes • Intalio y Fundeweb • Genética • Patrones de diseño J2EE • Fundeweb 2.0

  15. Regiones ajax • Las regiones ajax nos permiten englobar una parte del código para que se envíe en el submit. • Nos aporta flexibilidad a la hora de valorar qué componentes queremos que se actualicen en el modelo. • Es importante que los elementos que hacen submit dentro de una región ajax sean de tipo ajax. • Un error común es incorporar un h:commandButton dentro de una región ajax. El resultado no será el espardo pues h:commanButton hará submit de todo el formulario ignorando la región.

  16. Regiones ajax • Ejemplo de código: • <h:inputText id="input1" value="#{….}" /> • <a:region> • <h:inputText id="input2" value="#{….}" /> • <h:inputText id="input3" value="#{….}" />  • <a4j:commandButton id="ajaxBut" value="Submit ajax" /> • </a:region> • <h:commandButton id="jsfBut" value="Submit"  /> • Si pulsaramos el botón ajax sólo se enviarían "input2" e "input3" • Pulsando el botón JSF se envían todos los input.

  17. Propiedad Process • Esta propiedad se utiliza en componentes con la propiedad ajaxSingle. • Modifica el comportamiento para, en el submitajax, no solo envía el dato marcado con ajaxSingle, sino todos los componentes que se encuentren en dicha etiqueta. • <h:inputTextvalue="#{….}"id="texto1">    <a:supportajaxSingle="true" process="email" event="onblur" /> </h:inputText> <h:inputTextareavalue="#{….}"id="desc" /> <h:inputTextvalue="#{….}"id="email">    <a:supportajaxSingle="true" process="name" event="onblur" reRender="someOut"/> </h:inputText> • En este caso se enviaría en el evento oblur los input "texto1" e "email".

  18. Índice de contenidos • Ciclo de vida JSF • Immediate="true" • Procesamiento parcial • Regiones ajax • Propiedad process • CMIS y Apache Chemistry • Birt - Informes • Intalio y Fundeweb • Genética • Patrones de diseño J2EE • Fundeweb 2.0

  19. CMIS (Content Management Interoperability Services) • Actualmente existen diferentes sistemas para la gestión documental • Alfresco • dotCMS • eXo Platform • EMC Documentum • El principal problema: API's de acceso no unificadas. • CMIS: Estándar de comunicación con gestores documentales.

  20. CMIS (Content Management Interoperability Services) • CMIS unifica la gestión de los contenidos en un punto de acceso común a diferentes gestores documentales. • Establece dos canales de comunicación: • SOAP • REST (Atom Pub) • Permite al programador abstraerse de la implementación concreta bajo los servicios que se exponen. • Admite extensiones para peculiaridades de los gestores documentales. • Ej: Aspectos en Alfresco.

  21. Apache Chemistry • Provee una implementación del estándar CMIS • Facilita aún más al programador la interacción con el gestor documental. • Abstrae de los detalles del protocolo de comunicación concreto utilizado (Soap, REST) • Amplia la abstracción de las extensiones que soportan el protocolo de comunicación y las integra con la API propia.

  22. Apache Chemistry • Ejemplo de uso

  23. Índice de contenidos • Ciclo de vida JSF • Immediate="true" • Procesamiento parcial • Regiones ajax • Propiedad process • CMIS y Apache Chemistry • Birt - Informes • Intalio y Fundeweb • Genética • Patrones de diseño J2EE • Fundeweb 2.0

  24. Birt • Generador de informes basado en eclipse. • Compuesto por dos componentes principales: • Editor de Informes. • Generador de Informes (BirtUM) • Pretende abarcar el mayor rango de componentes disponibles a la hora de realizar un informe. • Centrado en permitir diseñar fácilmente informes de manera gráfica. • Objetivo: Descargar a los desarrolladores del trabajo de plasmar en un informe las especificaciones detalladas del cliente.

  25. Birt: Editor de informes • Herramienta integrada dentro del IDE Eclipse • Estructura enfocada al diseño de informes de manera visual. • Provee diferentes maneras de acceder a los datos: • Directamente sobre BBDD. • A través de csv o XML. • Vía WebServices. • … • Define una manera clara de filtrar los datos que queremos tratar en un momento determinado.

  26. Birt: Editor de informes • DataSources • Un DataSource es la propia fuente de datos. • Definimos su tipo y su manera de conectar. • Nos permite acceder a la información que necesita el informe. • DataSet • Es un subconjunto de los datos que provee el DataSource. • Sobre ellos podemos realizar operaciones en el informe. • Podemos definir tantos DataSet's como subconjuntos queramos.

  27. Birt: Editor de informes • DataSet • Permite crear datos adicionales. • Permite calcular valores en base a los datos incluidos en el.

  28. Birt: Editor de informes • Parámetros: • Birt permite que se definan parámetros de entrada en el informe. • Estos parámetros pueden tener varias funciones: • Configurar aspectos generales del informe. • Proveer el propio origen de los datos en los que se basará el DataSource (por ejemplo en informes a partir de XML). • Los parámetros son recogidos por el motor de informes y se procesan antes de la generación del mismo.

  29. Birt: Editor de informes Árbol de orígenes de datos Editor de informes Propiedades de los elementos Árbol de elementos

  30. Birt: Editor de informes • Árbol de orígenes de datos: • Contiene todos los componentes que aportan datos para generar el informe: • DataSource: Origen real de los datos. • DataSet: Agrupación de datos. • DataCubes: Agrupación cruzada de datos. • Parámetros del informe: Parámetros de entrada del informe. • Variables: Variables que se usarán durante la generación del informe. • A partir de los componentes dados de alta en esta vista, se podrán rellenar las estructuras de datos del informe.

  31. Birt: Editor de informes • Editor de informes • Vista encargada de permitirnos diseñar el informe. • Permite el diseño visual o directamente sobre código. • Pose una vista "Master Page" para definir la estructura general de todas las páginas. • Permite introducir scripts a ejecutar según determinados eventos. • Permite editar visualmente el informe. • Permite visualizar una vista previa del resultado, siempre que sea posible.

  32. Birt: Editor de informes • Árbol de elementos • Añade a la información del árbol de orígenes de datos la estructura del informe. • Muestra de una manera clara y ordenada cómo se "pintan" los componentes del informe. • Establece las dependencias entre elementos. • Nos permite visualizar los scripts o librerías añadidas al informe.

  33. Birt: Editor de informes • Propiedades de los elementos • Esta vista permite ajustar parámetros de cada uno de los elementos del informe. • Nos permite asignar componentes gráficos a orígenes de datos. • Permite realizar filtrados • Permite establecer condiciones sobre los componentes. • Ej: Decidir si se pinta o no dependiendo de un valor. • Permite modificar el aspecto de los componentes. • Cada componente, además de la configuración general, añade su configuración propia.

  34. BirtUM • Componente de ATICA para la generación de informes Birt. • Expone dos interfaces: • Informes BBDD • Informes XML • Ambas soportan paso de parámetros al servidor. • Los informes BBDD devuelven el informe de dos maneras: • URL • Array bytes. • Los informes XML sólo devuelven el informe como Array de bytes.

  35. BirtUM • La generación de informes XML puede devolver dos posibles resultados: • PDF • XLS (multi hoja) • Permite depurar fácilmente con SoapUI la generación de informes desde un cliente. • Importante configurar timeouts adecuados para los test.

  36. Ejercicio Birt • Haciendo uso del editor de informetBirtrealizar el diseño de un informe acorde la plantilla proporcionada. • Usar el fichero xml proporcionado como entrada de datos. • Diseñar con Birt el informe. • Previsualizar el informe en PDF.

  37. Ejercicio Birt • Pasos a seguir: • Crear un proyecto Birt y un fichero de informes vacío. • Definir la fuente de datos (fichero XML). • Modificar el "master page" para definir encabezado y pie de página. • Crear DataSet que agrupe todos los libros con su conteido. • Crear una tabla que muestre ese DataSet. • Crear un DataSet que contenga el precio de los libros y dos columnas calculadas: • Libros con precio superiro a 10€ • Libros con precio inferior a 10€ • Ojo: Hacer uso de propiedades calculadas y filtrado.

  38. Ejercicio Birt • Pasos a seguir: • Crear Grid para contener el texto necesario. • Insertar gráfico de barras y definir condiciones para que cuente los libros que hay por autor. • Probar que el informe se imprime correctamente.

  39. Índice de contenidos • Ciclo de vida JSF • Immediate="true" • Procesamiento parcial • Regiones ajax • Propiedad process • CMIS y Apache Chemistry • Birt - Informes • Intalio y Fundeweb • Genética • Patrones de diseño J2EE • Fundeweb 2.0

  40. Intalio y Fundeweb • Intalio es un framework de desarro de procesos de negocio. • Permite programar de manera ágil flujos de proceso. • Nos habilita para modelar el comportamiento de un negocio concreto. • Flujo documental: creación, validación, firma, archiado. • Flujos industriales: recogida material, fabricación, envasado, empaquetado, distribución. • Flujos administrativos: creación solicitud, revisión de responsable, validación por supervisión, aprobación. • Etc …

  41. Intalio y Fundeweb • Basado en la notación BPMN para modelar procesos de negocio. • Provee un entorno para desarrollar, compilar y ejecutar nuestros propios procesos.

  42. Intalio y Fundeweb • A grandes rasgos BPMN:

  43. Intalio y Fundeweb • ¿Qué nos permite Intalio? • Definir y gestionar: • Roles de ejecución. • Variables. • Interacción entre tareas. • Errores o situaciones no permitidas • Notificaciones. • Conectarse con entidades externas: • Bases de datos. • Servicios Web.

  44. Intalio y Fundeweb • Intalio provee una api para la interactuar con él desde una aplicación externa. • Permite ligar aplicaciones existentes con el flujo de un determinado proceso. • Soporta intercambio de datos vía XML. • Permite aplicar los mecanismos de autenticación y autorización. • Permite la personalización detallada del Front-End de la aplicación.

  45. Intalio y Fundeweb • ¿Cómo interactúa con Fundeweb? • La API de Intalio permite: • Enviar y recibir información externa través de XML. • Gestionar los procesos. • Autentica al usuario que se pretende contectar. • Componente de seguridad: • Permite la gestión de roles y permisos (autorización). • Carga en Intalio el perfil del usuario que intenta ejecutar una determinada acción.

  46. Intalio y Fundeweb • Flujo de comunicación

  47. Índice de contenidos • Ciclo de vida JSF • Immediate="true" • Procesamiento parcial • Regiones ajax • Propiedad process • CMIS y Apache Chemistry • Birt - Informes • Intalio y Fundeweb • Genética • Patrones de diseño J2EE • Fundeweb 2.0

  48. Genética • Es un generador automatizado de PAO's para Fundeweb. • Genera las clases y estructuras Java necesarias para realizar llamadas a procedimientos. • Actúa sobre la base de datos ORACLE. • Basa su funcionamiento en el archivo de especificación de ORACLE. (spec.sql). • Analiza dicho fichero y devuelve como resultado la estructura Java que se ajusta a lo indicado.

  49. Genética: Configuración • Configuración de spec.sql • Mediante este fichero indicamos los procedimientos a los que vamos a llamar. • Genética lo usa de base para generar la infraestructura Java equivalente.

  50. Genética: Configuración • Configuración del Datasource • Debemos indicarle a genética dónde se encuentra la base de datos sobre la cual queremos actuar. • Para ello lo indicamos en el fichero: • spec-parser.properties • Una vez indicado, Genética incluirá dicha especificación en los EJB generados en cargados de la ejecución de lo indicado en el fichero spec.sql.

More Related