4D v15 R5 introduz uma forma nova, simples e poderosa de troca de informação entre processos e também entre processos e formas. Esta característica baseia-se num sistema de mensagens assíncronas que permite chamar e pedir aos processos e formulários que executem métodos com parâmetros no seu próprio contexto.
O Processo do Trabalhador
Um trabalhador tem uma caixa de mensagens. O processo do trabalhador é criado na primeira utilização e o seu processo associado é também automaticamente lançado na primeira utilização. Ao contrário do processo “New process“, um processo de trabalhador permanece vivo após o fim da execução do método.
Um trabalhador pode chamar-se a si próprio para trabalhar em grandes trabalhos em pedaços. Os trabalhadores reduzirão drasticamente a necessidade de variáveis inter-processo, bem como a necessidade de semáforos para permitir o processamento assíncrono paralelo. É necessário um trabalhador para a preemptiva multi-tarefa. No entanto, um trabalhador pode ser utilizado com processos cooperativos, pelo que também é útil com ambientes de 32 bits ou interpretados.
Estão disponíveis dois novos comandos:
- “CALL WORKER” encapsula o nome do método do projecto e quaisquer parâmetros numa mensagem e afixa-o na caixa de mensagens do trabalhador.
CALL WORKER (nome do processo| número do processo; nome do método de projecto;param1;…;paramN)
- “KILL WORKER” envia uma mensagem ao trabalhador especificado pedindo-lhe que esqueça qualquer mensagem pendente e que se mate a si próprio.
KILL WORKER (nada| nome do processo| número do processo)
Uma base de dados de exemplo está disponível para demonstrar a nova funcionalidade:
Formulário de chamada
Agora, cada formulário que corre numa janela tem uma caixa de mensagens. “CALL FORM” permite que um método de projecto seja executado com argumentos no contexto de um formulário apresentado numa janela, independentemente do processo que possui a janela.
O comando faz usando “CALL PROCESS” juntamente com variáveis de inter-processo para passar mensagens obsoletas. “CALL FORM” pode ser utilizado dentro de um contexto de formulário para se chamar a si próprio a fim de empilhar ou atirar pedaços de trabalho. Isto elimina a necessidade de trabalhar em soluções tais como SET TIMER(1). Embora extremamente necessário para processos preventivos, também funciona com processos cooperativos, com ambientes de 32 bits ou interpretados.
A sintaxe é:
CALL FORM (referência da janela;nome do método do projecto;param1;…;paramN)
De modo semelhante a “CALL WORKER”, “CALL FORM” encapsula o nome do método e os argumentos de comando numa mensagem que é afixada na caixa de mensagens do formulário. O formulário executa então a mensagem no seu próprio processo.
Está disponível uma base de dados de exemplo para demonstrar a nova funcionalidade:
Para mais detalhes, consulte o manual de actualização 4D v15 R5.