Proceso

Es un objeto contenedor de instrucciones definible por el programador. Las instrucciones se ejecutarán de forma secuencial y harán uso, o bien de comandos de instrucción de proceso que pueden acceder a otros objetos de los proyectos incluyendo otros procesos, o bien de código JavaScript.

El proceso tiene una entrada y una salida, es decir, un origen ficha, lista o ninguno y una tabla asociada, y un destino ficha, lista o ninguno y una tabla asociada. Esto permite trabajar con uno o varios registros de entrada y que el proceso devuelva uno o varios registros como salida. Cada una de las instrucciones tiene un origen y un destino condicionados por el origen y el comando anterior, el primero de ellos determinado por la entrada del proceso. De esta forma el flujo de datos es gestionado por el proceso, permitiendo una salida programada en función de la entrada.

Los procesos se pueden ejecutar en distintos planos, lo que permite que sean ejecutados en local o el servidor, en multi-tarea en local, y esperando respuesta o no por parte del proceso llamado. Para crear un objeto de este tipo seleccionar la opción nuevo objeto/proceso del menú objetos de Velneo vDevelop o a través de la galería de objetos.

El sistema nos pedirá, en primer lugar, el lenguaje en el cual programaremos el proceso: Velneo o Javascript.

Los procesos serán creados directamente en el editor de procesos que se abre al crear/editar un objeto de este tipo.

Los procesos Javascript requieren de la creación de un fichero de script, que será asignado al proceso en la propiedad fichero script. Consultar los siguientes capítulos para ampliar información al respecto: inspector de scripts y scripts.

Propiedades

Identificador

Etiqueta alfanumérica que identifica al objeto. Este identificador será el que se usa para referenciarlo en los inspectores y en las propiedades de otros objetos.

Nombre

Etiqueta alfanumérica que servirá como descriptor del objeto. Es el texto que se presentará al usuario final de la aplicación para referenciar al objeto. Podemos definir una etiqueta por cada idioma presente en el proyecto.

Estilos

Podemos definir los estilos:

Privado

Limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo. Por ejemplo, si marcamos un proceso de un proyecto de datos como privado, dicho proceso no estará accesible al ejecutar la instancia de dicho proyecto con Velneo vDataClient.

Accesible web

Un proceso que tenga activado este estilo podrá ser ejecutado vía web. Ver el capítulo dedicado a Velneo vModApache para ampliar información al respecto.

Debug: punto de interrupción

Este estilo solamente estará disponible para los procesos javascript y lo que permitirá es que pueda depurarse el proceso cuando ejecutemos la solución en modo de depuración de procesos JavaScript.

Comentarios

Esta propiedad nos permite documentar el uso del proceso.

Tabla asociada

Esta propiedad nos permite establecer el origen del proceso. Podremos, o bien seleccionar una tabla de un proyecto de datos o bien seleccionar el valor ninguna en el caso de que el origen del proceso no tenga origen.

Origen

Esta propiedad aparecerá solamente en el caso de que en la propiedad tabla asociada hayamos seleccionado una tabla. Los valores posibles son:

Ficha

El origen del proceso será una ficha (registro) de la tabla seleccionada en la propiedad tabla asociada.

Lista

El origen del proceso será una lista de registros de la tabla seleccionada en la propiedad tabla asociada.

Tabla destino

Esta propiedad nos permite establecer la salida del proceso. Podremos, o bien seleccionar una tabla de un proyecto de datos heredado, o bien seleccionar el valor ninguna en el caso de que el proceso no tenga salida.

Destino

Esta propiedad aparecerá solamente en el caso de que en la propiedad tabla destino hayamos seleccionado una tabla. Los valores posibles son:

Ficha

La salida del proceso será una ficha (registro) de la tabla seleccionada en la propiedad tabla destino.

Lista

La salida del proceso será una lista de registros de la tabla seleccionada en la propiedad tabla destino.

Una vez establecidas las propiedades podremos pasar a crear las instrucciones que lo conformarán, para ello disponemos de un editor. Para abrirlo bastará con pulsar intro o hacer doble clic sobre el identificador del proceso que acabamos de crear en el panel de objetos de Velneo vDevelop.

