Criando ESQL para um Nó

Crie ESQL para customizar o comportamento de um nó Compute, Banco de Dados ou Filter em um arquivo ESQL.

Antes de começar

Conclua a seguinte tarefa:

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ó:

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

  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; outras funções estão disponíveis. 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

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última atualização : 2009-02-13 16:12:48

ak09033_