No arquivo ESQL, crie um módulo associado a um nó em seu
fluxo de mensagens. Um módulo pode ser associado somente a um nó de um tipo específico (Compute, Banco de Dados ou Filter).
No módulo,
você pode criar e utilizar funções e procedimentos, bem como as 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 de esquema
do intermediário, também 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
o ESQL para um nó:
- Alterne para o Perspectiva do Desenvolvimento de Aplicativos do Intermediário.
- Na visualização Desenvolvimento do Intermediário, dê um clique duplo no fluxo
de mensagens que inclui o nó para o qual você deseja criar ESQL. O fluxo de mensagens é aberto na
visualização do editor.
- Clique cm o botão direito do mouse no nó (que deve ser Compute, Banco de Dados ou Filter) e, em seguida, clique em
Abrir ESQL. O arquivo ESQL padrão para esse fluxo de mensagem, message_flow_name.esql, é aberto na visualização do editor.
O arquivo é criado se ainda não existir.
Se já tiver criado o arquivo, ele é aberto na visualização do editor e um novo módulo é criado e realçado.
Se o arquivo for criado, ele contém um módulo estrutural para esse nó no final.
Seu conteúdo exato depende do tipo de nó. 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;
Para tornar o ESQL acima implementável para um intermediário
Versão 2.1, você deve transmitir as variáveis no nível do módulo
InputRoot e
OutputRoot para o procedimento ou função, conforme mostrado no texto em negrito no exemplo a seguir:
CREATE COMPUTE MODULE <module_name>
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
-- CALL CopyMessageHeaders(InputRoot, OutputRoot);
-- CALL CopyEntireMessage(InputRoot, OutputRoot);
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders(IN InputRoot REFERENCE, IN
OutputRoot REFERENCE) BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
CREATE LASTCHILD OF OutputRoot DOMAIN FIELDNAME (
InputRoot.*[I] ); /*create the parser for OutputRoot*/
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1; END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage(IN InputRoot REFERENCE, IN
OutputRoot REFERENCE) BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
O nome do módulo é determinado pelo valor definido para a
propriedade do nó correspondente. O padrão é
nome_do_fluxo_de_mensagens_tipo_do_nó.
A função Main contém chamadas para dois procedimentos, descritos a seguir,
que são declarados no módulo do nó Compute após a função Main. Essas
chamadas são comentadas. Se deseja incluir a função fornecida por
eles, remova o comentário das linhas e coloque-as no ponto
apropriado no ESQL que foi criado como Main.
- 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.
Se você
estiver migrando da Versão 2.1, esse procedimento
será equivalente ao código gerado ao seleciona o botão Copiar Cabeçalhos de Mensagens
na visualização Propriedades do nó Compute.
- CopyEntireMessage
- Esse procedimento copia todo o conteúdo da mensagem de entrada, incluindo
os cabeçalhos, para a mensagem de saída.
Se você estiver
migrando da Versão 2.1, esse procedimento será equivalente ao código gerado
ao selecionar o botão Copiar Mensagem Inteira na visualização Propriedades
do nó Compute.
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ó Filter, o módulo é idêntico àquele criado para o
nó Banco de Dados, exceto para a primeira linha, que é:
CREATE FILTER MODULE nome_do_módulo
- Inclua ESQL neste arquivo para personalizar o comportamento do nó.
Comece incluindo instruções ESQL na função
Main, que está após a instrução BEGIN e antes de RETURN TRUE. É possível incluir instruções DECLARE
no módulo que não estejam dentro da função Main. Para incluir
uma nova linha ao arquivo, pressione Enter.
Para ajudá-lo a
codificar ESQL válido, o editor exibe uma lista de instruções e
funções válidas no ponto do cursor.
Para chamar essa assistência, clique em . Em
alguns sistemas, é possível utilizar a combinação de teclas
Ctrl+Space. Role pela lista exibida para localizar e realçar o
que você deseja e pressione Enter.
O código apropriado
é inserido no módulo e a lista desaparece.
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.
- O esquema do banco de dados e os nomes das tabelas após o nome da correlação,
assim como nomes de colunas da tabela em instruções INSERT, UPDATE, DELETE e SELECT
e, na maior parte, as 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 na pasta Propriedades sob a raiz da 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. Como alternativa,
salve o arquivo ESQL. O salvamento do arquivo provoca a validação e
todos os erros de sintaxe são gravados na visualização Tarefas. 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), elas serão digitadas corretamente e haverá
menos chances de erros.
- Quando terminar de trabalhar com este módulo, você poderá fechar o arquivo ESQL.
Salve o arquivo antes de fechá-lo para manter todas as alterações e
validar o ESQL.
Se preferir, você pode abrir o arquivo ESQL diretamente e criar o módulo
nesse arquivo utilizando o editor. Para isso:
- Alterne para o Perspectiva do Desenvolvimento de Aplicativos do Intermediário.
- Selecione o arquivo ESQL no qual deseja criar o módulo. Dê um clique duplo
para abrir este arquivo na visualização do editor ou clique com o botão direito do mouse e clique em Open.
- 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;. Você pode digitar isso
se preferir, mas deve se certificar de o que digitar seja consistente
com a estrutura requerida, mostrada acima. Utilize a assistência do conteúdo para fornecer ajuda adicional, inserindo somente ESQL válido e inserindo instruções finais correspondentes (por exemplo, END MODULE;)
quando forem requeridas.
- 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.