Compute

Utilize o nó Compute para construir uma ou mais novas mensagens de saída.

Este tópico contém as seguintes seções:

Propósito

As mensagens de saída que você cria no nó Compute podem ser criadas modificando as informações que são fornecidas na mensagem de entrada ou utilizando somente novas informações que podem ser obtidas de um banco de dados ou de outras origens. Os elementos da mensagem de entrada (por exemplo, cabeçalhos, campos de cabeçalhos e dados do corpo), seu ambiente associado e sua lista de exceções podem ser utilizados para criar a nova mensagem de saída.

Especifique como as novas mensagens serão criadas, codificando ESQL no arquivo de recursos ESQL do fluxo de mensagens. Para obter informações adicionais, consulte Especificando o ESQL.

Utilize o nó Compute para:

  • Criar uma nova mensagem utilizando um conjunto de instruções de designação
  • Copiar mensagens entre analisadores
  • Converter mensagens de um conjunto de códigos para outro
  • Transformar mensagens de um formato para outro

O nó Compute está contido no repositório Transformação da paleta e é representado no ambiente de trabalho pelo seguinte ícone:

 Ícone do nó Compute

Utilizando este nó em um fluxo de mensagens

Veja as amostras a seguir para consultar sobre como utilizar este nó: Você pode visualizar amostras apenas quando utilizar o centro de informações integrado ao Message Brokers Toolkit.

Considere um fluxo de mensagens no qual você deseja atribuir a cada pedido recebido um identificador exclusivo para finalidades de auditoria. O nó Compute não modifica sua mensagem de entrada; ele cria uma nova cópia modificada da mensagem como uma mensagem de saída. Você pode utilizar o nó Compute para inserir um identificador exclusivo para seu pedido na mensagem de saída, que pode ser utilizada por nós subseqüentes no fluxo de mensagens.

Configurando o Nó Compute

Quando tiver colocado uma instância do nó Compute em um fluxo de mensagens, você poderá configurá-lo; consulte Configurando um Nó do Fluxo de Mensagens. As propriedades do nó são exibidas na visualização Propriedades. Para exibir as propriedades do nó no diálogo Propriedades, dê um clique duplo no nó ou clique com o botão direito no nó e clique em Propriedades.

Todas as propriedades obrigatórias para as quais é necessário digitar um valor (aquelas que não têm um valor padrão definido) são marcadas com um asterisco.

Configure o nó Compute:

  1. Definindo a Interação do Banco de Dados
  2. Especificando o ESQL
  3. Definindo o Modo
  4. Validando Mensagens

Definindo a Interação do Banco de Dados

Para acessar um banco de dados desse nó:

  • Na guia Básico, especifique em Origem de Dados o nome pelo qual o banco de dados apropriado é conhecido no sistema no qual este fluxo de mensagens deve ser executado. O intermediário conecta-se às informações de ID de usuário e senha especificadas no comandomqsicreatebroker, mqsichangebroker oumqsisetdbparms.

    z/OS platform Nos sistemas z/OS, o intermediário utiliza o ID de tarefa iniciada do intermediário ou o ID do usuário e a senha especificados no comando mqsisetdbparms JCL, BIPSDBP no conjunto de dados de customização <hlq>.SBIPPROC.

  • Selecione a definição Transação no menu drop down. Os valores são:
    • Automático (o padrão). O fluxo de mensagens, do qual o nó Compute faz parte, será confirmado se for bem-sucedido. Ou seja, as ações definidas no módulo ESQL são executadas na mensagem e ela continua no fluxo de mensagens. Se o fluxo de mensagens falhar, ele será revertido. Se você escolher Automático, a capacidade para confirmar ou recuperar a ação do nó Compute no banco de dados dependerá do êxito ou falha de todo o fluxo de mensagens.
    • Consolidar. Para confirmar a ação do nó Compute no banco de dados, independentemente do êxito ou falha do fluxo de mensagens como um todo, selecione Confirmar. A atualização do banco de dados será consolidada mesmo que o próprio fluxo de mensagens falhar.

    O valor escolhido é implementado para uma ou mais tabelas de banco de dados que você incluiu; não é possível selecionar um valor diferente para cada tabela.

  • Para tratar mensagens de aviso do banco de dados como erros e fazer com que o nó propague a mensagem de saída para o terminal Failure, selecione Tratar avisos como erros (Treat warnings as errors). A caixa de opções fica desmarcada inicialmente.

    Quando você selecionar a caixa de opções, o nó tratará todos os códigos de retorno positivos do banco de dados como erros e gerará exceções da mesma forma que faria para os erros negativos ou mais graves.

    Se você não selecionar a caixa de opções, o nó tratará avisos como códigos de retorno normais e não gerará nenhuma exceção. O aviso mais significativo gerado é não-localizado, que pode ser tratado como um código de retorno normal de forma segura na maioria das circunstâncias.

  • Para forçar o intermediário a gerar uma exceção quando for detectado um erro do banco de dados, selecione Emitir exceção em erro do banco de dados. A caixa de opções é selecionada inicialmente.

    Se você desmarcar a caixa de opções, deverá incluir o ESQL para verificar algum erro do banco de dados que poderá ser retornado após cada chamada do banco de dados feita (você pode utilizar SQLCODE e SQLSTATE para fazer isso). Se ocorrer um erro, será necessário tratá-lo no fluxo de mensagens para assegurar a integridade do intermediário e do banco de dados; o erro será ignorado se você não tratá-lo pelo seu próprio processamento, porque você optou por não chamar o tratamento de erros padrão pelo intermediário. Por exemplo, você pode incluir a instrução ESQL THROW para emitir uma exceção neste nó, ou pode utilizar o nó Throw para gerar sua própria exceção posteriormente no fluxo de mensagens.

