Manejando el Estado de Sesión de Oracle APEX

Manejando el Estado de Sesión de Oracle APEX

En este post, quiero compartir cómo mantener el valor de un elemento en el estado de sesión. En ocasiones, necesitamos obtener el valor que se ha ingresado en un elemento. Por lo tanto, explicaré cómo conservarlo en la sesión.

¿Qué es el Estado de Sesión?

El estado de sesión permite a los desarrolladores almacenar y recuperar valores para un usuario mientras este navega entre diferentes páginas de la aplicación.

¿Cómo ver el estado de la sesión?

Para ver el estado de la sesión, debes estar en modo desarrollador en el entorno de desarrollo que deseas corregir. En la barra inferior, encontrarás un menú de opciones. Debes seleccionar las siguientes:

  1. Haz clic en “Sesión”.

  2. Haz clic en “Ver el estado de la sesión”.

Esto te redirigirá automáticamente a la siguiente ventana. Si no tienes un elemento en sesión, mostrará el siguiente mensaje: “La página no tiene elementos”.

Como ejemplo, he creado un elemento llamado “Sesion de Articulo” y le he asignado el valor “Este es un ejemplo”. Sin embargo, en la sesión, no se muestra el valor del elemento.

¿Como colocar el valor de un elemento en la Sesión?

Para colocar un elemento en la sesión, debes seleccionar el elemento que deseas modificar. Luego, en el editor de propiedades del mismo, selecciona el atributo “Almacenamiento” y verifica que esté seleccionado “Por sesión (Persistente)”.

El atributo “Usado” tiene dos opciones:

  1. “Siempre reemplazando cualquier valor en el estado de la sesión”: Esta opción permite modificar el valor del elemento en la sesión siempre.

  2. “Sólo cuando el valor de la sesión es nulo”: Esta opción modifica el valor del elemento en la sesión solo cuando el elemento es nulo.

Entre estas dos opciones correspondientes al atributo “Usado”, se recomienda seleccionar “Siempre reemplazando cualquier valor en el estado de la sesión”. Esta opción asegura que el valor de la sesión se actualice cada vez que cambie el valor del elemento. Sin embargo, si solo necesitas asignar un valor al elemento en la sesión cuando este es nulo, se recomienda usar “Sólo cuando el valor de la sesión es nulo”.

Crear acción dinámica para Setear el Valor del elemento en la Sesión

  1. Haz clic derecho sobre el elemento seleccionado.

  2. Haz clic en la opción “Crear acción dinámica”.

  1. Modificar el nombre de la accion dinamica.

  2. Cambia el tipo de acción “Espectáculo” por “Ejecutar código del lado del servidor”.

Luego, procede a agregar los siguientes atributos de la acción “Ejecutar código del lado del servidor”:

  1. Codigo PL/SQL: null;

  2. Articulos para enviar: Selecciona el elemento que necesitas enviar a la sesión, específicamente, el que estamos trabajando.

En la siguiente imagen se puede observar que el valor del elemento se encuentra en la sesión de manera satisfactoria.

¿Cómo cambiar el valor de un elemento en la sesión desde PL/SQL?

En Oracle APEX, puedes modificar el valor de un elemento en la sesión utilizando la función apex_util.set_session_state. Esta función te permite establecer el valor de un elemento en la sesión desde un bloque de código PL/SQL.

La sintaxis de la función es la siguiente:

apex_util.set_session_state( p_name IN VARCHAR2 , p_value IN VARCHAR2 );

Donde:

  • p_name es el nombre del elemento cuyo valor deseas cambiar.

  • p_value es el nuevo valor que deseas asignar al elemento.

Ejemplo:

Supongamos que tienes un elemento llamado P1_ITEM_SESSION y deseas cambiar su valor a ‘Seteando un valor en el estado de la sesión de Oracle APEX’ desde un bloque de código PL/SQL. Aquí te dejo un ejemplo de cómo puedes hacerlo:

BEGIN
APEX_UTIL.SET_SESSION_STATE(
'P1_ITEM_SESSION'
, 'Seteando un valor en el estado de la sesión de Oracle APEX'
);
END;

Ahora bien, de esta manera el valor se encuentra almacenado en la sesión de Oracle APEX, como se puede observar en la siguiente imagen:

Es notable observar en la imagen anterior el valor del elemento en el estado de la sesión. Sin embargo, no se está mostrando en pantalla su valor. Si tu requerimiento es mantener el valor en la sesión y poder visualizarlo en pantalla, realiza los siguientes pasos:

  1. Crea una acción dinámica.

  2. Crea una acción de tipo “Ejecutar código del lado del servidor”, configurando sus atributos:

  • Código PL/SQL: Ingresa el código para establecer el elemento.

  • Artículos para enviar: Coloca el elemento afectado para almacenar su valor en el estado de la sesión.

  • Artículos a devolver: Coloca el elemento afectado para visualizar su valor en la pantalla.

Finalmente, podemos ver el resultado:

Conclusión

En este post, hemos embarcado juntos en un viaje a través del manejo del estado de sesión en Oracle APEX. Hemos proporcionado una guía detallada para mantener y modificar los valores de los elementos mientras el usuario navega por la aplicación.

Desde la comprensión del concepto fundamental del estado de sesión hasta la implementación práctica utilizando herramientas como apex_util.set_session_state en PL/SQL, hemos cubierto una variedad de técnicas para gestionar y visualizar los valores de los elementos de manera efectiva.

Recuerda, el aprendizaje es un viaje, no un destino.

¡Sigamos avanzando juntos en este camino de descubrimiento y crecimiento!

¡Conéctate conmigo en LinkedIn!