APEX 19.2 – Búsqueda por Facetas

Una de las nuevas características más interesantes de APEX 19.2 es Faceted Search. La búsqueda por facetas (o navegación por facetas) se ve con bastante frecuencia en Internet; típicamente en sitios web de tiendas o ventas online. El usuario final puede configurar filtros usando Facetas en el lado izquierdo o superior de la pantalla. Una faceta muestra los posibles valores junto con el recuento de ocurrencias dentro del conjunto de resultados. Después de que el usuario final cambió una faceta, los resultados, las facetas dependientes y los recuentos de ocurrencias se actualizan inmediatamente.

Vamos a probar esta nueva característica. Para ello abrimos el asistente para la creación de Páginas, seleccionamos Informe y luego Búsqueda por Facetas:

Fig. 1: Asistente Crear Página de Búsqueda por Facetas

Después que elegimos la “Búsqueda por Facetas” y de configurar los atributos habituales, como el nombre de la página o si deseamos crear una entrada en el menú de navegación, aparece el paso “Origen del Informe”. Aquí seleccionamos de dónde provienen los datos para la página de Búsqueda de Faceta.

Fig. 2: Origen del Informe

Se pueden crear páginas de búsqueda por facetas para tablas o consultas SQL; con orígenes de datos como: Base de Datos Local, Servicio de SQL activado para REST y Origen Web. Para las tablas locales, APEX mantiene una memoria caché de diccionario, que contiene información sobre columnas de tablas, claves foráneas y datos reales. Basado en este caché, APEX puede proponer facetas apropiadas y crearlas automáticamente. Como lo podemos ver en la imagen de abajo.

Fig. 3: Página Búsqueda por Facetas

La Fig. 3 muestra la página de “Búsqueda por Facetas” generada para la tabla EMP. Basada en la memoria caché del diccionario, APEX pudo seguir la relación de clave foránea con la tabla DEPT y crear la faceta con los valores de visualización adecuados. Además, los valores de la columna SAL se distribuyeron en diferentes rangos y se creó una faceta para ingresar el rango de salario. Todas las facetas muestran el recuento de ocurrencias por defecto; los cambios en las facetas conducen a una actualización inmediata de la lista de resultados.

Ahora apliquemos algunos cambios a la página que acabamos de generar. Después de hacer clic en Editar página en la barra de herramientas del desarrollador, el Diseñador de Páginas se abre y muestra los componentes de la página.

Fig. 4: Página de Búsqueda por Facetas vista desde el Diseñador de Páginas

Podemos ver que la página consta de una región de informe clásico, que muestra los resultados de búsqueda, y una región del nuevo tipo de búsqueda por facetas, que contiene las facetas. La región de búsqueda por facetas está vinculada a la región del informe clásico (Fig. 5), y cada faceta está vinculada a una de las columnas de resultados del informe clásico (Fig.6).

Fig. 5: La región de búsqueda por facetas está vinculada a la región de informe clásico.
Fig. 6: Cada faceta está vinculada a una columna del informe

Las facetas se pueden mostrar como diferentes tipos de elementos IU. APEX 19.2 proporciona los siguientes tipos de facetas.

  1. Checkbox (Casilla de Control)
  2. Radio Group (Grupo de Botones de Radio)
  3. Select List (Lista de Selección)
  4. Range (Rango)
  5. Search (Buscar)

La casilla de control, la lista de selección y los grupos de botones de radio se explican por sí mismas: las casillas de control permiten elegir múltiples valores para usarlos en el filtrado de resultados, mientras que los grupos de botones de radio o las listas de selección solo permiten elegir uno de los valores.

La Faceta SEARCH

La faceta Buscar permite al usuario final realizar una búsqueda basada en texto en la lista de resultados. Solo se admite una faceta de tipo Buscar para una región de Faceta por Búsqueda. Las columnas del informe que se usarán para la búsqueda se configuran en la sección Origen dentro de los atributos de la faceta por búsqueda (Fig. 7).

Fig. 7: Configurar columnas de informe para usar en la faceta por búsqueda

Si la columna, a la que se hace referencia en la faceta Search, usa un LOV para mostrar, la faceta Search buscará automáticamente en la columna de visualización de LOV en lugar de la columna de retorno. La faceta Search aparece de manera predeterminada como la primera faceta en la región de Facetas por Búsquedas. Como alternativa, podemos crear un elemento de página del tipo Campo de Texto y usarlo como la faceta Search (Fig. 8).

Fig. 8: Configurar un elemento de texto personalizado como la faceta de búsqueda
Fig. 9: Uso de un elemento de página externo para la faceta Buscar.

La figura 9 muestra una página de búsqueda por Facetas que utiliza un elemento de página personalizado para la faceta de búsqueda.La Faceta RANGO

La Faceta de rango permite filtrar la lista de resultados para valores entre un límite inferior y superior. Una faceta de rango consiste en un LOV con rangos predefinidos para elegir, dos campos de texto para ingresar manualmente el límite inferior y superior, o ambos. Para los rangos predefinidos, se usa la infraestructura APEX LOV normal: por lo tanto, el LOV puede ser un LOV estático, definido en el Diseñador de páginas, o uno dinámico, utilizando una Consulta SQL. En ambos casos, el valor de retorno de LOV debe usar el carácter de canalización (|) para separar los valores superior e inferior. La figura 11. muestra un ejemplo de configuración.

Fig.10: Configuración de LOV para la Faceta de Rango

Las facetas de rango también proporcionan soporte limitado para las columnas DATE y TIMESTAMP.

Los asistentes Crear Página y Crear Aplicación nunca generan facetas de rango para columnas DATE.

