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?
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.
-
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.
-
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.
-
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/