Variables Globales en proyecto de Datos


([N4] eduardo.chaparro) #1

Buenos dias.

Esta vez quiero saber si alguien ha tenido el mismo problema, estoy tratando de evaluar variables globales de memoria en proyectos de datos, así como también en procesos ejecutados en 2do y 3er plano, y no me están tomando el valor, es decir, sin importar que le coloque, siempre me guardan “0”.

Alguien le ha sucedido esto?


([N4] bitcodesoft) #2

Variable global

Las variables globales sólo se pueden declarar en los proyectos de datos, pero tanto si
son en disco como en memoria se pueden ejecutar indistintamente en el cliente y en el
servidor. Sin embargo, hay tres aspectos muy importantes a tener en cuenta de las variables
globales.

  1. Las variables globales en disco cada vez que usan requieren que sea leído su valor
    de disco, esto significa que en el servidor son rápidas, pero usadas desde el cliente,
    cada vez que en una fórmula usamos una variable global estamos obligando al
    cliente a enviar una petición al servidor para obtener el valor actual de ese variable,
    pues no podemos olvidar que al ser en disco es compartida por todos los usuarios,
    y Velneo se encarga de garantizar que el valor siempre sea el mismo para todos los
    usuarios, incluso encargándose del bloqueo de la variable cuando su valor es modificado.
    Por lo tanto, debemos reducir al máximo el uso de variables globales en disco
    en la interfaz.

  2. Las variables globales en memoria son únicas para cada máquina. Esto significa
    que cada cliente (usuario) tendrá su variable global en memoria específica. El valor
    de esa variable es compartido por los procesos que se ejecutan en una aplicación
    de un equipo cliente específico, y no se comparten con el resto de usuarios. De la
    misma forma el servidor se comporta como un cliente más y tiene una instancia en
    memoria de las variables locales. Estas variables locales que se encuentran en el
    servidor son compartidas por todos los procesos que se ejecuten en el servidor, sean
    del usuario que sean, pero nunca se mezclan sus valores con los que existen en
    cada máquina cliente. De esta forma si, por ejemplo desde una máquina cliente
    modificamos el valor de la variable HORA a “16:30:00”, la variable del resto de máquinas
    cliente no se verán afectadas, y tampoco cambiará el valor de la variable
    HORA que existe en el servidor.

  3. Los valores de las variables en memoria no “viajan” entre el cliente y el servidor ni
    viceversa. Es decir, cada máquina es una isla, lo que nos garantiza que nunca se
    mezclan los valores de esas variables globales entre 2 máquinas, eso mismo debemos
    aplicarlo al servidor. Por eso cuando ejecutamos un proceso en el servidor,
    aunque lo lancemos desde un cliente, si dentro de ese proceso usamos el valor de
    la variable FECHA, el proceso una vez que se está ejecutando en el servidor obtendrá
    el valor de la variable FECHA que está en el servidor, pero no tendrá visibilidad
    del valor que había en la variable FECHA del cliente. Por este motivo para pasar valores
    desde un objeto que se está ejecutando en cliente a un proceso que se ejecute
    en el servidor usamos variables locales del proceso a las que les pasamos los
    valores deseados, utilizando los comandos de objeto: crear manejador de objeto,
    set y get variable local y disparar objeto. En resumen, las variables globales en
    memoria del servidor son compartidas por todos los procesos o transacciones que
    se ejecuten en el servidor, de todos los usuarios, mientras que en el cliente cada
    ejecución de la aplicación tendrá su instancia específica de la variable global en
    memoria. Incluso, si un usuario abre 2 veces la misma aplicación en la misma máquina, cada ejecución de la aplicación tendrá su instancia de la variable global en
    memoria y no será accesible para el resto de ejecuciones de la aplicación en la
    misma o en otras máquinas.

http://jarboleya.com/2013/10/16/planos-de-ejecucion-en-velneo-v7/