Especificando o ESQL

Codifique instruções ESQL para customizar o comportamento do nó Compute. Por exemplo, você pode customizar o nó para criar uma nova mensagem ou mensagens de saída, utilizando a mensagem de entrada ou o conteúdo do banco de dados (inalterado ou modificado) ou novos dados. Por exemplo, talvez você queira modificar um valor na mensagem de entrada, incluindo um valor de um banco de dados e armazenando o resultado em um campo na mensagem de saída.

Codifique instruções ESQL desejadas em um arquivo ESQL associado ao fluxo de mensagens no qual foi incluída esta instância do nó Compute. O arquivo ESQL, que, por padrão, tem o nome <nome_fluxo_mensagem>.esql, contém ESQL para cada nó no fluxo de mensagens necessário. Cada parte do código que está relacionada a um nó específico é conhecida como um módulo.

Se ainda não existir um arquivo ESQL para este fluxo de mensagens, dê um clique duplo no nó Compute ou clique com o botão direito do mouse no nó e clique em Abrir ESQL. Esta ação cria e abre um novo arquivo ESQL na visualização do editor ESQL. Se você preferir, poderá abrir o arquivo ESQL apropriado na visualização Desenvolvimento do Intermediário e selecionar esse nó na visualização Esboço.

Se o arquivo já existir, clique em Procurar ao lado da propriedade Módulo ESQL para exibir a caixa de diálogo Seleção de Módulo, que lista os módulos do nó Compute disponíveis, definidos nos arquivos ESQL que são acessíveis por este fluxo de mensagens (os arquivos ESQL podem ser definidos em outros projetos dependentes). Selecione o módulo apropriado e clique em OK. Se não houver módulos adequados disponíveis, a lista estará vazia.

Se o módulo que você tiver especificado não existir, ele será criado e o editor o exibirá. Se o arquivo e o módulo já existir, o editor realçará o módulo correto.

Se for criada uma estrutura de módulo para esse nó em um arquivo novo ou existente, ela consistirá no seguinte ESQL. O nome do módulo padrão será mostrado neste exemplo:

CREATE COMPUTE MODULE <flow_name>_Compute
       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 implementar o fluxo de mensagens que contém este nó Compute em um intermediário cuja versão seja anterior à Versão 5.0, faça as seguintes alterações na ESQL no modelo de módulo mostrado acima:
  • Substitua
    DECLARE I INTEGER 1;
    por
    DECLARE I INTEGER; SET I=1;
  • Substitua
    DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
    por
    DECLARE J INTEGER; SET J=CARDINALITY(InputRoot.*[]);

Se você criar seu próprio módulo ESQL, deverá criar essa estrutura exatamente como mostrado, exceto para as chamadas e definições de procedimentos (descritas a seguir). Você pode alterar o nome padrão, mas assegure-se de que o nome que você especifica corresponde ao nome da propriedade de nó correspondente Módulo ESQL. Para que o nome do módulo inclua um ou mais espaços, coloque o nome entre aspas na propriedade Módulo ESQL.

Adicione seu próprio ESQL para personalizar esse nó após a instrução BEGIN, que segue CREATE FUNCTION e antes de RETURN TRUE. Você pode utilizar duas chamadas incluídas na estrutura, para os procedimentos CopyEntireMessage e CopyMessageHeaders.

