Bloqueo optimista en SAPUI5

¿Cómo manejar las operaciones transaccionales en SAPUI5? Esta es una cuestión central que debería abordarse en cada fase de diseño de la arquitectura. 

Ya me ha pasado en varios clientes (por no decir en la mayoría) que cuando sacamos este tema sobre los bloqueos, y les cuento las posibilidades que ahora explicaré, siempre me dicen lo mismo “como en SAP, como en SAP, sin que se pueda editar” y me miran como si estuviera loco por sugerirle otra opción de bloqueo.

Tras este primer impacto y tras algunas explicaciones suelen ir entrando en razón, así que espero que a partir de ahora, con este post, ese primer impacto sea algo más suave ;-D.

Así que por un lado tenemos el bloqueo pesimista: es cuando se mantiene un bloqueo exclusivo mientras se edita un registro. Para el usuario final, parece que no puede comenzar a editar un registro hasta que la persona que lo está editando libera el bloqueo.

Y luego tenemos el escenario que quiero cubrir en este post, el enfoque de bloqueo optimista (en este caso con manejo de Etags): dentro de una operación de actualización, el backend no bloqueará los datos aunque otros usuarios los estén editando. En cambio, los datos se verificarán antes de actualizar y asegura que la operación (CREAR, ACTUALIZAR) se realizará en la última versión de la entidad.

Y qué es esto del ETag, pues se trata de una marca que en la lectura de la entidad nos envía el servicio de backend a través de la respuesta HTTP al cliente. Una vez que una aplicación SAPUI5 solicita una ACTUALIZACIÓN, el valor de ETag debe enviarse de vuelta al servidor a través del encabezado IF-Match.

Antes de ejecutar cualquier operación, el servicio backend compara el valor transmitido con el valor actual de la base de datos. Si coinciden, se ejecutará la operación, ya que valida que la versión que se está editando es la última existente. De lo contrario, se generará un error HTTP (412 – Condición previa fallida). Debido a este mecanismo, el cliente recibe una notificación de que existe una versión «más nueva» de la entidad.

SAP Gateway y UI5 admiten el manejo de ETags.  En este post, quiero centrarme en el manejo de la interfaz de usuario para un bloqueo optimista y no en cómo configurar su SAP Gateway para implementar la verificación de ETags, seguramente lo veamos en un futuro.

Si se realiza la configuración del backend, no hay ningún esfuerzo adicional dentro de la interfaz de usuario en términos de mantener el ETag o enviarlo de vuelta al backend. ¡El modelo oData se encarga de esto!

Sin embargo, deberíamos notificar al usuario si falla una actualización, es decir, deberíamos implementar una notificación de que una versión más reciente estaría disponible, y así el usuario tiene la posibilidad de elegir entre actualizar a la versión más reciente o sobrescribir la entrada del backend con sus cambios.

Por lo tanto, tal y como hemos indicado anteriormente, a la hora de tratar de actualizar el registro debemos contemplar la posibilidad de recibir un 412 y actuar frente a ello para indicar al usuario lo que está ocurriendo:

Es decir, es posible que un usuario dado, sobrescriba cualquier versión de la entidad en el servidor usando el valor “*” de ETag y en ese caso, no habrá una verificación de condiciones previas en el backend.

Y hasta aquí el post de hoy, espero que os sirva para entender otro tipo de bloqueo a la hora de gestionar la simultaneidad en escenarios multiusuario. Solo os queda pelearos con el cliente 😉

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Blog de WordPress.com.

Subir ↑

A %d blogueros les gusta esto: