Um módulo é uma seqüência de declarações que definem variáveis e sua inicialização e uma seqüência de declarações de sub-rotina (função e procedimento) que definem um comportamento específico para um nó do fluxo de mensagens.
Um módulo deve começar com a instrução CREATE node_type MODULE e terminar com uma instrução END MODULE. O node_type deve ser COMPUTE, DATABASE, DATABASEEVENT ou FILTER. Para os nós DatabaseInput, o node_type requerido é DATABASEEVENT. Para os nós Compute, Banco de Dados e Filter, o node_type requerido é o mesmo que para o nó. Por exemplo, é necessário utilizar COMPUTE node_type em módulos ESQL para nós Compute. Para os nós Compute, Banco de Dados e Filter, o ponto de entrada do código ESQL é a função denominada MAIN, que tem escopo MODULE. Módulos ESQL para nós DatabaseInput não contêm a função MAIN, mas contêm três procedimentos denominados READEVENTS, BUILDMESSAGE e ENDEVENT. Para obter mais informações sobre esses três procedimentos, consulte Configurando um Nó DatabaseInput.
Cada módulo é identificado por um nome que segue CREATE node_type MODULE. O nome deve ser criado para você com um valor padrão, que pode ser modificado ou é possível criá-lo você mesmo. O nome é tratado sem distinção entre maiúsculas e minúsculas (ou seja, o uso do nome com qualquer combinação de letras maiúsculas e minúsculas corresponde à declaração). Isso contrasta com os nomes declarados para esquemas, constantes, variáveis e rótulos, que são tratados com distinção entre maiúsculas e minúsculas e que você deve especificar exatamente conforme eles são declarados.
É necessário criar o código para um módulo em um arquivo ESQL que tenha um sufixo .esql. É necessário criar este arquivo no mesmo esquema do servidor broker ao qual o nó faz referência. Deve haver um módulo do tipo correto para cada nó correspondente e deve ser específico desse nó e não pode ser utilizado por nenhum outro nó.
Ao criar um arquivo ESQL (ou concluir uma tarefa que crie um), você indica o Projeto do Message Broker e o esquema do broker aos quais o arquivo está associado, e especifica um nome para o arquivo.
No arquivo ESQL, o nome de cada módulo é determinado pelo valor da propriedade correspondente do nó do fluxo de mensagens. Por exemplo, a propriedade Módulo ESQL para o nó Compute especifica o nome do módulo no arquivo ESQL para esse nó. O valor padrão para esta propriedade é o nome do nó. Você pode especificar um nome diferente, mas deve assegurar que o valor da propriedade e o nome do módulo que fornece a função requerida sejam os mesmos.
Para os nós Compute, Banco de Dados e Filter, o módulo deve conter a função MAIN, que é o ponto de entrada para o módulo. Essa função é incluída automaticamente se o módulo for criado para você. No MAIN, você pode codificar ESQL para configurar o comportamento do nó. Se você incluir ESQL no módulo que declara variáveis, constantes, funções e procedimentos, eles serão apenas de escopo local e poderão ser utilizados nesse único módulo.
Para os nós DatabaseInput, o módulo deve conter os três procedimentos a seguir: READEVENTS, BUILDMESSAGE e ENDEVENT. Esses procedimentos são incluídos automaticamente, junto com comentários para descrever o procedimento, se o módulo for criado para você. Nos três procedimentos, é possível codificar ESQL para configurar o comportamento do nó. Consulte Configurando um Nó DatabaseInput. Se você incluir ESQL no módulo que declara variáveis, constantes, funções e procedimentos, eles serão apenas de escopo local e poderão ser utilizados nesse único módulo.
Se desejar reutilizar constantes, funções ou procedimentos ESQL, será necessário declará-los no nível de esquema do broker. É possível se referir a essas constantes, funções ou procedimentos a partir de qualquer recurso dentro do esquema do broker no mesmo projeto ou em outro. Se desejar utilizar esta técnica, é necessário qualificar totalmente o procedimento ou incluir uma instrução PATH que defina o qualificador. A instrução PATH deve ser codificada no mesmo arquivo ESQL, mas não em qualquer MODULE.