Utilize o nó Compute para construir uma ou mais novas mensagens de saída. Estas mensagens de saída podem ser criadas modificando as informações fornecidas na mensagem de entrada ou as mensagens de saída podem ser criadas utilizando apenas novas informações que podem (ou não) ser obtidas de um banco de dados. 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.
Você especifica como as novas mensagens serão criadas, codificando ESQL no arquivo de recursos ESQL do fluxo de mensagens. Você pode criar e modificar os componentes da mensagem utilizando expressões ESQL e pode consultar elementos da mensagem de entrada e dados de um banco de dados externo. Uma expressão pode utilizar os operadores aritméticos, operadores de texto (por exemplo, concatenação), operadores lógicos e outras funções internas.
Utilize o nó Compute para:
Você define as instruções ESQL em um módulo associado a esse nó no ESQL (arquivo .esql) associado a esse fluxo de mensagens.Você deve criar esse arquivo para concluir a definição do fluxo de mensagens.
O nó Compute é representado no workbench pelo seguinte ícone:
Veja as amostras a seguir para consultar sobre como utilizar este nó:
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 cópia nova e 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 utilizado por nós subseqüentes no fluxo de mensagens.
Quando você tiver colocado uma instância do nó Compute em um fluxo de mensagens, poderá configurá-lo. Clique com o botão direito do mouse na visualização do editor clique em Propriedades. As propriedades básicas do nó são exibidas.
Todas as propriedades obrigatórias, para as quais é necessário inserir um valor (aquelas que não possuem um valor padrão definido) são marcadas com um asterisco no diálogo das propriedades.
Configure o nó Compute por:
Quando tiver concluído sua configuração, clique em Aplicar. Isso faz alterações no nó Compute sem fechar o diálogo de propriedades. Clique em OK para aplicar as alterações e fechar o diálogo de propriedades. Clique em Cancelar para fechar o diálogo e descartar todas as alterações feitas nas propriedades.
Se desejar acessar um banco de dados a partir deste nó:
Em sistemas z/OS, o intermediário utiliza o ID da tarefa iniciada ou o ID do usuário e a senha que foram especificados no comando JCL mqsisetdbparms de BIPSDBP, no conjunto de dados de customização <hlq>.SBIPPROC.
O valor escolhido é implementado para uma ou mais tabelas do banco de dados que você incluiu: você não pode selecionar um valor diferente para cada tabela.
Quando selecionar a caixa, o nó tratará todos os códigos de retorno positivos no banco de dados como erros e gerará exceções da mesma forma que faria para os erros negativos ou mais sérios.
Se você não selecionar a caixa, 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.
Se você limpar a caixa, deverá incluir o ESQL para verificar erros do banco de dados que podem ser retornados após cada chamada do banco de dados feita (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ê escolheu 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.
Codifique as instruções ESQL para personalizar o comportamento do nó Compute. Por exemplo, você pode personalizá-lo 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 armazenar o resultado em um campo na mensagem de saída.
Codifique as instruções ESQL que você deseja em um arquivo ESQL associado ao fluxo de mensagens no qual você incluiu essa instância no 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 um arquivo ESQL ainda não existir para esse fluxo de mensagens, clique com o botão direito do mouse no nó Compute e clique em Abrir ESQL.Isso cria e abre um novo arquivo ESQL na visualização do editor ESQL.
Se o arquivo já existir, clique no botão Procurar ao lado da propriedade Módulo ESQL. Isso exibe o diálogo Seleção de Módulo, que lista os módulos de nó Compute disponíveis definidos nos arquivos ESQL que podem ser acessados 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ê especificou não existir, ele será criado para você e o editor posicionará o arquivo para exibi-lo. Se o arquivo e o módulo já existirem, o editor posicionará o arquivo e exibirá e realçará o módulo correto.
Se preferir, você pode abrir o arquivo ESQL apropriado no Navegador de Recursos e selecionar este nó na visualização Contorno.
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;
DECLARE I INTEGER 1;por
DECLARE I INTEGER; SET I=1;
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.
Nos releases anteriores, as funções executadas por esses procedimentos eram fornecidas pelos dois botões de opções equivalentes ao nó Compute no diálogo de propriedades.
Também é possível criar um arquivo ESQL utilizando o
.Quando selecionar o Modo Calcular, especifique se os componentes Mensagem, Ambiente Local (anteriormente especificado como Lista de Destino) e Lista de Exceções, que são gerados no nó ou estão contidos na mensagem que chega, serão utilizados por padrão na mensagem de saída.
Este padrão é utilizado quando a mensagem transformada é roteada para o terminal de Saída, na conclusão do processamento do nó. O 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ó.
O componente Ambiente da árvore de mensagens não é afetado pela configuração do modo. Seu conteúdo, se houver, será transmitido deste nó na mensagem de saída.
Você deve definir essa propriedade para refletir corretamente o formato da mensagem de saída requerido. 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.
As opções são explicadas na tabela a seguir.
Modo | Descrição |
---|---|
Mensagem (o padrão) | A mensagem é gerada ou passada pelo nó Compute conforme é modificada no nó. |
Ambiente Local | A estrutura em árvore Ambiente Local é gerada ou passada pelo nó Compute conforme é modificada no nó. |
Ambiente Local e Mensagem | A estrutura em árvore Ambiente Local e a mensagem são geradas ou passadas pelo nó Compute conforme são modificadas pelo nó. |
Exceção | A Lista de Exceções é gerada ou passada pelo nó Compute conforme é modificada pelo nó. |
Exceção e Mensagem | A Lista de Exceções e a mensagem são geradas ou passadas pelo nó Compute conforme são modificadas pelo nó. |
Exceção e Ambiente Local | A Lista de Exceções e estrutura em árvore Ambiente Local são geradas ou passadas pelo nó Compute conforme são modificadas pelo nó. |
Todos | A mensagem, Lista de Exceções e Ambiente Local são geradas ou passadas pelo nó Compute conforme são especificadas pelo nó. |
Como o nó Compute possui a mensagem de entrada e de saída, você poderá utilizar ESQL para se referir aos campos em qualquer uma delas. 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. Observe que estas propriedades não causam a validação da mensagem de entrada. É 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 mais detalhes, consulte Validando Mensagens e Propriedades de Validação para Mensagens no Domínio MRM.
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 pode ser roteada para este 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. |
As tabelas a seguir descrevem as propriedades do nó; a coluna com cabeçalho M indica se a propriedade é obrigatória (marcado com um asterisco no diálogo de propriedades 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 no arquivo bar para implementá-lo).
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 as tabelas as quais foram referidas 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ó. Ele pode ser Automático ou Consolidação. Isso é válido apenas se você tiver selecionado uma tabela de banco de dados para a 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:
|
Tratar Avisos como Erros | Sim | Não | Não selecionada | Trata aviso SQL do banco de dados como erros. Se você selecionar a caixa de opções, esta ação é executada. |
Exceção emitida em erro do banco de dados | Sim | Não | Selecionada | Erros de banco de dados fazem com que o intermediário lance uma exceção. Se você selecionar a caixa de opções, esta ação é executada. |
As propriedades de Validação do nó Compute são descritas na tabela a seguir.
Propriedade | M | C | Padrão | Descrição |
---|---|---|---|---|
Validar | Sim | Sim | Nenhum | Determina se a validação ocorrerá. Os valores válidos são Nenhum, Conteúdo e Valor, Conteúdo e Herdar. |
Ação de Defeito | Sim | Não | Exceção | O que acontece se ocorrer um defeito de validação. 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 | Sim | 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. |
Corrigir | Sim | Não | Nenhum | Essa propriedade não pode ser editada. É fornecida uma correção mínima. Os valores válidos são Nenhum e Total. |
As propriedades das Opções de Mensagens Gerais do nó MQGet 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. Consulte Analisando On Demand para obter uma descrição completa dessa propriedade. |
Utilizar o Analisador Compacto MQRFH2C para o Domínio MQRFH2 | Não | Não | Falso | Esta propriedade controla se o MQRFH2C Compact Parser, no lugar do analisador MQRFH2, é utilizado para cabeçalhos MQRFH2. |
As propriedades do analisador XMLNSC para o nó Compute são descritas na tabela a seguir.
Propriedade | M | C | Padrão | Descrição |
---|---|---|---|---|
Utilizar Analisador Compacto XMLNSC para o Domínio XMLNS | Sim | Não selecionada | Não | ![]() ![]() |
Modo de Retenção de Conteúdo Misto | Sim | Não | Nenhum | Esta propriedade controla se o analisador XMLNSC cria elementos na árvore de mensagens ao encontrar texto misto em uma mensagem de entrada. Os valores válidos são Nenhum e Todos. A seleção de Todos significa que os elementos são criados para o texto misto. A seleção de Nenhum significa que o texto misto é ignorado e nenhum elemento é criado. |
Modo de Retenção de Comentários | Sim | Não | Nenhum | Esta propriedade controla se o analisador XMLNSC cria elementos na árvore de mensagens ao encontrar comentários em uma mensagem de entrada. Os valores válidos são Nenhum e Todos. Selecionar Tudo significa que são criados elementos para comentários. A seleção de Nenhum significa que os comentários são ignorados e nenhum elemento é criado. |
Modo de Retenção de Instruções de Processamento | Sim | Não | Nenhum | Esta propriedade controla se o analisador XMLNSC cria elementos na árvore de mensagens ao encontrar instruções de processamento na mensagem de entrada. Os valores válidos são Nenhum e Todos. Selecionar Tudo significa que são criados elementos para instruções de processamento. A seleção de Nenhum significa que as instruções de processamento são ignoradas e nenhum elemento é criado. |
As propriedades de Descrição do nó Compute são descritas na tabela a seguir.
Propriedade | M | C | Padrão | Descrição |
---|---|---|---|---|
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. |