Editor de procesos de lenguaje Velneo

El editor de procesos es el objeto que nos permite definir el conjunto de instrucciones que formarán parte del mismo. Las instrucciones de un proceso serán subobjetos del mismo y obtendrán su origen del propio proceso, pero, más importante aún, las variables locales del proceso también son subobjetos del mismo. Se crearán automáticamente cuando las usemos en las instrucciones, pero podremos acudir al proceso, haciendo doble clic, para poder cambiar su configuración.

En la barra de herramientas tenemos los siguientes comandos:

Así mismo, se incluyen dos comandos específicos para la depuración de procesos:

El editor de procesos dispone de un asistente para la creación de cada línea:

En la parte superior de dicho asistente se informa sobre el origen de la línea del proceso seleccionada, que podrá ser:

  • Ninguno.

  • Ficha de una tabla concreta.

  • Lista de registros de una tabla concreta.

Los comandos disponibles en una línea dependerá del origen de la misma, que en primer lugar viene determinado por el origen del proceso y que podemos ir variando dependiendo de los comandos que empleemos. Algunos comandos generarán subramas cuyo origen vendrá determinado por el comando y se ejecutarán las instrucciones que cuelguen de la subrama en función de éste.

Para localizar un comando podremos hacerlo, o bien navegando a través de las carpetas y subcarpetas de la ventana de selección, o bien usando la opción Filtro. Al escribir una cadena en el filtro el sistema presentará todos los comandos que la contengan:

Estando el foco en el filtro, podremos hacer uso de las teclas de cursor arriba/abajo para navegar entre los comandos encontrados.

Una vez seleccionado el comando deseado pulsar el botón “Aceptar”. El comando será incluido en la línea del proceso donde estábamos posicionados.

Si modificamos el tamaño o cambiamos la ubicación de esta ventana de selección de comandos el sistema lo recordará en futuras sesiones de Velneo vDevelop.

Los comandos que no puedan ser usados en la línea debido a su origen serán mostrados en un color gris:

Si el comando seleccionado requiere parámetros, éstos serán mostrados a continuación.

La especificación de los parámetros de un comando será asistida. En unos casos el parámetro desplegará una lista con los valores posibles que pueden ser seleccionados y en otros casos se presentará el asistente para edición de fórmulas. Tal y como hemos dicho al comienzo del artículo, en aquellos parámetros cuyo contenido sea una variable local podremos, o bien, seleccionar una declarada previamente en el proceso, o bien crearla nueva.

Qué registros componen la salida del proceso vienen determinados por las instrucciones Añadir ficha a la salida y Añadir lista a la salida. La primera podemos usarla para generar la salida ficha de un proceso y la segunda para generar como salida una lista de registros, y ambas son válidas para generar la salida de un proceso.

En ambos casos, los comandos generan la salida a partir de la ficha o lista en cuyo origen esté situado el comando, que tiene que corresponder con el seleccionado en el proceso. En el caso de la lista, además de permitir generar la lista a partir de una ficha, permite hacerlo a partir de varias fichas y listas.

Copiar y pegar código

Es posible seleccionar líneas de un proceso, copiarlas en el portapapeles (Control + C) y pegarlas en otro (control + V).

Al pegar el código en el proceso de destino, se pegarán también las variables locales usadas en las líneas copiadas al portapapeles:

  • Si la variable ya existe y es del mismo tipo, no se crea.

  • Si la variable ya existe y es de distinto tipo, renombra con un número al final del identificador y refactoriza el código. Por ejemplo, si la variable se llama DATO es de tipo numérico, y en el proceso de destino ya existe una variable DATO y es de otro tipo, la variable la pegará como DATO1 y la refactorizará en el código que la usaba.

  • Si la variable no existe, se crea.

Editor de procesos JavaScript

Ver el capítulo editor de scripts.

Planos de ejecución de procesos

