Trabajando con Listas de Valores en JDev11g - Parte 2

Tenia desde hace bastante tiempo este articulo planeado, pero una combinación de carga laboral, más otras actividades tienen mi horario bastante ajustado, sin embargo el blog es algo que por ahora no voy a dejar de un lado y espero continuar de manera activa la publicación de artículos.

Dejando un poco la introducción y entrando al tema, vimos en el post pasado como crear listas de valores. Esta vez vamos a ver como podemos asociar listas de valores a partir del modelo, lo cual se llama Listas de Valores en Cascada. Esta es una funcionalidad asociada con requerimientos tipo País/Estado/Ciudad, Ordenes/Detalle/Producto, etc.

Para este ejemplo vamos a tomar el esquema HR utilizando las tablas Locations, Regions y Countries. Y el objetivo final es el de crear/editar las distintas ubicaciones de los departamentos en este caso basándonos en la región, luego al país y finalmente al estado.

Nuestra estructura objetivo a nivel del modelo tiene los EOs y VOs que se crean con base en el modelo de datos a través del asistente. Adicionalmente se necesitan crear 2 VOs de lectura basados en un Query, estos son, FilterRegions y FilterState, los cuales cumplen la misión de filtrar las listas de valores con base en el elemento seleccionado.

Una características importante de los VOs que creamos para filtrar es que estos van a tener una clausula Where asociada que se implementa como una ViewCriteria, lo cual lo vimos en la primera parte de esta serie. Nuestros 2 VOs de filtrado quedan así

Ahora dentro del VO de Locations, lo que hice fue crear un atributo nuevo para efectos del demo llamado Region, este atributo va a filtrar las regiones con base en el regionID, la cual tiene varios países y luego miramos los estados del país. La parte importante aqui es que cuando creamos la Lista de valores para el país (CountryId) y estado(StateProvince) tenemos que primero asociar el VO de filtrado respectivo así

luego se edita la relación del View Accessor en donde vamos a seleccionar la viewCriteria que tiene el VO que filtra para así mapear la variable de la clausula where con uno de los atributos del VO Locations así:

Hacemos los mismo para el estado y con esto tendríamos el modelo listo. Para la parte del UI lo unico adicional que se tiene que hacer es especificar en las listas de valores las propiedades autosubmit para que así la acción de seleccionar sea enviada al servidor y este re-ejecute el query, la segunda propiedad es PartialTriggers en la cual vamos a especificar sobre que componente la lista de valores va a invocar un recarga (refresh) parcial para que se actualicen los valores con base en los datos del nuevo query que fue ejecutado.


5 Responses to Trabajando con Listas de Valores en JDev11g - Parte 2

Viviana dijo...

He intentado reproducir lo hecho en este artículo y el anterior (que se menciona al comienzo de este) y me ha sido imposible lograr que mi aplicación web aplique los filtros entre regiones y paises. No se si hay algo que se supone obvio que no estoy configurando bien, o está faltando algún detalle importante que no se menciona. Podrías recomendarme algún foro u otras fuentes a consultar? EL manual ADF Developer Guide resulta algo tedioso de a ratos y se me facilitaría tener ejemplos un poco más concretos de lo que quiero lograr. Gracias!

Juan Camilo Ruiz dijo...

Hola Viviana,
Te sale algún tipo de error? Una de las pruebas iniciales es correr el Application Module desde tu modelo, en el cual te puedes asegurar que todo este funcionando bien. En caso de no tener problemas en la parte de modelo te debe estar es faltando alguna configuracion del UI. Configuraste los PartialTriggers?

Espero tu respuesta.

Juan C.

Viviana dijo...

Primero que nada, gracias por la respuesta.
En realidad no me está dando ningún error. El problema que estoy teniendo es que al seleccionar una región, la lista de paises no se filtra por la región. Yo lo que quiero lograr es que, teniendo dos combos, al seleccionar la región en uno ya refresque el de paises con los pertenecientes a la región. La pagina se refresca, pero el filtro no se aplica. Supongo que mi problema es con las bind variables, ya que no aplica los filtros. Estuve leyendo que tengo que poner el mismo nombre de "bind variable" en las dos vistas que relaciono, puede ser eso? La verdad que estoy algo perdida, hace un mes que estoy aprendiendo ADF y ya he logrado varias cosas, pero me he trancado con esto. Quizas me serviría algún consejo de algo medio claro para leer y fijar ideas. Gracias otra vez.

Juan Camilo Ruiz dijo...

Tenemos un viewlet que muestra como hacer la primera parte a nivel del modelo que puedes ver aqui
http://download.oracle.com/otn_hosted_doc/jdeveloper/11/demos/ADFBC_Cascading_LOV/ADFBC_Cascading_LOV.html

Tambien aun tengo el proyecto en mi computador entonces me puedes pasar tu correo y te lo envio si gustas.

Saludos

Juan Camilo

Javier Alexander dijo...

Me encuentro trabajando con el JDeveloper 11g y no me funciona con los pasos propuestos, el video tampoco ilustra de una manera clara la elaboración de estas listas. Agradezco si pueden explicar con el ejemplo de Pais, Departamento, ciudad.
Mil gracias