Transacciones (comandos)

Conjunto de comandos del grupo Básicos.

Cambiar porcentaje realizado del proceso

Comando de instrucción del grupo transacciones que permite pasar el dato del porcentaje realizado del proceso a una barra de progreso.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Fórmula de porcentaje que realiza del proceso

Expresión de tipo fórmula que resuelva el valor del porcentaje realizado del proceso. Dicho valor deberá estar comprendido entre 0 y 100.

Funcionalidad

Permite pasar el dato del porcentaje realizado del proceso a una barra de proceso.

En procesos ejecutados en primer plano, se generará una barra de progreso en la barra de estado de Velneo vClient

En procesos ejecutados en 2º plano (multitarea), pasará el dato a la barra de progreso del panel de procesos en 2º plano.

En procesos ejecutados en 4º plano, se alimentará la barra de tareas que se presenta junto al proceso en el panel de procesos asíncronos.

Comentarios

Este comando habitualmente será usado dentro de un bucle For. En procesos que procesen listas, una forma de calcular el porcentaje realizado del proceso será conociendo el número total de ítems a procesar o iteraciones del bucle y el número de elementos procesados o iteraciones realizadas. La fórmula sería:

round( 100 * elementos_procesados / total_elementos, 0 )

Con el comando cambiar título de la transacción podremos cambiar el texto que se presente junto a la barra de progreso, sustituyendo al nombre del proceso.

Este comando no debemos usarlo en un manejador de evento disparado desde otro con el comando de instrucción de proceso Interfaz: ejecutar manejador de evento ya que no actualizará la barra de progreso. El motivo es que el funcionamiento de los manejadores de evento es un poco especial, ya que paralizan la ejecución de subsiguientes refrescos, con lo que sólo el manejador principal es capaz de hacer ese refresco del progreso.

Ejemplo

Modificamos el campo FCH (Fecha) de todos los registros de la tabla informando del registro modificado cambiando el título de la transacción y cambiando el porcentaje realizado en cada momento.

Cargar lista ( MOV_G@ejemplo_dat, ID, , , ,  )
    Set ( REG_TOT, sysListSize )
    Set ( REG_ACT, 0 )
    Recorrer lista sólo lectura
        Set ( REG_ACT, REG_ACT + 1 )
        Cambiar título de la transacción ( "Modificando movimiento: " + #ID )
        Cambiar porcentaje realizado del proceso ( (REG_ACT * 100) / REG_TOT )
        Modificar campo ( FCH, currentDate() )

Cambiar título de la transacción

Comando de instrucción del grupo transacciones.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Fórmula de texto

Expresión de tipo fórmula que resuelva el título de la transacción.

Funcionalidad

Este comando de instrucción permite cambiar el título de la transacción a lo largo de la ejecución de un proceso transaccional.

Cuando ejecutamos un proceso transaccional, en Velneo vAdmin, por defecto se muestra el valor que le hayamos dado a la propiedad nombre del proceso o función transaccional. Por lo tanto, si desde el propio proceso queremos cambiar el título de la transacción, tendremos que hacerlo antes de ejecutar los comandos que realicen operaciones de escritura en disco ya que, cuando comienza el primer comando que implica escritura en disco es cuando se inicia la transacción, momento en el cual se envía el título al vServer, por lo tanto, si el comando lo usamos después, no se modificará el título de la transacción en Velneo vAdmin.

Comentarios

Para la especificación de su parámetro podemos hacer uso del asistente para edición de fórmulas.

Si usamos este comando dentro de un bucle generado por un comando Recorrer lista lectura/escritura, por ejemplo, podremos usar en la fórmula del título el campo ID o el campo NAME del registro en curso.

Este comando suele usarse en combinación con el comando cambiar porcentaje realizado del proceso, que permite mostrar una barra de progreso mientras el proceso es ejecutado.

Ejemplo

Cambiamos el título de la transacción en curso a 'Creación de facturas'

Cambiar título de la transacción ( "Creación de facturas" )
Ejecutar proceso ( ALTA_FACTURAS@ejemplo_dat, 3º plano: servidor (síncrono), , ,  )
    Libre

Deshacer transacción

Comando de instrucción del grupo transacciones dentro de un proceso que escriba en disco.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

No tiene.

Funcionalidad

Comando que permite deshacer una transacción dentro de un proceso que escriba en disco. Conviene ser muy cuidadoso a la hora de utilizar este comando, pues deshará toda la transacción donde sea utilizado.

Comentarios

Si desde un proceso que transacciona disparamos un subproceso y en éste deshacemos transacción, serán deshechas todas las transacciones realizadas tanto en el proceso principal como en el subproceso.

Si desde un proceso que no transacciona disparamos varios subprocesos que transaccionan y en uno de ellos deshacemos transacción, solamente serán deshechas la transacciones de ese subproceso, no las del resto.

Al ejecutarse este comando, el sistema, además de deshacer la transacción, la finaliza para poder deshacerla; por lo que ya no debemos hacer ninguna otra operación en disco tras su ejecución. Lo recomendable es usar, después de este comando, los comandos set retorno proceso = NO.

Ejemplo

En una misma transacción ejecutamos dos procesos y si en alguno de los dos no recibimos el OK procedemos a deshacer la transacción. Por lo tanto las operaciones de escritura de ambos procesos se deshacen.

Forzar transacción
Ejecutar proceso ( ALTA_FACTURAS@ejemplo_dat, 3º plano: servidor (síncrono), OK1, ,  )
    If ( ! OK1 )
        Deshacer transacción
        Finalizar proceso
Ejecutar proceso ( ALTA_VENCIMIENTOS@ejemplo_dat, 3º plano: servidor (síncrono), OK2, ,  )
    If ( ! OK2 )
        Deshacer transacción
        Finalizar proceso

Forzar transacción

Comando de instrucción del grupo Procesos que hace que el proceso se ejecute de modo transaccional.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

No tiene.

Comando de instrucción del grupo Procesos que hace que el proceso se ejecute de modo transaccional.

Comentarios

Si ejecutamos un proceso que no transacciona, es decir, que no incluye ningún comando que implique escritura en disco, y desde éste llamamos a varios subprocesos que sí transaccionan, puede tener sentido el querer englobarlo todo en una única transacción para que, en el caso que suceda algún problema que provoque una interrupción anómala del proceso, se deshaga todo y no solamente el subproceso transaccional que haya quedado pendiente de finalizar. El uso de este comando en el proceso principal haría que éste fuese transaccional y, por tanto, que todo quedase englobado en una única transacción.

Ejemplo

En una misma transacción ejecutamos un proceso de alta de facturas y otro de alta de vencimientos.

Forzar transacción
Ejecutar proceso ( ALTA_FACTURAS@ejemplo_dat, 3º plano: servidor (síncrono), , ,  )
    Libre
Ejecutar proceso ( ALTA_VENCIMIENTOS@ejemplo_dat, 3º plano: servidor (síncrono), , ,  )
    Libre