Los procesos se dividen en cuatro planos de ejecución según el lugar y el modo en que se ejecutan:

  • 1º Plano: local.

  • 2º Plano: local multitarea (no espera retorno).

  • 3º plano: servidor.

  • 4º plano: servidor (no espera retorno).

  • 5º plano: son procesos que se ejecutan en la máquina donde está instalado Velneo vServer pero que no son ejecutados por éste sino que son ejecutados por un agente. Deben ser lanzados desde procesos ejecutados en 3er o 4º plano.

1º plano

Los procesos en 1º plano se ejecutan de forma local, bien sea en el cliente, bien sea en el servidor, y devuelven un retorno por el que espera el proceso llamador, hasta que finaliza el proceso llamado, o la acción que ha lanzado el proceso. Por tanto, son bloqueantes del proceso llamador o de la actividad del usuario que no puede seguir interaccionando con el interfaz de la aplicación hasta que éste haya finalizado.

Un proceso en primer plano se puede ejecutar de las formas siguientes:

2º plano

Los procesos en 2º plano se ejecutan de forma local en el cliente, pero el proceso llamador no espera retorno, por lo que pueden ejecutarse en paralelo con otros procesos multitarea. Estos procesos, por tanto, no bloquean el proceso llamador o la actividad del usuario que sí puede seguir interaccionando con el interfaz de la aplicación.

Para conocer el estado de estos procesos que se están ejecutando en segundo plano existe el Panel de procesos en 2º plano que nos muestra todos los procesos en segundo plano que se están ejecutando, indicando la cola a la que han sido asignados y que se encarga de gestionar el cliente. A este panel se puede acceder mediante el comando de acción archivo: procesos en 2º plano.

En la información sobre los procesos se especifica el título de la transacción y el porcentaje del proceso realizado, datos que podemos definir en el proceso con los comandos de instrucción de proceso cambiar título de la transacción y cambiar porcentaje realizado del proceso.

Un proceso en 2º plano se puede ejecutar de las formas siguientes:

La información relativa a los registros manejados en los procesos en 1º y 2º plano viaja entre el cliente y el servidor, por lo que debemos tener en cuenta este dato cuando trabajemos con rangos amplios de registros.

Cuando trabajemos con listas y no con registros concretos, la información que viaja entre ambos no se trata del registro entero si no de la necesaria para apuntar al registro, por lo que el efecto en el tráfico es moderado.

En las vistas de datos no hay multi-tarea. Esto quiere decir que si desde un manejador de evento disparamos un proceso en 2º plano, éste será ejecutado en primer plano.

