4D v15 R5 introduce una nueva, simple y poderosa manera de intercambiar información entre procesos y también entre procesos y formularios. Esta funcionalidad se basa en un sistema de mensajería asíncrona que permite llamar a procesos y formularios y pedirles que ejecuten métodos con parámetros en su propio contexto.
El proceso trabajador
Un worker tiene una caja de mensajes. El proceso worker se crea en el primer uso y su proceso asociado también se lanza automáticamente en el primer uso. A diferencia del comando «New process«, un proceso worker permanece vivo tras el fin de la ejecución del método
Un trabajador puede llamarse a sí mismo para trabajar en trabajos grandes en trozos. Los trabajadores reducirán drásticamente la necesidad de variables entre procesos, así como la necesidad de semáforos para permitir el procesamiento asíncrono paralelo. Se requiere un worker para el multihilo preventivo. Sin embargo, un trabajador puede ser utilizado con procesos cooperativos, por lo que también es útil con entornos de 32 bits o interpretados.
Hay dos nuevos comandos disponibles:
- «CALL WORKER» encapsula el nombre del método del proyecto y cualquier parámetro en un mensaje y lo publica en la caja de mensajes del trabajador.
CALL WORKER (nombre del proceso|número del proceso;nombre del método del proyecto;param1;…;paramN)
- «KILL WORKER» envía un mensaje al trabajador especificado pidiéndole que olvide cualquier mensaje pendiente y que se suicide.
KILL WORKER (nada|nombre del proceso|número del proceso)
Una base de datos de ejemplo está disponible para demostrar la nueva funcionalidad:
Formulario de llamada
Ahora, cada formulario que se ejecuta en una ventana tiene una caja de mensajes. «CALL FORM» permite ejecutar un método de proyecto con argumentos en el contexto de un formulario mostrado en una ventana, independientemente del proceso que posea la ventana.
El comando hace que el uso de «CALL PROCESS» junto con las variables interproceso para pasar mensajes es obsoleto. «CALL FORM» puede ser utilizado dentro del contexto de un formulario para llamarse a sí mismo con el fin de apilar o fragmentar el trabajo. Esto elimina la necesidad de soluciones como SET TIMER(1). Aunque es extremadamente necesario para los procesos preventivos, también funciona con procesos cooperativos, con entornos de 32 bits o interpretados.
La sintaxis es:
CALL FORM (referencia de la ventana;nombre del método del proyecto;param1;…;paramN)
De forma similar a «CALL WORKER«, «CALL FORM» encapsula el nombre del método y los argumentos del comando en un mensaje que se publica en el cuadro de mensajes del formulario. El formulario ejecuta entonces el mensaje en su propio proceso.
Una base de datos de ejemplo está disponible para demostrar la nueva funcionalidad:
Para más detalles, consulte el manual de actualización de 4D v15 R5.