Esses procedimentos, definidos depois da função Principal, fornecem funções comuns que podem ser necessárias na manipulação de mensagens. As chamadas na estrutura são colocadas como comentário; remova as marcas de comentário para utilizar o procedimento. Se não desejar utilizar um procedimento, remova a chamada e a definição do procedimento do módulo.

Definindo o Modo

A propriedade Modo de Cálculo controla quais componentes são utilizados por padrão na mensagem de saída. Selecione a propriedade para especificar se os componentes Mensagem, LocalEnvironment (anteriormente especificados como DestinationList) e Lista de Exceções gerados no nó ou contidos na mensagem que chega são utilizados.

Esse valor padrão é utilizado quando a mensagem transformada é roteada para o terminal Out, na conclusão do processamento do nó. O valor padrão também será utilizado sempre que uma instrução PROPAGATE não especificar a composição de sua mensagem de saída.

Os componentes que não estão incluídos em sua seleção serão transmitidos inalterados; mesmo que você modifique estes componentes, as atualizações serão locais para este nó.

De modo inverso, esses componentes incluídos na seleção não são transmitidos e as atualizações feitas no nó persistem.

Os sete possíveis valores que a propriedade Modo de Cálculo pode utilizar são listados na tabela a seguir.
Modo Descrição
Mensagem (o padrão) A mensagem é gerada ou transmitida pelo nó Compute conforme modificada no nó.
LocalEnvironment A estrutura em árvore LocalEnvironment é gerada ou transmitida pelo nó Compute conforme modificada no nó.
LocalEnvironment e Mensagem A estrutura em árvore LocalEnvironment e a mensagem são geradas ou transmitidas pelo nó Compute conforme modificadas pelo nó.
Exceção A Lista de Exceções é gerada ou transmitida pelo nó Compute conforme modificada pelo nó.
Exceção e Mensagem A Lista de Exceções e a mensagem são geradas ou transmitidas pelo nó Compute conforme modificadas pelo nó.
Exceção e LocalEnvironment A Lista de Exceções e a estrutura em árvore LocalEnvironment são geradas ou transmitidas pelo nó Compute conforme modificadas pelo nó.
Todos A mensagem, Lista de Exceções e LocalEnvironment são gerados ou transmitidos pelo nó Compute conforme modificados pelo nó.

O valor da propriedade Modo de Cálculo especifica quais novas árvores de mensagens são propagadas a partir do nó Compute. Portanto, para as árvores de mensagens que são selecionadas, as mensagens de entrada são descartadas, a menos que sejam explicitamente copiadas para a nova árvore de mensagens de saída equivalente.

Se Todos for selecionado, o nó Compute esperará gerar todas as três novas árvores de mensagens para Root, LocalEnvironment e ExceptionList, preenchendo OutputRoot, OutputLocalEnvironment e OutputExceptionList. As árvores de mensagens de entrada não são transmitidas para a saída, a menos que sejam copiadas explicitamente da Entrada para a Saída.

Portanto, se a propriedade Modo de Cálculo estiver configurada como Todos, será necessário codificar a seguinte ESQL para permitir que as árvores de entrada sejam propagadas para o terminal de saída.
  SET OutputRoot = InputRoot;
  SET OutputLocalEnvironment = InputLocalEnvironment;  SET OutputExceptionList = InputExceptionList;
Se a ESQL era CopyEntireMessage(), LocalEnvironment e ExceptionList não serão copiados e nem propagados para o terminal de saída; eles serão perdidos nesse nó no fluxo de mensagens.

Para produzir uma mensagem de saída nova ou alterada e propagar os mesmos LocalEnvironment e ExceptionList, configure a propriedade Modo de Cálculo como Mensagem para que LocalEnvironment e ExceptionList que são transmitidos para o nó Compute ou Mapeamento, sejam transmitidos a partir do nó Compute.

O Modo de Cálculo se aplica apenas à propagação a partir do nó. É possível criar todas as três árvores de saída em um nó Compute ou Mapeamento e elas podem ser manipuladas e existir no nó. No entanto, o Modo de Cálculo determina se essas árvores de saída são utilizadas durante a propagação a partir do nó.

Durante a propagação a partir do nó, as seguintes árvores são propagadas a partir do nó Compute ou Mapeamento para as seguintes configurações.
Modo de Cálculo Árvores propagadas
Todos OutputRoot, OutputLocalEnvironment, OutputExceptionList
Mensagem OutputRoot, InputLocalEnvironment, InputExceptionList
LocalEnvironment InputRoot, OutputLocalEnvironment, InputExceptionList
LocalEnvironment e Mensagem OutputRoot, OutputLocalEnvironment, InputExceptionList
Exceção InputRoot, InputLocalEnvironment, OutputExceptionList
Exceção e Mensagem OutputRoot, InputLocalEnvironment, OutputExceptionList
Exceção e LocalEnvironment InputRoot, OutputLocalEnvironment, OutputExceptionList