No hay segundo plano en procesos ejecutados en el servidor (triggers, procesos ejecutados en tercer plano, desde Veneo vModapache en modo server, ni desde tareas programadas. En el caso de querer ejecutar un proceso asíncrono en ese contexto lo lanzaremos en 4º plano.

No hay segundo plano en procesos JavaScript.

No es posible ejecutar procesos en 2º plano desde procesos lanzados en 5º plano.

3º plano

Los procesos en 3º plano se ejecutan en el servidor, devolviendo un retorno por el que espera el proceso llamador. Por tanto bloquean la actividad del proceso llamador, que esperará el retorno para seguir con las operaciones programadas. Esto no implica en ningún momento un bloqueo en la actividad del usuario o del servidor. Todos los procesos ejecutados en el servidor son multitarea, y en el cliente tenemos la opción de lanzar el proceso desde otro proceso multitarea.

Los procesos en el servidor, 3º plano, frente a los procesos en 1º ó 2º plano, optimizan el tráfico de información entre cliente y servidor. Esto es porque no viaja entre uno y otro información alguna sobre los registros manejados en el proceso, ni siquiera de las listas manejadas, sino que únicamente se retorna el resultado del proceso. Sin embargo, debemos tener en cuenta que esto hace que sea el servidor el que tenga que atender todas las operaciones que se realice el proceso, por lo que debemos tener en cuenta el balance de la carga.

Un proceso en tercer plano se puede ejecutar de las formas siguientes:

  • Desde otro proceso con el comando de instrucción de proceso ejecutar proceso.

  • Desde otro proceso con el comando de instrucción de proceso disparar objeto.

  • Los triggers son ejecutados en tercer plano.

Debemos tener en cuenta que, si en un proceso ejecutado en tercer plano, una instrucción del mismo dura más de 2 minutos, hará que el proceso no pueda reportar al llamador que continúa ejecutándose, por lo que de desenganchará y se deshará.

4º plano

Los procesos en 4º plano se ejecutan en el servidor, pero el proceso llamador no espera retorno. Los procesos entrarán en una cola de 4º plano y serán ejecutados de forma secuencial según el orden de llegada. Cuando paramos el servidor, los procesos que estuviesen en cola pendiente de ser ejecutados son eliminados.

Podremos lanzar un proceso en 4º plano de los modos siguientes:

5º plano

Solamente funcional en servidores que tengan activada la funcionalidad de ejecución de procesos en 5º plano. Permite ejecutar procesos en la máquina donde está instalado Velneo vServer mediante un agente. Esto permite, por un lado, usar funcionalidades que no son operativas en Velneo vServer como generar pdfs y, por otro, evitar problemas de estabilidad del propio servidor.

Podremos disparar un proceso en 5º plano de los modos siguientes:

  • Desde otro proceso ejecutado en 4º plano con el comando de instrucción de proceso ejecutar proceso.

  • Desde otro proceso ejecutado en 4º plano con el comando de instrucción de proceso disparar objeto.

Un proceso en 5º plano solamente podrá ser disparado desde procesos lanzados en el servidor de forma asíncrona, es decir, procesos ejecutados 4º plano).

Funcionalidades no disponibles en 5º plano

Comandos de SDV

Compactación de tablas.

Protocolo TCP.

Notas adicionales sobre planos de ejecución de procesos

Solamente será posible usar comandos de instrucción de proceso que generen interfaz en aquellos procesos que ejecutamos en primer plano; en otros planos no pueden ser usados. Si se trata de procesos de Velneo, el sistema simplemente no los ejecutará, pero si se trata de procesos JavaScript, debemos evitarlo, ya que el sistema no lo controlará. Existe una excepción y es la del comando de instrucción Mensaje. Usado en procesos en 2º plano mostrará el mensaje en la barra de estado de Velneo vClient. Usado en tercer plano mostrará el mensaje directamente en el panel de Mensajes del sistema de Velneo vAdmin.

No hay segundo plano en los procesos JavaScript. Estos se ejecutarán siempre en primer plano.

Sobre la configuración regional del sistema y los procesos ejecutados en tercer y cuarto plano debemos tener en cuenta lo siguiente:

  • Los cambios que hacemos en la configuración regional del sistema operativo del servidor solamente afectan al usuario en cuya sesión se hace el cambio.

  • Si el servicio VATP está asociado a la cuenta local del sistema, no se tendrá en cuenta la configuración establecida en una sesión de usuario. Tendremos dos opciones:

    1) Cambiar la configuración regional de la cuenta local (que sería la opción aconsejada). En algunos sistemas operativos, por ejemplo, se incluye una opción que permite aplicar la configuración establecida en una sesión de un usuario a la cuenta del sistema. 2) Asociar el servicio a la cuenta del usuario en cuya sesión se modifica la configuración regional.

Proceso: ON_INIT_CLIENT

Es posible crear un proceso para que sea ejecutado cuando ejecutemos la aplicación con Velneo vClient. El proceso será ejecutado antes de crear el marco. Si en el proyecto hemos definido más de un marco y queremos establecer uno distinto al AUTOEXEC, lo haremos en este proceso con el comando de instrucción de proceso establecer marco.

Proceso: ON_INIT_SERVER

