Criando ESQL para um Nó

Crie o ESQL para personalizar o comportamento de um nó Compute, Database ou Filter dentro de um arquivo ESQL.

Antes de começar

Para concluir esta tarefa, você deve ter concluído a seguinte tarefa:

No arquivo ESQL, crie um módulo associado a um nó em seu fluxo de mensagens. Um módulo pode estar associado a somente um nó de um determinado tipo (Compute, Database 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ó:

  1. Alterne para o Perspectiva do Desenvolvimento de Aplicativos do Intermediário.
  2. Na visualização do Navegador, 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.
  3. 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>
  4. 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 Editar > Assistente de Conteúdo. 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.

  5. 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:

  1. Alterne para o Perspectiva do Desenvolvimento de Aplicativos do Intermediário.
  2. 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.
  3. 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.
  4. 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, mas existem funções adicionais disponíveis no editor. Para obter informações sobre essas funções, consulte Editor ESQL.

Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Esquemas do Intermediário
Módulos ESQL
Tarefas relacionadas
Desenvolvendo Fluxos de Mensagens
Modificando ESQL para um Nó
Alterando Definições do Editor ESQL
Referências relacionadas
Nós Internos
Referência de ESQL
Editor ESQL
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak09033_