Este tópico contém as seguintes seções:
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:
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.
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:
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.
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
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.
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 (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.
Clique em Cancelar para fechar o diálogo e descartar todas as alterações feitas nas 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. |