Es posible crear un proceso para que sea ejecutado cada vez que se declare o se reinicie una instancia de un proyecto. Es decir, cada vez que creemos o reiniciemos una instancia de un proyecto (tanto de datos como de aplicación , dicho proceso será ejecutado.

Dicho proceso será ejecutado en el servidor Velneo vServer.

El proceso deberá cumplir los siguientes requisitos:

Para que el sistema reconozca un proceso como tal ha de tener el identificador ON_INIT_SERVER.

El proceso no podrá tener ni origen ni destino.

El proceso no deberá incluir ningún comando de instrucción que requiera la intervención de un usuario (Pedir formulario, por ejemplo) o que genere interfaz ya que, tal y como hemos dicho anteriormente, el proceso es ejecutando en el servidor.

Posibles ejemplos de uso de este tipo de proceso: inicializar variables globales de un proyecto, iniciar un servicio TCP/IP, etc.

Debemos tener en cuenta que el proceso será ejecutado solamente cuando se instancie o se reinicie la instancia que lo contiene. Supongamos que tenemos un proyecto de aplicación que hereda uno de datos y que ambos proyectos contienen un proceso ON_INIT_SERVER. Dado que la instanciación de un proyecto implica la instanciación de todos los proyectos heredados por el mismo, la primera vez que instanciemos el proyecto de aplicación se creará también la instancia del proyecto de datos heredado, por lo que se ejecutará el proceso ON_INIT_SERVER de ambos. Si con posterioridad reiniciamos el proyecto de aplicación, se ejecutará el proceso ON_INIT_SERVER del mismo, pero no el del proyecto de datos heredado.

No se debe usar este proceso para escribir en la base de datos, ya que en el momento de su ejecución no se ha iniciado el control de transacciones. Solamente recomendamos su uso para operaciones que no generen transacción.

Proceso ON_CLOSE_SERVER

Es posible crear un proceso para que sea ejecutado cada vez que se detenga o se reinicie una de un proyecto. Se lanza siempre que sea detenida la ejecución de la instancia en el servidor bien porque se reinicie la instancia o porque se detenga el servidor.

El proceso será ejecutado solamente cuando se detenga o se reinicie la instancia que lo contiene. Supongamos que tenemos un proyecto de aplicación que hereda uno de datos y el de datos contiene un proceso ON_CLOSE_SERVER.

Si detenemos la instancia del proyecto de aplicación, no se ejecutará el proceso. Solamente se ejecutará si detenemos la instancia del proyecto de datos.

Dicho proceso será ejecutado en el servidor Velneo vServer.

El proceso deberá cumplir los siguientes requisitos:

Para que el sistema reconozca un proceso como tal ha de tener el identificador ON_CLOSE_SERVER.

El proceso no podrá tener ni origen ni destino.

El proceso no deberá incluir ningún comando que tenga interacción con la interfaz, ni tampoco transacciones en la base de datos, ya que el servidor ya está detenido para esa instancia.

Si tenemos varias instancias con proyectos ON_CLOSE_SERVER tanto en proyectos de datos como de aplicación, primero se lanzarán todos los de los proyectos de datos y luego todos los de los proyectos de aplicación.

Comandos

Los comandos son las instrucciones con las que se construyen los procesos, eventos, funciones, demonios, etc. Pueden tener uno o varios parámetros dependiendo de cada comando. Los comandos pueden ser de lista, de ficha o de ambas. Al seleccionar una línea, aparece en la parte inferior la ventana Instrucción donde nos informa del origen del subproceso actual y de los comandos disponibles, los cuales dependen de que el origen sea ficha o lista.

Comandos propios de lista

Como su nombre indica son comandos aplicables a las listas. En la descripción de los parámetros se indica si los mismos son obligatorios u opcionales.

Comandos propios de ficha

Como su nombre indica son comandos aplicables a las fichas. En la descripción de los parámetros se indica si los mismos son obligatorios u opcionales.

Comandos sin origen

Como su nombre indica son los comandos que no están asociados a un origen fijo, pueden tener su origen tanto en una ficha, en una lista como “Ninguno”. En la descripción de los parámetros se indica si los mismos son obligatorios u opcionales.

En capítulos siguientes se explican los comandos agrupados por tipo.

En los capítulos siguientes explicaremos los comandos de instrucción de proceso que contempla Velneo.

Última actualización