Wednesday 21 March 2012

Curso ADF 11g–Parte 6

Tema : Capa ADF Model

Si ha seguido los post anteriores notará que estamos en la etapa de construcción de Interfaz de usuario. Sin embargo antes de construir las páginas de la aplicación debemos comprender una de las capas previas que tiene el framework ADF denominado ADF Model y que permite exponer los componentes de negocio hacia la capa de Vista.

Requerimiento:

  • Oracle Jdeveloper 11g. 11.1.1.3
  • Oracle Database Express 11g
  • Haber culminado la parte 5 del tutorial.

Capítulos Anteriores

Parte 1: Creación del Modelo de Datos.

Parte 2: Creación de Componentes de Negocio

Parte 3: Personalización de Entidades

Parte 4: Personalización de View Objects.

Parte 5: Lógica en el Módulo de Aplicaciones

Opcional :

Si no culmino los capítulos anteriores y quiere empezar desde este capítulo, puede descargar el siguiente código para continuar el curso.

Código previo.

Introducción.

Como lo comentamos inicialmente, el framework cuenta con una capa que sirve de interfaz de los componentes de negocio. Esto permite un bajo acoplamiento entre la capa de negocio y capa web que desarrollaremos más adelante. De esta manera no importa la manera que se implemente la capa de negocio (ADF BC,EJB,Java Beans) la capa de Vista siempre accederá de una manera común a los componentes de negocio. Un Imagen que nos ayuda a ilustrar esto se muestra a continuación :

 

 

Note que en las capas inferiores podemos usar distintas tecnologías para implementar los servicios de negocio. En nuestro caso, estamos usando ADF Business components, pero se podría usar otra tal como se muestra en la figura.

La capa de Model  sirve como un traductor, que “traduce” cualquiera de las tecnologías inferiores en unos componentes comunes. De esta forma la capa Controller y View no se enteran como se ha implementado las reglas de negocio sino que simplemente interactúan con los componentes que ofrece la capa Model.

La capa de Model en ADF tiene la siguiente arquitectura.

 

 

 image

 

Business Service :  Esto esta compuesto por los componentes de negocio que hemos implementado en los capítulos anteriores con los ADF Business Componentes.

DataControl : Es la interfaz que expone los componentes de negocio que tiene los business service. Básicamente expone los componentes que hemos “publicado” en el módulo de aplicación.

Bindings: Para que una página pueda acceder a datos necesita disponer de “variables” que  permitan accedan a dicha información. Esto se soluciona en ADF por medio de bindings (“enlaces”) que pueden ser accedidos por las páginas para obtener información.

 

Bien, veamos un ejemplo de como identificar estos elementos.

 

1. Sobre el proyecto ViewController hagamos clic derecho y elija la opcion Nes.

image

 

2. Elija la opción JSF y pulse OK.

image

 

3. Elijamos los datos de la página tal como se muestra a continuación. Tenga en cuenta los siguientes datos :

Nombre : consultaCliente.jspx

Directory: <RUTA_DEFAULT>/pages.

Los demás valore se dejan por default.

Los conceptos asociados a las páginas JSF los abordaremos con más detalle cuando lleguemos al post asociados a las interfaces de usuarios.

Pulse OK*

image 

 

4. Se generó la página JSF de consulta de Clientes. Bien lo primero que vamos a analizar es el componente DataControl, si se fija existe una region DataControls. Expandalo para conocer nuestro primer tipo de componente denominado Data Control.

 

 image

5. Puede notar que en la sección de DataControls se exponen las vistas que hemos desarrollado en las lecciones anteriores. En este punto es importante recordar que el data control solo expone referencias a las vistas y métodos, no son las implementaciones en si, sino referencias, recuerde que el data control funciona como una interfaz hacia los componentes de lógica de negocio. También,  note que se exponen que los métodos que se implementaron en el anterior post.

image

6. El segundo tipo de compontes se llama bindings y aparecen cuando las paginas tienen acceso a datos.

Como hemos creado una pagina en blanco, vamos a incluirle una consulta de clientes para identificar este tipo de componentes. Lo que hacemos es arrastrar la referencia a la vista ClienteVO1 hacia la página creada. Elijamos la opción Form | ADF Form tal como se muestra a continuación.

image

 

7. En la ventana, se define los datos a mostrar, seleccione “Include Navigation Control”  que permite incluir botones de navegación entre los datos. Pulse OK.

 

image

 

8. Note que se ha creado un formulario que muestran datos de la vista. Sin embargo, debemos recordar que si una pagina expone datos, es porque existen bindings que recuperan esa información. Comprobemos eso, para eso pulse la pestaña Source en la parte inferior de la página.

 

image

 

9. Aparece los tags que hacen referencia a cada uno de los campos agregados. Sin embargo lo que nos interesa es el valor de la propiedad value. Puede por ejemplo ver  que la propiedad value de  clienteId  tiene la siguiente expresión.

value="#{bindings.ClienteId.inputValue}"

 

image

 

Lo que indica eso, es que el valor que muestra el campo es de un binding llamado ClienteId. Pero donde están los bindings?, para eso hagamos clic en la la pestaña inferior denominado Bindings

 

image

 

10. En esta pestaña se muestran los bindigs que tiene la página. Note que existen tantos bindings como campos se muestran en la página. Esto lo ha creado el asistente.

 

image

 

11. Los componentes ClienteId,Nombre e Email son bindigs del tipo “value bindigs” y son los que obtienen datos. Adicionalmente vamos a ver que se han creado 4 botones que permiten el desplazamiento de datos. Estas operaciones son soportadas gracias a los bindings del tipo “Operation Bindigs”. En este caso los bindigs de este tipo son: First,Previous, Next y Last.

Los value bindigs indicados anteriormente, recuperan su información de otro tipo de bindigs del tipo iterador.En este caso el iterador que se utiliza se llaia ClienteVO1Iterator y es como un cursor que recupera la información de la vista.

12. Bien, veamos la página en funcionamiento para comprobar su funcionamiento. Haga clic derecho sobre la página y pulse RUN.

image

 

13. Note que se muestran los datos de los clientes. Esto se produce porque, como hemos visto existen bindings que soportan esta información.

image

 

14. Si pulsamos el botón Next se recorre al siguiente registro. Esto se debe al uso de los operation Bindigs.

image

 

15. Bien, luego de entender como llegan los datos podemos seguir con los siguientes post donde conoceremos el desarrollo  y refinamiento de las páginas.

 

CODIGO FINAL