Crie o código ESQL para customizar o comportamento de um nó
Compute, Banco de Dados, DatabaseInput ou Filter em um arquivo ESQL.
Antes de começar:Este tópico supõe que você tenha criado um arquivo ESQL. Para
obter mais informações, consulte Criando um Arquivo ESQL.
No arquivo ESQL, crie um módulo associado a um nó em
seu fluxo de mensagens. Um módulo pode ser associado a apenas um nó de um determinado tipo (Compute, Banco de Dados, DatabaseInput ou Filter). No módulo, é possível criar e utilizar funções e procedimentos, além das instruções e funções fornecidas. Você também pode criar constantes e variáveis locais.
Se você tiver criado constantes, funções ou
procedimentos no nível do esquema do broker, poderá referir-se a eles no módulo. Você
pode definir rotinas em um nível no qual muitos módulos diferentes
podem utilizá-las, o que pode economizar tempo de desenvolvimento e
esforço de manutenção.
Para criar ESQL para um nó, conclua as etapas a seguir.
- Abra o fluxo de mensagens que inclui o nó para o qual você deseja
criar ESQL. Na Visualização Desenvolvimento
do Broker, expanda o aplicativo, a biblioteca ou o Projeto do Message Broker apropriado, expanda a pasta Fluxos e, em seguida, dê um clique duplo no fluxo de mensagens.
O fluxo de mensagens se abre
no editor de Fluxo de Mensagens.
- Clique com o botão direito do mouse em um nó Compute, Banco de Dados, DatabaseInput ou Filter e, em seguida, clique em Abrir ESQL. O arquivo ESQL padrão desse fluxo de mensagens, message_flow_name.esql,
é aberto na visualização do editor. Se o arquivo ainda não existir, ele será criado, contendo um módulo estrutural para esse nó no final. O conteúdo exato depende do tipo de nó.
Se já tiver criado o arquivo, ele é aberto na visualização do editor e um novo módulo é criado e realçado.
O módulo a seguir é criado para um nó
Compute:
CREATE COMPUTE MODULE module_name
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
-- CALL CopyMessageHeaders();
-- CALL CopyEntireMessage();
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
O nome do módulo é determinado pelo valor definido para a
propriedade do nó correspondente. O nome padrão é message_flow_name_node_type.
A função principal contém chamadas para dois procedimentos (descritos na lista a seguir) que são declarados no módulo do nó Compute após a função Principal. Essas
chamadas são comentadas. Para incluir a função que eles fornecem, remova o comentário das linhas e coloque-as no ponto apropriado no ESQL criado para Principal.
- CopyMessageHeaders
- Esse procedimento executa loops através dos cabeçalhos contidos na
mensagem de entrada e copia cada um para a mensagem de saída.
- CopyEntireMessage
- Esse procedimento copia todo o conteúdo da mensagem de entrada, incluindo
os cabeçalhos, para a mensagem de saída.
Se você criar um módulo ESQL para um nó Banco de Dados, o
seguinte módulo será criado:
CREATE DATABASE MODULE module_name
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
RETURN TRUE;
END;
END MODULE;
Para um nó DatabaseInput,
o módulo que é criado contém três procedimentos, ReadEvents, BuildMessage
e EndEvent. Cada um desses procedimentos contém um texto clichê, que
descreve como o procedimento trabalha. Para obter mais informações sobre
como configurar nós DatabaseInput,
consulte Configurando um Nó DatabaseInput. Para um nó DatabaseInput, a primeira linha do módulo a seguir será criada:
CREATE DATABASEEVENT MODULE nome_do_módulo
Para um nó Filter,
o módulo é idêntico ao módulo criado para o nó Banco de Dados, exceto pela primeira
linha, em que se lê:
CREATE FILTER MODULE nome_do_módulo
- Inclua ESQL neste arquivo para personalizar o comportamento do nó.
Para os nós Compute, Banco de Dados ou Filter, inicie incluindo instruções
ESQL na função Principal, (após a instrução BEGIN e antes de RETURN TRUE). Para os nós DatabaseInput, inclua instruções ESQL
nos procedimentos ReadEvents, BuildMessage e EndEvent.
É possível incluir instruções DECLARE no módulo que não esteja dentro da função
Principal. Para incluir
uma nova linha ao arquivo, pressione Enter.
Para ajudá-lo a codificar ESQL válida, o editor mostra uma lista de
instruções e funções válidas no ponto do cursor. Para iniciar a assistência,
clique em . Em
alguns sistemas, é possível utilizar a combinação de teclas
Ctrl+Space.
Role pela lista para localizar e realçar a instrução ou função desejada e pressione Enter. O código apropriado é inserido em seu módulo.
A assistência de
conteúdo é fornecida nas seguintes áreas:
- Palavras-chave aplicáveis, baseadas na sintaxe de linguagem.
- Blocos de código que vão juntos, como BEGIN END;.
- As constantes definidas, identificadores, rótulos, funções e
procedimentos que podem ser utilizados, em que as rotinas podem estar
em qualquer projeto, mesmo se o projeto atual não fizer referência a eles.
- Nomes de tabelas e esquemas do banco de dados após o nome de correlação do banco de dados, nomes de colunas de tabelas em instruções INSERT, UPDATE,
DELETE e SELECT e, na maioria dos casos, cláusulas WHERE dessas instruções.
- Elementos de referência de campo de mensagem: nomes de domínios de tempo de execução (analisador),
formato de expressão de tipo, identificadores de espaços de nomes, nomes de elementos qualificados por espaços de nomes
e formato de expressão de índice.
- Conteúdo da pasta Propriedades na mensagem de saída.
- Para a instrução DECLARE NAMESPACE, destine espaços de nomes de
conjuntos de mensagens e nomes de esquema.
A assistência de conteúdo funcionará apenas se o ESQL puder
ser analisado corretamente. Erros tais como END faltando após BEGIN e
outras instruções de bloco não-terminadas provocam falhas no
analisador e nenhuma assistência de conteúdo é fornecida. Tente a
assistência de conteúdo em outras áreas em torno da instrução, quando
ela não funcionar, para estreitar o ponto de erro. Alternativamente, salve o arquivo ESQL; salvar o arquivo
causa a validação e todos os erros de sintaxe são gravados na visualização Problemas. Consulte os erros relatados
para compreender e corrigir a sintaxe de ESQL. Se você utilizar a assistência de conteúdo para gerar a maioria das
instruções (como instruções em bloco), essas instruções serão inseridas corretamente e haverá menos chances de erros.
- Quando concluir o trabalho com esse módulo, salve e
feche o arquivo ESQL.
Também é possível abrir o arquivo ESQL diretamente
e criar o módulo nesse arquivo usando o editor:
- Abra o arquivo ESQL no qual deseja criar o módulo.
- Na visualização do editor, posicione o cursor em uma nova linha e
utilize a assistência de conteúdo para selecionar a estrutura de
módulo apropriada para esse tipo de nó, por exemplo CREATE
COMPUTE MODULE END MODULE;.
Também é possível digitar esse texto, mas você deve se certificar de
que o que digitar seja consistente com a estrutura necessária, mostrada anteriormente. Utilize
assistência de conteúdo para obter ajuda adicional inserindo
apenas ESQL válida e inserindo instruções end correspondentes
(por exemplo, END MODULE;) onde elas são
necessárias.
- Conclua a codificação do módulo conforme apropriado.
Seja qual for o método utilizado para abrir o arquivo ESQL,
lembre-se de que o editor fornece funções para ajudar a codificar
ESQL. Esta seção refere-se à assistência de conteúdo; outras funções estão disponíveis. Para obter informações
sobre essas funções, consulte Editor ESQL.