O modelo de execução é o sistema utilizado para iniciar os fluxos de mensagens através de uma série de nós.
Quando um grupo de execução é inicializado, os arquivos LIL (loadable implementation
library) apropriados
e os arquivos PAR (Plug-in Archive) são disponibilizados para o ambiente de tempo de execução. O processo de tempo de execução do grupo de execução é
iniciado e cria um encadeamento de configuração dedicada. Você é responsável por assegurar que um nó definido pelo usuário seja thread-safe. Se um nó atualizar uma variável em múltiplos encadeamentos, deve haver o bloqueio apropriado. Não comprometa esse modelo de encadeamento em sua implementação de nós definidos
pelo usuário. Considere os seguintes pontos:
- Uma mensagem de entrada enviada a um fluxo de mensagens é processada apenas
pelo encadeamento que a recebeu.
- Uma única instância de uma extensão definida pelo usuário pode ser chamada
em vários encadeamentos simultaneamente.
- O ambiente de execução do fluxo de mensagens é, de forma conceitual, semelhante
à programação por procedimento. Os nós que são inseridos em um fluxo de mensagens são chamadas, como subrotinas,
utilizando uma interface de chamada de função. No entanto, em vez de uma interface de retorno de chamada, na qual os
parâmetros são transmitidos na forma de dados de mensagens de entrada, o modelo
de execução é mencionado como um modelo de propagação e retorno.
Como um exemplo, considere um fluxo de mensagens no qual você utiliza
analisadores e nós definidos pelo usuário. Utilize um nó definido pelo usuário
para processar as mensagens e um analisador definido pelo usuário para analisar
as mensagens; o nó e o analisador contêm funções de implementação. O broker chama as funções de implementação ou as funções de retorno
de chamada quando ocorrerem determinados eventos:
- Quando uma mensagem de entrada é recebida pelo fluxo de mensagens e é
propagada para o nó definido pelo usuário:
- Para nós C, o broker chama a função cniEvaluate
para o nó definido pelo usuário. Consulte o cniEvaluate.
- Para nós Java™, o broker chama o método evaluate
implementado pelo nó definido pelo usuário.
- Se o nó definido pelo usuário quiser consultar a mensagem para decidir
o que fazer com ela, o nó chamará uma função utilitária C ou um método Java,
conforme apropriado para a linguagem na qual o nó foi gravado.
O broker chama o analisador definido pelo usuário em uma de suas
funções de implementação, por exemplo cpiParseFirstChild. Esta
função instrui o analisador a construir a árvore de análise. O analisador constrói a árvore, chamando as funções de utilitário que criam os
elementos na árvore de análise, por exemplo, cpiCreateElement.
O analisador pode ser chamado várias vezes pelo broker.