Sistema de detección temprana de bloqueos
En la versión 2.3 tenemos disponible un sistema experimental, sólo disponible para bases de datos PostgreSQL, que permite detectar bloqueos antes que se produzca, o de forma heurística estimar los posibles riesgos de bloqueo que pueden existir en un momento dado.
El sistema avisa al usuario cuando se encuentra en una situación que puede derivar en un bloqueo o en un bloqueo potencial, permitiendo a este poder esperar o cancelar la transacción en curso y evitar así congelar la interfaz de usuario mientras exista el bloqueo.
Por ejemplo, si dos usuarios están haciendo un albarán, y los dos intentan reservar un mismo artículo en un mismo almacén, se produce una situación de exclusión mutua sobre la cantidad de stock. Hasta ahora se producía un bloqueo que congelaba la aplicación de uno de los usuarios hasta que el otro acabara el albarán, pero con este nuevo sistema uno de los usuarios (el último en llegar ) será avisado de que si continua e intenta reservar stock en ese momento para ese artículo incurrirá en una situación de bloqueo, permitíendole así esperar, cancelar o si quiere definitivamente caer en el bloqueo.

El sistema antibloqueos se puede controlar desde los scripts utilizando los nuevos métodos de la clase FLApplicationInteface y cuya documentación se puede encontrar en el fichero FLObjectFactory.h del código fuente de AbanQ.
Generalmente la forma más sencilla de utilizar este sistema es cuando se llama al método commitBuffer de la clase FLSqlCursor. A partir de ahora este método se puede llamar con un parámetro booleano que indica que se realize una comprobación de bloqueos si es cierto ( true ):
var cursor = new FLSqlCursor( “albaranaescli” );
cursor.setModeAccess( cursor.Insert );
cursor.refreshBuffer();
…..
…..
cursor.commitBuffer( true ); // Con ‘true’ indicamos que se comprueben bloqueos antes de aceptar cambios
