Skip to main content

Command Palette

Search for a command to run...

Session State en Oracle APEX: qué es, cómo funciona y cuándo se actualiza

Published
4 min read
Session State en Oracle APEX: qué es, cómo funciona y cuándo se actualiza

Uno de los conceptos más importantes —y también más mal entendidos— en Oracle Application Express es el Session State.

Muchos errores en aplicaciones APEX aparecen por asumir que los valores de los items de página están siempre sincronizados con la base de datos o con el navegador. En realidad, APEX funciona con una capa intermedia llamada Session State.

Entender esto cambia completamente la forma en que depurás una aplicación.

¿Qué es el Session State?

El Session State es el mecanismo que utiliza APEX para almacenar los valores actuales de los items de una aplicación durante una sesión de usuario.

Cada vez que un usuario interactúa con la aplicación, APEX guarda los valores de los items en memoria (y en tablas internas de APEX) asociados a:

  • la aplicación

  • la página

  • el item

  • la sesión del usuario

En otras palabras:

El Session State es la representación en el servidor de los valores actuales de los items de una página.

Esto significa que el valor que ves en pantalla no siempre es el mismo que APEX tiene guardado en Session State.

Dónde se almacena realmente

Internamente, APEX guarda el Session State en tablas del esquema de APEX, principalmente:

  • WWV_FLOW_DATA

  • WWV_FLOW_SESSION_STATE

Estas tablas almacenan pares nombre / valor de cada item.

Ejemplo conceptual:

Session Item Valor
123456 P1_CLIENTE_ID 45
123456 P1_TOTAL 150000

Esto permite que APEX pueda:

  • ejecutar procesos

  • renderizar regiones

  • evaluar condiciones

  • ejecutar validaciones

sin depender directamente del navegador.

Cuándo se actualiza el Session State

Aquí está el punto donde muchos desarrolladores se equivocan.

El Session State NO se actualiza automáticamente cada vez que un usuario escribe algo en un campo.

Solo se actualiza cuando ocurre alguno de estos eventos.

1. Submit de página

El caso más común.

Cuando el usuario presiona un botón con acción:

Submit Page

APEX envía todos los valores de los items al servidor y actualiza el Session State.

2. Dynamic Actions con "Submit Page Items"

Si utilizás una Dynamic Action que ejecuta PL/SQL o Ajax, solo los items incluidos en:

Items to Submit

se envían al servidor.

Si olvidás agregar un item aquí, el servidor seguirá viendo el valor viejo.

Este es uno de los errores más comunes en APEX.

3. Procesos que modifican Session State

APEX también permite actualizar Session State manualmente usando:

APEX_UTIL.SET_SESSION_STATE('P1_ITEM', 'VALOR');

Esto se usa mucho en:

  • procesos PL/SQL

  • APIs

  • integraciones

4. Computations

Las Computations de página o aplicación también pueden modificar el Session State.

Por ejemplo:

  • Before Header

  • After Submit

Un error típico causado por Session State

Supongamos esta situación:

  1. El usuario escribe 100 en P1_TOTAL

  2. Una Dynamic Action ejecuta un proceso PL/SQL

  3. El proceso lee :P1_TOTAL

Pero olvidaste poner P1_TOTAL en Items to Submit.

Resultado:

El proceso ve el valor viejo, por ejemplo 50.

Esto provoca comportamientos aparentemente inexplicables.

Cómo depurar problemas de Session State

APEX incluye herramientas para inspeccionarlo.

La más útil es:

Sesion → Ver Estado de la sesion

Desde el Developer Toolbar podés ver todos los valores actuales de la sesión.

Esto permite verificar rápidamente si el problema está en:

  • el navegador

  • el Session State

  • el proceso PL/SQL

Cuándo conviene limpiar el Session State

A veces los valores quedan persistidos y generan comportamientos inesperados.

Podés limpiar el Session State usando:

  • Procedimiento CLEAR_SESSION_STATE

Esto es especialmente importante en páginas que funcionan como formularios reutilizables.

Regla mental para trabajar con APEX

Una regla útil es pensar así:

El navegador muestra datos.

El servidor trabaja con Session State.

Si ambos no están sincronizados, tu aplicación tendrá errores difíciles de detectar.

El Session State es el corazón del modelo de ejecución de Oracle Application Express.

Comprender cuándo se actualiza permite:

  • evitar bugs difíciles de rastrear

  • diseñar Dynamic Actions correctamente

  • optimizar procesos PL/SQL

  • depurar aplicaciones mucho más rápido

Si desarrollás en APEX y todavía no dominás este concepto, es muy probable que estés perdiendo tiempo depurando problemas que en realidad son simples desincronizaciones del Session State.

11 views