¿Cómo gestionar las transacciones?
Formulario: con bloqueo blando
Un formulario por defecto tiene bloqueo blando, lo que permite que múltiples usuarios puedan realizar modificaciones sobre el mismo registro. El bloqueo se realiza a nivel de campo. Cuando se crea la primera línea de un plural Velneo se encarga de abrir una transacción para crear el registro del formulario, que es la maestra del plural. Las altas de las líneas de un formulario abierto con bloqueo blando generan transacciones independientes, una para cada línea de detalle.
Formulario: con bloqueo duro
Cuando un formulario es abierto desde un proceso que tiene una transacción abierta, se abre con bloqueo duro, y el registro no puede ser abierto por ningún otro usuario, ni siquiera en modo lectura, hasta que finalice la transacción. Cuando se produce esta situación las operaciones de las altas de líneas se integran en la transacción principal que estará abierta hasta que finalice el proceso.
Proceso: transacciones independientes
Cuando desde un proceso principal que no tiene abierta transacción ejecutamos otros procesos que sí transaccionan, esos procesos generarán transacciones independientes.
Proceso: transacción única
Cuando desde un proceso principal que sí tiene una transacción abierta ejecutamos otros procesos, si estos procesos generan nuevas operaciones, dichas operaciones se integrarán dentro de la transacción del proceso principal que es heredada por los procesos llamados. De esta forma se genera una única transacción que engloba todas las operaciones de todos los procesos.
Si el proceso principal no transacciona pero nos interesa agrupar todas las operaciones de todos los procesos que vayan a ser llamados podemos generar una transacción de forma sencilla ejecutando el comando de instrucción "Forzar transacción".
Función: independiente en 1º plano
Cuando desde un proceso en primer plano ejecutamos funciones, aunque el proceso tenga una transacción abierta, las funciones generarán transacciones independientes.
Esto nos puedo ser de utilidad para evitar que se generen todas las operaciones dentro de una única transacción.
Función: transacción única en 3º plano
Cuando desde un proceso en tercer plano ejecutamos funciones, todas las operaciones generadas por las funciones se integrarán dentro de una transacción única para todos los procesos y funciones lanzados desde el proceso principal ejecutado en el servidor.