Tutor de procesos
El proceso es un objeto contenedor de instrucciones definible por el programador. Las instrucciones se ejecutarán de forma secuencial y harán uso de comandos de instrucción de proceso que pueden acceder a otros objetos de los proyectos incluyendo otros procesos.
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 un 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.
Si quieres saber cómo se crea un proceso y cuáles son sus propiedades, haz clic aquí.
La entrada de un proceso está determinada por la configuración de éste, y a su vez, determina dónde puede ser utilizado. Podemos usarlo desde otros objetos alimentándolo con los datos del objeto origen y permitiendo al proceso “procesarlos”, valga la redundancia, como puede ser, por ejemplo, desde otro proceso, desde una rejilla, desde un botón de un formulario accediendo a la ficha desde la que se lanza, una opción en un casillero, etc. También puede no tener origen ni tabla asociada, pudiéndose lanzar desde opciones de menú, formularios, rejillas, etc., por medio de acciones, y por tanto independientemente del contenido del objeto origen.
La salida también ha de determinarse en la configuración del proceso, pero debemos determinar mediante los comandos correspondientes con qué registros alimentaremos la salida del proceso. Los comandos son añadir ficha a la lista, añadir lista a la salida. Debemos usar el comando con un origen correspondiente con el de la salida. En el caso de que la salida sea ficha, debemos tener como origen de la instrucción una ficha de la tabla asociada como salida, y usaremos el comando añadir ficha a la lista para alimentar la salida. En el caso de que la salida sea lista, podemos añadir tanto registros individuales como registros debemos tener como origen de la instrucción una ficha o una lista de la tabla asociada indistintamente, y usaremos el comando correspondiente para cada caso, añadir ficha a la lista o añadir lista a la salida para añadir los registros a la salida.
Si comenzamos con un proceso sin origen, normalmente realizaremos una búsqueda con el comando correspondiente búsqueda, o disparar objeto, o bien cargaremos una lista de registros de una tabla con el comando cargar lista resolviendo, si acaso, alguno de los índices. Solicitaremos algún dato al usuario y procesaremos la lista de acuerdo a unas condiciones pre-programadas. Un ejemplo de este proceso sería una facturación que carga una lista de albaranes (notas de entrega) y los factura.
Un proceso con origen puede ser de ficha o lista. Normalmente, un proceso con origen ficha evaluará ciertos datos del registro en curso y realizará una serie de instrucciones que los tenga en cuenta. Un ejemplo de proceso sería uno que carga los históricos de una factura para devolver las líneas de un proceso.
Un proceso puede ser ejecutado en cuatro planos distintos, que definiremos en el momento de lanzar el proceso:
1º plano: local. El proceso se ejecuta en local, es decir, en el cliente si se inicia en el cliente, en el servidor si se inicia en el servidor. En el caso de que el proceso se ejecute en el cliente, éste se verá bloqueado hasta finalizar su ejecución.
2º plano: multi-tarea. Además de ejecutarse en local, en este caso el proceso es contemporáneo de otros procesos que se puedan realizar. Si se ejecuta en el cliente, el usuario puede seguir haciendo uso de la aplicación sin que se vea afectado ni bloqueado.
3º plano. El proceso será lanzado en el servidor aunque lo iniciemos desde el cliente. El proceso llamador esperará respuesta y por tanto quedará a la espera hasta que termine el proceso llamado, recibiendo el resultado de las operaciones realizadas.
4º plano: asíncrono. El proceso será lanzado en el servidor aunque lo iniciemos desde el cliente pero, en este caso, el proceso llamador no esperará respuesta y por tanto no quedará a la espera hasta que termine el proceso llamado ni recibirá el resultado de las operaciones realizadas.
Los procesos que se realicen en primer plano y necesiten datos, recibirán estos registros del servidor, aunque mientras trabajemos con listas y no con fichas, el registro completo no será enviado ni recibido. Los procesos que se realicen en tercer plano no necesitarán enviar o recibir datos excepto del resultado, por lo que, por regla general, serán mucho más rápidos ya que no habrá diálogo entre cliente y servidor. Pero debemos tener en cuenta que subirán la carga de trabajo del servidor.
Todos los procesos están convenientemente comentados, así que no será necesario explicar aquí el funcionamiento de cada uno.
Los procesos que se han programado son los siguientes:
Comprobar foto: de la lista de registros que se muestra en la rejilla, calcula y presenta un mensaje con el número de registros que tienen contenido en el campo foto y el número de registros que no lo tienen. El identificador del proceso es TUT_PRO_CLT_CHK_FOT.
Comprobar códigos no usados: repasa el campo ID de todos los registros de la lista y comprueba si hay huecos en la numeración. El identificador del proceso es TUT_PRO_CLT_CHK_ID.
Duplicar cliente: el proceso nos pedirá que especifiquemos el cliente a buscar, si se encuentra más de uno, se presentará una lista para que seleccionemos el que queramos duplicar; luego nos pedirá que indiquemos cuál será el nombre del cliente duplicado y, una vez dado de alta, nos lo mostrará en un formulario. El identificador del proceso es TUT_PRO_DUP_CLT.
Clientes por sector: el proceso mostrará un mensaje indicando cuántos clientes pertenecen a cada sector de actividad. El identificador del proceso es TUT_PRO_SEC_CLI.
Sumar 1 día a la fecha de alta: este proceso incrementa en un día el contenido del campo fecha de alta de los registros de la lista. El identificador del proceso es TUT_PRO_FCH_SUM_1_DIA.
Todos los procesos los encontraremos en la carpeta tutores/procesos y eventos avanzados/procesos. Todos ellos están debidamente documentados.