Utilize o nó Filter para rotear uma mensagem de acordo com o conteúdo da mensagem.
Este tópico contém as seguintes seções:
Crie uma expressão de filtro em ESQL para definir a rota que a mensagem deve seguir. Você pode incluir elementos da mensagem de entrada ou das propriedades de mensagem na expressão de filtro e pode utilizar dados mantidos 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.
O nó Filter aceita instruções ESQL da mesma maneira que os nós Compute e Banco de Dados. A última instrução executada deve ser uma instrução RETURN <expression>, cuja expressão é avaliada como valor booleano. Esse valor booleano determina o terminal para o qual a mensagem é 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 você codificar RETURN sem uma expressão (RETURN;) ou com uma expressão null, o nó propagará a mensagem para o terminal Unknown.
Se seu fluxo de mensagens exigir opções de roteamento mais complexas, utilize os nós RouteToLabel e Label.
O nó Filter está contido no repositório Roteamento da paleta e é representado no ambiente de trabalho pelo seguinte ícone:
Examine as amostras a seguir para obter exemplos de como utilizar esse nó:
Você pode visualizar amostras apenas quando utilizar o centro de informações integrado ao Message Brokers Toolkit.Considere uma situação na qual você produziu um teste on-line com dez 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 um. Quando todas as respostas tiverem sido verificadas, o campo SCORE será testado para ver se é maior que cinco. Se for, o nó Filter propagará a mensagem para o fluxo que manipula a entrada candidata bem-sucedida; caso contrário, a mensagem será filtrada no processo de rejeição e será criada uma mensagem de rejeição.
Quando tiver colocado uma instância do nó Filter 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.
Os terminais do nó Filter são descritos na tabela a seguir.
Terminal | Descrição |
---|---|
In | O terminal de entrada que aceita uma mensagem para processamento pelo nó |
Failure | O terminal de saída para o qual a mensagem será roteada se for detectada uma falha durante o cálculo. |
Unknown | O terminal de saída para o qual a mensagem será roteada se a expressão de filtro especificada for avaliada como desconhecida(unknown) ou nula (null). |
False | O terminal de saída para o qual a mensagem será roteada se a expressão de filtro especificada for avaliada como falsa (false). |
True | O terminal de saída para o qual a mensagem será roteada se a expressão de filtro especificada for avaliada como verdadeira (true). |
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 valor-padrão estiver definido); a coluna com cabeçalho C indica se a propriedade é configurável (você pode alterar o valor quando incluir o fluxo de mensagens no arquivo BAR para implementá-lo).
As propriedades Descrição do nó Filter 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 descrição breve 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ó 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 que contém
as tabelas às quais você se refere no ESQL que está associado a este nó
(identificado pela propriedade Expressão de Filtro).
Este nome identifica o banco de dados apropriado 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.
|
|
Transação | Sim | Não | Automático | O modo de transação para o nó. Os valores são:
|
Expressão de Filtro | Sim | Não | Filter | O nome do módulo no recurso ESQL (arquivo)
que contém as instruções para executar na mensagem que é recebida
no nó. O arquivo ESQL que, por padrão, possui o nome <message_flow_name>.esql,
contém o ESQL para cada nó no fluxo de mensagens que o requer. Cada parte do
código que está relacionada a um nó específico é conhecida como um módulo.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 instruções ESQL para customizar o comportamento do nó Filter em um arquivo ESQL associado ao fluxo de mensagens no qual foi incluída esta instância do nó Filter. Se ainda não existir um arquivo ESQL para este fluxo de mensagens, dê um clique duplo no nó Filter ou clique com o botão direito do mouse no nó e clique em Abrir ESQL para criar e abrir um novo arquivo ESQL na visualização do editor ESQL. Se o arquivo já existir, clique em Procurar ao lado da propriedade Expressão de Filtro para exibir a caixa de diálogo Seleção de Módulo, que lista os módulos do 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 nenhum módulo adequado estiver disponível, a lista estará vazia. Se o módulo especificado não existir, ele será criado para você 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 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. Para customizar esse nó, inclua seu próprio ESQL 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 um valor nulo, ou você codificar RETURN; ou omitir a instrução RETURN, o nó propagará a mensagem para o terminal Unknown. Você pode utilizar todas as instruções ESQL, incluindo SET, WHILE, DECLARE e IF neste módulo, mas (diferente do nó Compute) o nó Filter propaga a mensagem recebida em seu terminal de entrada para seu terminal de saída inalterado. Portanto, no nó Filter, como no nó Banco de Dados, você possui apenas uma mensagem a qual consultar. Os nomes de correlação ESQL utilizados em um nó Filter são diferentes dos utilizados para um nó Compute. Para obter informações adicionais sobre nomes de correlação, consulte os links relacionados. Você não pode modificar nenhuma parte de nenhuma mensagem; dessa forma, a instrução de designação (a instrução SET, não a cláusula SET da instrução INSERT) só pode designar valores a variáveis temporárias. O escopo das medidas que você toma com uma instrução de designação é, portanto, limitada. |
Tratar Avisos como Erros | Sim | Não | Não Selecionada | Para que mensagens de aviso do banco de dados sejam tratadas como erros, bem como
propagar a mensagem de saída do nó 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 (not found), que pode ser tratado seguramente como código de retorno normal na maioria dos casos. |
Exceção emitida em erro do banco de dados | Sim | Não | Selecionada | Para fazer com que o intermediário gere uma exceção quando um erro do banco de dados
for detectado, selecione Emitir exceção em erro do
banco de dados (Throw exception on database error).
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 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ê 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. |