Onde uma árvore de saída é nomeada, o ESQL cria essa árvore de mensagens antes da propagação. Se sua ESQL não criar a árvore, nenhuma árvore será propagada para esse nome de correlação e a árvore de entrada não será utilizada em seu local, porque a propriedade Modo de Cálculo não indicou esta opção. Portanto, dependendo das configurações da propriedade Modo de Cálculo e de sua ESQL, você pode excluir uma árvore que foi introduzida no nó, porque ela não foi transferida para a árvore de saída ou propagada uma árvore alterada conforme planejado.

O contrário também é verdadeiro. Se sua ESQL interrogar as árvores de entrada e não precisar propagar estas árvores, o valor da propriedade Modo de Cálculo poderá indicar que a árvore de mensagens é propagada quando você não planeja que isso ocorra. Por exemplo, talvez você não queira propagar LocalEnvironment e ExceptionList a partir de um nó Compute mas, porque selecionou Mensagem, as versões de entrada das árvores serão propagadas. Mesmo que a ESQL exclua explicitamente OutputLocalEnvironment e OutputExceptionList, estas alterações serão locais a esse nó, porque a configuração da propriedade Modo de Cálculo causa a propagação das árvores de entrada.

O componente Ambiente da árvore de mensagens não é afetado pela configuração da propriedade Modo de Cálculo. Seu conteúdo, se houver, será transmitido deste nó na mensagem de saída.

Defina essa propriedade para refletir o formato da mensagem de saída que você precisa. Se você selecionar uma opção (ou aceitar o valor padrão) que não inclui uma parte da mensagem específica, essa parte da mensagem não será incluída em nenhuma mensagem de saída construída.

O nó Compute possui uma mensagem de entrada e de saída, portanto, é possível utilizar ESQL para consultar campos em qualquer mensagem. Você também pode trabalhar com InputLocalEnvironment e OutputLocalEnvironment e InputExceptionList e OutputExceptionList, e também com os corpos das mensagens de entrada e de saída.

Validando Mensagens

Configure as propriedades de validação para definir como a mensagem produzida pelo nó Compute será validada. Essas propriedades não fazem com que a mensagem de entrada seja validada. É esperado que, se tal validação for requerida, ela já tenha sido executada pelo nó input ou por um nó de validação anterior.

Para obter detalhes adicionais, consulte Validando Mensagens e Propriedades de Validação.

Terminais e Propriedades

Os terminais do nó Compute são descritos na tabela a seguir.

Terminal Descrição
In O terminal de entrada que aceita a mensagem para processamento pelo nó.
Failure O terminal de saída para o qual a mensagem de entrada será roteada, se ocorrer uma exceção não tratada durante a computação.
Out O terminal de saída para o qual a mensagem transformada será roteada quando o processamento no nó estiver concluído. A mensagem transformada também poderá ser roteada para esse terminal por uma instrução PROPAGATE.
Out1 O primeiro terminal de saída alternativo para o qual a mensagem transformada pode ser roteada por uma instrução PROPAGATE.
Out2 O segundo terminal de saída alternativo para o qual a mensagem transformada pode ser roteada por uma instrução PROPAGATE.
Out3 O terceiro terminal de saída alternativo para o qual a mensagem transformada pode ser roteada por uma instrução PROPAGATE.
Out4 O quarto terminal de saída alternativo para o qual a mensagem transformada pode ser roteada por uma instrução PROPAGATE.

Para obter a sintaxe da instrução PROPAGATE, consulte Instrução PROPAGATE.

As tabelas a seguir descrevem as propriedades do nó. A coluna com cabeçalho M indica se a propriedade é obrigatória (marcada com um asterisco caso seja necessário digitar um valor quando nenhum padrão for definido); a coluna com cabeçalho C indica se a propriedade é configurável (você poderá alterar o valor quando incluir o fluxo de mensagens ao arquivo BAR para implementá-lo).

As propriedades Descrição do nó Compute são descritas na tabela a seguir.

Propriedade M C Padrão Descrição
Nome do Nó Não Não O tipo de nó O nome do nó.
Descrição Breve Não Não   Uma breve descrição do nó.
Descrição Longa Não Não   Texto que descreve a finalidade do nó no fluxo de mensagens.

