Nó Filter

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

Finalidade

Utilize o nó Filter para rotear uma mensagem de acordo com o conteúdo da mensagem. Você define a rota codificando uma expressão de filtro em ESQL. Você pode incluir elementos das propriedades da mensagem de entrada ou da mensagem na expressão de filtro. Também pode utilizar dados retidos em um banco de dados externo para concluir a expressão. O terminal de saída para o qual a mensagem será roteada depende se a expressão for avaliada como true, false ou unknown.

Conecte os terminais que abrangem todas as situações que poderiam resultar do filtro; se o nó propagar a mensagem para um terminal que não esteja conectado, a mensagem será descartada mesmo se for transacional.

Esse nó aceita instruções ESQL da mesma forma que os nós Compute e Database. A última declaração executada deve ser RETURN <expression>, cuja expressão é avaliada como valor booleano. Este valor Booleano determina para qual terminal a mensagem será roteada. Em muitos casos, o algoritmo de roteamento é uma comparação simples de valores do campo de mensagem. A comparação é descrita pela expressão e a instrução RETURN é a única instrução. Se o código retornar sem uma expressão (RETURN;) ou com uma expressão NULL, o nó propagará a mensagem no terminal desconhecido.

Se seu fluxo de mensagens necessitar de opções de roteamento mais complexas, utilize os nós RouteToLabel e Label.

O nó Filter é representado no workbench pelo seguinte ícone:

 Ícone do nó Filter

Utilizando Este Nó em um Fluxo de Mensagens

Veja as amostras a seguir para obter exemplos de como esse nó pode ser utilizado:

Considere uma situação em que você produziu um teste on-line com 10 questões de múltipla escolha. Cada mensagem que chega tem um nome e endereço de candidato seguidos por uma série de respostas. Cada resposta é verificada e se estiver correta o campo SCORE será incrementado em 1. Quando todas as respostas tiverem sido verificadas, o campo SCORE será testado para ver se é superior a 5. Se for, o nó Filter propagará a mensagem para o fluxo que tratar com êxito a entrada candidata; caso contrário, a mensagem será filtrada no processo de rejeição e uma mensagem de rejeição será criada.

Configurando o Nó Filter

Quando tiver colocado uma instância do nó Filter em um fluxo de mensagens, será possível 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ó Filter da seguinte forma:

  1. Especifique em Origem de Dados o nome através do qual o banco de dados apropriado será é conhecido no sistema no qual o fluxo de mensagens será executado. O intermediário conecta-se às informações de ID de usuário e senha especificadas no comandomqsicreatebroker, mqsichangebroker oumqsisetdbparms.

    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.

  2. Na Expressão de Filtro, identifique o módulo dentro de um arquivo ESQL que contém as instruções ESQL que o nó executa. Para que o nome do módulo inclua um ou mais espaços, coloque-o entre aspas duplas na propriedade Expressão de Filtro.

    Codifique as instruções ESQL para personalizar o comportamento do nó Filter em um arquivo ESQL que está associado ao fluxo de mensagens no qual foi incluída essa instância do nó Filter. 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ó Filter e clique em Abrir ESQL.Isso cria e abre um novo arquivo ESQL na exibição do editor ESQL.

    Se o arquivo já existir, clique no botão Procurar ao lado da propriedade Expressão do Filtro. Isso exibe o diálogo Module Selection, que lista os módulos de nó Filter 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 especificado não existir, ele será criado 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 exibiçã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 FILTER MODULE <flow_name>_Filter
           CREATE FUNCTION Main() RETURNS BOOLEAN
             BEGIN
                   RETURN TRUE;
                 END;
    END MODULE;

    Se você criar seu próprio módulo ESQL, deverá criar exatamente essa estrutura. Você pode atualizar o nome padrão, mas assegure-se de que o nome especificado corresponda ao nome da propriedade do nó correspondente Expressão de Filtro.

    Inclua seu próprio ESQL para personalizar esse nó após a instrução BEGIN e antes da instrução RETURN. Se a expressão na instrução RETURN não for TRUE ou FALSE, seu valor será resolvido para determinar o terminal para o qual a mensagem será propagada. Se a expressão for resolvida como NULL, ou você codificar RETURN;, ou omitir a instrução RETURN, o nó propagará a mensagem no terminal desconhecido.

    Você também poderá clicar em Arquivo > Novo > Arquivo ESQL do Fluxo de Mensagens para criar um arquivo ESQL.

    Você pode utilizar todas as instruções ESQL incluindo SET, WHILE, DECLARE e IF nesse módulo mas, (diferente do nó Compute) o nó Filter propaga a mensagem que ele recebe em seu terminal de entrada para seu terminal de saída inalterada. Isso significa que, como o nó Database, você tem apenas uma mensagem a ser referida em um nó Filter.

    Como não é possível modificar nenhuma parte de nenhuma mensagem, a instrução de designação (a instrução SET, não a cláusula SET da instrução INSERT) poderá designar os valores apenas para variáveis temporárias. O escopo das medidas que você toma com uma instrução de designação é, portanto, limitada.

  3. 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ó Filter faz parte, será consolidado se for bem-sucedido. Ou seja, as ações definidas no módulo ESQL são executadas e a mensagem continua no fluxo de mensagens. Se o fluxo de mensagens falhar, ele será revertido. Portanto, se você escolher Automático, a capacidade de consolidar ou reverter a ação do nó Filter no banco de dados dependerá do sucesso ou da falha do fluxo de mensagens inteiro.
    • Consolidar. Se desejar consolidar quaisquer ações não consolidadas executadas nesse fluxo de mensagens no banco de dados conectado a este nó, independentemente do êxito ou defeito do fluxo de mensagens como um todo, selecione Consolidar.As alterações no banco de dados serão consolidadas mesmo que o próprio fluxo de mensagens falhe.
  4. Selecione Básico no navegador do diálogo de propriedades e defina ou limpe as caixas de opções:
    • Se desejar que mensagens de aviso do banco de dados sejam tratadas como erros e propagar a mensagem de saída do nó para o terminal failure, selecione a caixa de opções Tratar Avisos Como Erros. A caixa é inicialmente limpa.

      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ê desejar que o intermediário gere uma exceção quando for detectado um erro do banco de dados, selecione a caixa de opções Emitir Exceção em Erro do Banco de Dados. A caixa é inicialmente selecionada.

      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 (você pode utilizar SQLCODE e SQLSTATE para fazer isso). Se tiver ocorrido 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.

  5. Selecione Descrição no navegador de diálogo de propriedades para inserir uma descrição breve, uma descrição longa, ou ambas.
  6. Clique em Aplicar para fazer as alterações no nó Filter 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.

Terminais e Propriedades

Os terminais do nó Filter 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 será roteada se for detectado um defeito durante o cálculo.
Desc. O terminal de saída para o qual a mensagem será roteada se a expressão de filtro especificada for avaliada como unknown ou null.
Falso O terminal de saída para o qual a mensagem será roteada se a expressão de filtro especificada for avaliada como false.
Verdadeiro O terminal de saída para o qual a mensagem será roteada se a expressão de filtro especificada for avaliada como true.

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ó Filter 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 do banco de dados no qual residem as tabelas as quais foram referidas no ESQL associado a este nó (identificado pela propriedade Expressão do Filtro).
Transação Sim Não Automático O modo de transação para o nó. Ele pode ser Automático ou Consolidação.
Expressão de Filtro Sim Não Filtro O nome do módulo no recurso ESQL (arquivo) que contém as instruções a serem executadas na mensagem que é recebida no nó.
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 Descrição do nó Filter 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.
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ac04780_