Os nós de processamento de mensagem e os analisadores devem trabalhar em um ambiente de instâncias múltiplas e encadeamentos múltiplos. Vários objetos de nó ou objetos analisadores estão disponíveis, cada um com vários elementos de sintaxe e vários encadeamentos podem estar executando métodos nesses objetos.
Uma instância de um nó de processamento de fluxo de mensagens é compartilhada e utilizada por todos os encadeamentos que servem ao fluxo de mensagens no qual o nó está definido. Analisadores são chamados no mesmo encadeamento que os nós; portanto, se o fluxo estiver utilizando diversos encadeamentos, então, os analisadores também são.
Uma extensão definida pelo usuário deve utilizar esse modelo. Se um nó definido pelo usuário requer dados globais ou recursos, você deve proteger os dados globais ou recursos, utilizando semáforos para serializar o acesso nos encadeamentos. No entanto, essa serialização pode resultar em gargalos de desempenho. Evite utilizar dados globais e recursos para criar uma solução mais escalável.
As funções implementadas pelas extensões definidas pelo usuário devem ser reentrantes e quaisquer funções que elas chamarem também devem ser reentrantes. Todas as funções utilitárias de extensões definidas pelo usuário são completamente reentrantes.
Apesar de uma extensão definida pelo usuário poder criar encadeamentos adicionais, se necessário, todas as funções de utilitário C e métodos Java devem ser chamados no mesmo encadeamento que chamou a função cniEvaluate em C ou o método evaluate em Java, conforme apropriado para a linguagem na qual o nó é gravado. Se o mesmo encadeamento não for utilizado, seu código pode comprometer a integridade do intermediário e provocar um comportamento imprevisível. Quaisquer encadeamentos adicionais não devem chamar a API de extensão definida pelo usuário. A API deve ser utilizada somente a partir do encadeamento principal chamado pelo Intermediário.
Para obter in formações sobre a função cniEvaluate, consulte cniEvaluate.