As propriedades Básicas do nó Compute são descritas na tabela a seguir.

Propriedade M C Padrão Descrição
Fonte de Dados Não Sim   O nome da origem de dados ODBC para o banco de dados no qual residem todas as tabelas as quais você consulta no arquivo ESQL associado a esse fluxo de mensagens (identificado na propriedade Módulo ESQL). Você pode especificar apenas uma origem de dados para o nó.
Transação Sim Não Automático O modo de transação para o nó. As opções válidas são Automático (Automatic) e Confirmar (Commit). A propriedade só será válida se você tiver selecionado uma tabela de banco de dados para entrada.
Módulo ESQL Sim Não Compute O nome do módulo no arquivo ESQL que contém as instruções a serem executadas no banco de dados e nas mensagens de entrada e de saída.
Modo de Computação Sim Não Mensagem Escolher entre:
  • Mensagem
  • LocalEnvironment
  • LocalEnvironment e Mensagem
  • Exceção
  • Exceção e Mensagem
  • Exceção e LocalEnvironment
  • Todos
Para obter informações adicionais sobre como configurar as opções de modo, consulte Definindo o Modo.
Tratar Avisos como Erros Sim Não Não Selecionada Se você selecionar a caixa de opções, os avisos de SQL do banco de dados serão tratados como erros.
Exceção emitida em erro do banco de dados Sim Não Selecionada Se você selecionar essa caixa de opções, os erros do banco de dados farão o intermediário emitir uma exceção.

As propriedades de Opções do Analisador para o nó Compute são descritas na tabela a seguir.

Propriedade M C Padrão Descrição
Sincronização de Análise Sim Não On Demand Esta propriedade controla quando uma mensagem de entrada é analisada. Os valores válidos são On Demand, Imediato e Completo.

Para obter uma descrição completa desta propriedade, consulte Analisando On Demand.

Utilizar Analisador Compacto XMLNSC para o Domínio XMLNS Não Não Não Selecionada Início da mudançaA configuração dessa propriedade faz com que o MQRFH2 de saída especifique XMLNS em vez do analisador XMLNSC, permitindo que um aplicativo externo permaneça inalterado. Se as mensagens de saída não contiverem cabeçalhos MQRFH2, essa propriedade não terá efeito.Fim da mudança
Reter conteúdo misto (Retain mixed content) Não Não Não Selecionada Esta propriedade controla se o analisador XMLNSC cria elementos na árvore de mensagens ao encontrar texto misto em uma mensagem de entrada. Se você selecionar a caixa de opções, serão criados elementos para texto misto. Se você desmarcar a caixa de opções, texto misto será ignorado e nenhum elemento será criado.
Reter comentários (Retain comments) Não Não Não Selecionada Esta propriedade controla se o analisador XMLNSC cria elementos na árvore de mensagens ao encontrar comentários em uma mensagem de entrada. Se você selecionar a caixa de opções, serão criados elementos para comentários. Se você desmarcar a caixa de opções, comentários serão ignorados e nenhum elemento será criado.
Reter instruções de processamento (Retain processing instructions) Não Não Não Selecionada Esta propriedade controla se o analisador XMLNSC cria elementos na árvore de mensagens ao encontrar instruções de processamento na mensagem de entrada. Se você selecionar a caixa de opções, serão criados elementos para instruções de processamento. Se você desmarcar a caixa de opções, instruções de processamento serão ignoradas e nenhum elemento será criado.

As propriedades Validação do nó Compute são descritas na tabela a seguir.

Para obter uma descrição completa dessas propriedades, consulte Propriedades de Validação.
Propriedade M C Padrão Descrição
Validar Não Sim Nenhuma Essa propriedade controla se a validação ocorre. Os valores válidos são Nenhum, Conteúdo e Valor, Conteúdo e Herdar.
Ação de Defeito Não Não Exceção Essa propriedade controla o que acontecerá se uma falha de validação ocorrer. Você poderá configurar esta propriedade apenas se Validar estiver configurado como Conteúdo ou Conteúdo e Valor. Os valores válidos são Rastreio do Usuário, Registro de Erros Local, Exceção e Lista de Exceções.
Incluir Todas as Limitações do Valor Não Não Selecionada Essa propriedade não pode ser editada. A ação padrão, indicada pela caixa de opções que está sendo selecionada, é que todas as restrições de valores estão incluídas na validação.
Correção Não Não Nenhuma Essa propriedade não pode ser editada. É fornecida uma correção mínima. Os valores válidos são Nenhum e Total.
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

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

ac04660_