Utilize o nó Compute para construir uma ou mais novas mensagens de saída.
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:
O nó Compute está contido no repositório Transformação da paleta e é representado no WebSphere Message Broker Toolkit pelo seguinte ícone:
Você só pode visualizar informações sobre amostras quando usa o centro de informações que está integrado ao WebSphere Message Broker Toolkit ou o centro de informações on-line. Você só poderá executar amostras quando usar o centro de informações que está integrado ao WebSphere Message Broker 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.
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.
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:
Para configurar o acesso a um banco de dados a partir desse nó:
Nos sistemas z/OS, o broker utiliza o ID de tarefa iniciada do broker ou o ID do usuário e a senha especificados no comando mqsisetdbparms JCL, BIPSDBP no conjunto de dados de customização <hlq>.SBIPPROC.
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.
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ção, o nó trata avisos como códigos de retorno típicos e não gera nenhuma exceção. O aviso mais significativo criado é não localizado, que pode ser manipulado como um código de retorno típico na maioria das circunstâncias.
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 broker 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 broker. 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.
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. Por padrão, arquivos ESQL são implementados como recursos individuais e podem ser editados e reimplementados sem reimplementar os fluxos de mensagens que fazem referência a eles. Para obter informações adicionais, consulte Implementando um Arquivo ESQL.
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, será possível abrir o arquivo ESQL apropriado no Visualização Desenvolvimento do Broker e selecionar este nó na visualização Estrutura de Tópicos.
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;
Se você criar seu próprio módulo ESQL, deverá criar esta estrutura exatamente conforme mostrado, exceto para as chamadas e definições de procedimento (descritas posteriormente nesta seção). 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. Se desejar que o nome do módulo inclua um ou mais espaços, coloque o nome entre aspas duplas 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.
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 Message, LocalEnvironment (previamente especificado como DestinationList) e Exception List que são gerados no nó ou contidos na mensagem de entrada são usados.
Esse valor padrão é utilizado quando a mensagem transformada é roteada para o terminal de Saída (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.
Modo | Descrição |
---|---|
Mensagem (o padrão) | A mensagem é gerada ou transmitida pelo nó Compute conforme modificada no nó. A mensagem contém a árvore OutputRoot modificada, a árvore InputLocalEnvironment original e a árvore InputExceptionList original. |
Ambiente Local | A estrutura da árvore LocalEnvironment é gerada ou transmitida pelo nó Compute conforme modificada no nó. A mensagem contém a árvore InputRoot original, a árvore OutputLocalEnvironment modificada e a árvore InputExceptionList original. |
Ambiente Local e Mensagem | A estrutura em árvore LocalEnvironment e a mensagem são geradas ou transmitidas pelo nó Compute conforme modificadas pelo nó. A mensagem contém a árvore OutputRoot modificada, a árvore OutputLocalEnvironment modificada e a árvore InputExceptionList original. |
Exceção | A Lista de Exceções é gerada ou transmitida pelo nó Compute conforme modificada pelo nó. A mensagem contém a árvore InputRoot original, a árvore InputLocalEnvironment original e a árvore OutputExceptionList modificada. |
Exceção e Mensagem | A Lista de Exceções e a mensagem são geradas ou transmitidas pelo nó Compute conforme modificadas pelo nó. A mensagem contém a árvore OutputRoot modificada, a árvore InputLocalEnvironment InputLocalEnvironment original e a árvore OutputExceptionList modificada. |
Exceção e Ambiente Local | A Lista de Exceções e a estrutura em árvore LocalEnvironment são geradas ou transmitidas pelo nó Compute conforme modificadas pelo nó. A mensagem contém a árvore InputRoot original, a árvore OutputLocalEnvironment modificada e a árvore OutputExceptionList modificada. |
Todos | A mensagem, Lista de Exceções e LocalEnvironment são gerados ou transmitidos pelo nó Compute conforme modificados pelo nó. A mensagem contém a árvore OutputRoot modificada, a árvore OutputLocalEnvironment modificada e a árvore OutputExceptionList modificada. |
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.
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 estes podem ser manipulados 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ó.
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 Ambiente Local | 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 seu ESQL interrogar as árvores de entrada e não precisar propagar estas árvores, o valor da propriedade Modo de Cálculo poderá significar que a árvore de mensagens é propagada quando você não pretende que isso aconteça. 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ó do Compute possui uma mensagem de entrada e uma de saída, de forma que você pode usar 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.
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.
Os terminais do nó Compute são descritos na tabela a seguir.
Terminal | Descrição |
---|---|
Entrada | O terminal de entrada que aceita a mensagem para processamento pelo nó. |
Defeito | 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. |
Saída | 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 se você precisar inserir um valor quando nenhum padrão for definido); a coluna com cabeçalho C indica se a propriedade é configurável (é possível alterar o valor quando você incluir o fluxo de mensagens no arquivo BAR para implementação).
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 | Propriedade do Comando mqsiapplybaroverride |
---|---|---|---|---|---|
Fonte de Dados | Não | Sim | O nome da origem de dados ODBC para o banco de dados que contém as tabelas às quais você se refere no arquivo ESQL que está associado com este fluxo de mensagens (identificado na propriedade Módulo ESQL). Você
pode especificar apenas uma origem de dados para o nó. Se o ESQL que está associado a este nó incluir uma instrução PASSTHRU ou uma função SELECT e uma referência de banco de dados, você deverá especificar um valor para a propriedade Origem de Dados. |
dataSource | |
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 | Não | Não | Compute | O nome do módulo no arquivo ESQL que contém as instruções para executar no banco de dados e as mensagens de entrada e saída. | |
Modo de Computação | Sim | Não | Mensagem | Escolher entre:
|
|
Tratar Avisos como Erros | Sim | Não | Limpo | 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 broker emitir uma exceção. | |
Conectar antes do início do fluxo |
Não |
Sim |
Limpo |
Por padrão, o broker se conecta à origem de dados quando necessário em um fluxo de mensagens. Se você marcar a caixa de seleção, as conexões de origem de dados serão feitas antes de o fluxo receber uma mensagem, em vez de durante o processamento do fluxo de mensagens. |
Propriedade | M | C | Padrão | Descrição | Propriedade do Comando mqsiapplybaroverride |
---|---|---|---|---|---|
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. | validateMaster |
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. |
Propriedade | M | P | Default | Descrição |
---|---|---|---|---|
Eventos | Não | Não | Nenhum | Eventos definidos para o nó são exibidos nesta guia. Por padrão, nenhum evento de monitoramento é definido em um nó do fluxo de mensagens. Utilize Incluir, Editar,
e Excluir para criar, alterar ou excluir eventos de monitoração no nó; consulte Configurando fontes de eventos de monitoramento utilizando propriedades de monitoramento para detalhes. É possível ativar e desativar eventos mostrados aqui selecionando ou desmarcando a caixa de opções Ativado. |