Clique com o botão direito do mouse no nó (que deve ser Compute, Database ou Filter) e clique em Abrir ESQL. O arquivo ESQL padrão para esse fluxo de mensagens, <nome_do_fluxo_de_mensagens>.esql, é aberto na exibição do editor (o arquivo é criado se ainda não existir).(Se você
já tiver criado o arquivo padrão e clicar em Abrir ESQL,
o arquivo será aberto na visualização do editor e um novo módulo será criado e realçado).
Um módulo de estrutura é criado para esse nó no final do
arquivo ESQL. Seu conteúdo exato depende do tipo de nó. O seguinte módulo é 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 do 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 Principal contém chamadas para dois procedimentos, descritos a seguir,
que são declarados no módulo do nó Compute após a função Principal. Essas
chamadas são comentadas. Se desejar incluir a função fornecida por
eles, remova o comentário dessas linhas e coloque-as no ponto
apropriado no ESQL que foi criado como 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.
Se você estiver migrando da Versão 2.1, esse procedimento será
equivalente ao código gerado quando você seleciona o botão Copiar
Cabeçalhos de Mensagens na caixa de diálogo de 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 quando você seleciona o botão Copiar
Mensagem Inteira na caixa de diálogo de propriedades do nó Compute.
Se você criar um módulo ESQL para um nó Database, 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ó Database, exceto para a primeira linha, que diz:
CREATE FILTER MODULE <nome_do_módulo>
Inclua ESQL neste arquivo para personalizar o comportamento do nó.
Você deve iniciar 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, também é 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 não forem referidos pelo atual.
- 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.