Solo se admiten rangos predefinidos; campos de texto o selectores de fecha para elegir manualmente una fecha como límite superior o inferior no es compatible.

Dado esto, una faceta de rango para la columna HIREDATE de la tabla EMP se puede crear manualmente en el Diseñador de Páginas de la siguiente manera:

    1. En el Diseñador de páginas, abrimos el menú contextual del nodo Facetas en nuestra región de Búsqueda por Facetas.
  1. Ingresamos un nombre para la faceta, por ejemplo: PX_HIREDATE y elegimos una etiqueta.
  2. Seleccionamos Rango como el tipo de faceta
  3. Asignamos la faceta a la columna de informe clásico HIREDATE y elejimos FECHA como tipo de datos
  4. En la sección Configuración, desactivamos la Entrada Manual. Esto es obligatorio: la página arrojará un mensaje de error si la entrada manual está activada para una faceta de rango en una columna FECHA.
  5. Ingresamos los valores de LOV. Para las columnas DATE, usamos el “formato de fecha canónico” de YYYYMMDDHH24MISS. Usamos el símbolo de tubería (|) para separar el límite inferior del superior. Ingresamos el valor de visualización según corresponda. Para la columna HIREDATE de la tabla EMP, la definición de LOV podría tener el siguiente aspecto:
    Antes de 1980         |19800101000000
    1980 y 1981              19800101000000|19820101000000
    1982 y 1983              19820101000000|19840101000000
    Después de 1983     19840101000000|

  6. Guardamos los cambios y ejecutamos la página. Ahora debería tener otra faceta que permita filtrar los resultados en la columna HIREDATE.

Con el mismo enfoque, también podemos agregar manualmente más facetas para otras columnas. Lo más importante para cada faceta es típicamente el LOV a usar. Para las facetas buenas y utilizables, esa lista no debería tener demasiados valores.

Atributos de Faceta

El Diseñador de Páginas permite configurar una serie de atributos de faceta (fig. 12). Éstos incluyen:

  • Calcular Recuentos: controla si APEX debe calcular los recuentos de ocurrencias. Si la consulta del informe como tal es muy costosa, y los recuentos de ocurrencias en realidad no son necesarios, puede tener sentido desactivar esto para ahorrar en recursos informáticos. Tenga en cuenta que para ocultar o deshabilitar los valores de faceta sin ocurrencias, los recuentos aún deben calcularse.
  • Mostrar Recuentos: lleva a que los recuentos de sucesos todavía se calculen, pero no se muestren. APEX simplemente deshabilitará u ocultará los valores de faceta sin ocurrencias.
  • Entradas con recuento cero: se pueden ocultar o deshabilitar. Si se elige deshabilitado, APEX siempre puede mostrarlos al final de la lista (Mostrar último).
  • Mostrar seleccionada primero: siempre reordena la lista para mostrar primero todos los valores seleccionados.
  • Máximo de entradas visualizadas: controla cuántas entradas se muestran. Si la faceta contiene más entradas, se agregará un enlace Mostrar más. Al hacer clic en este enlace, se muestra la lista completa.
  • Filtrado del cliente: El filtrado del lado del cliente se puede usar si la lista de selección devuelve más que unos pocos elementos. APEX genera un campo de texto que permite filtrar la lista de elementos de facetas a un pequeño conjunto de resultados.
  • Las configuraciones de Faceta Reducible y Reducida Inicialmente: controlan cómo se muestra la faceta en la carga de la página.


Atributos de la región de Búsqueda por Facetas 

Algunos atributos de búsqueda por facetas afectan a todas las facetas y, por lo tanto, se configuran en el nivel de región de búsqueda por facetas (fig. 12).

Fig. 12: Atributos de la región de Búsqueda por Facetas.

El atributo Cambios de facetas por lotes controla cuándo se actualizan las facetas y el Informe clásico, después de realizar un cambio en una de las facetas. De manera predeterminada, el modo por lotes está desactivado y la actualización se realiza de inmediato. Cuando se activa, se muestra un botón después de que se han cambiado las facetas. Al hacer clic en el botón, se actualiza el informe y las facetas.

Fig. 13: Búsqueda por facetas con cambios de lotes activados.

El atributo Mostrar facetas actuales controla si las facetas activas actualmente se muestran como un resumen sobre todas las facetas o en una posición específica de la página (fig. 14).

Fig. 14: La opción Mostrar facetas actuales está habilitada y en acción.

La nueva función de búsqueda por facetas en APEX 19.2 permite a los desarrolladores proporcionar navegación por facetas completamente funcional con un mínimo esfuerzo. APEX realiza todo el trabajo de bajo nivel de coordinación de informes y actualización de facetas, genera las consultas SQL necesarias para calcular los recuentos e integra las facetas con la región del informe. Los desarrolladores simplemente declaran la fuente de datos del informe, las facetas que se usarán con las listas de valores para obtener elementos de facetas.

Fuente original del artículo: APEX 19.2 – Faceted Search 

Publicado por Ing. Clarisa Maman Orfali

Clarisa es Oracle ACE Director, con más de 27 años de experiencia como desarrolladora, docente, autora y consultora en Tecnologías de la Información. Clarisa es de Argentina que vive y trabaja en Irvine, California, en los Estados Unidos. Ella es autora de los primeros tres libros de Oracle APEX. También es co-fundadora del Grupo de Usuarios de Oracle de Argentina (AROUG) y se ha especializado los últimos 13 años en el desarrollo de aplicaciones web con Oracle Application Express (APEX).

Deja un comentario

A %d blogueros les gusta esto: