Criando o Subfluxo de Manipulação de Erro

Utilize as instruções a seguir para criar o subfluxo de manipulação de erro. Para obter instruções mais detalhadas, clique nos links fornecidos no final de cada etapa.

  1. No Message Brokers Toolkit, mude para a perspectiva Desenvolvimento de Aplicativo do Broker.
  2. Crie um novo projeto do fluxo de mensagens chamado Messageflows da Rotina de Tratamento de Erro.
    Para obter instruções, consulte Criando um projeto de fluxo de mensagens.
  3. Crie um novo fluxo de mensagens chamado Error_Handler.
    Para obter instruções, consulte Criando um Fluxo de Mensagens.
  4. No editor Message Flow, inclua e renomeie os nós listados na tabela a seguir.
    Para obter instruções, consulte Incluindo um Nó. Observe que a Entrada e a Saída na tabela abaixo são diferentes de MQInput e MQOutput. Todos os subfluxos começam com um nó Input e terminam com um nó Output.
    Tipo de Nó Nome do Nó
    Input Start Subflow
    Filter Check Backout Count
    TryCatch TryCatch
    Banco de Dados Update Error Database
    Throw Throw To Complete Rollback
    Out Back To Main Flow
  5. Conecte os nós conforme listado na tabela a seguir.
    Para obter instruções, consulte Conectando Nós.
    Para verificar se você conectou os nós corretamente, consulte a figura em Sobre a Amostra Rotina de Tratamento de Erro.
    Nome do Nó Terminal Conectar a esse Nó
    Input Out Check Backout Count
    Check Backout Count Verdadeiro TryCatch
    TryCatch Teste Back To Main Flow
    Catch Update Error Database
    Update Error Database Out Throw To Complete Rollback
  6. Configure as propriedades do nó conforme listadas na tabela a seguir. Aceite os valores padrão para todas as propriedades, a menos que seja listado um valor alternativo na tabela.
    Para obter instruções, consulte Configurando um Nó.
    Nome do Nó Ativo Propriedade Valor
    Update Error Database Básico Fonte de Dados ERRORDB
    Básico Transação Consolidar
    Throw To Complete Rollback Básico Número da Mensagem 3002
    Básico Texto da mensagem Do fluxo de mensagens Error_Handler. Consulte ERRORDB para obter detalhe.
  7. Inclua os seguintes módulos de código ESQL ao arquivo Error_Handler.esql. Você pode copiar e colar o código ESQL diretamente no arquivo ESQL, se desejar.
    Para obter instruções, consulte Desenvolvendo ESQL.
    CREATE FILTER MODULE Error_Handler_Filter
       CREATE FUNCTION Main() RETURNS BOOLEAN
       BEGIN
          IF Root.MQMD.BackoutCount='0' THEN
          RETURN TRUE;
          ELSE
             RETURN FALSE;
          END IF;
       END;
    END MODULE;
    
    CREATE DATABASE MODULE Error_Handler_Database
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
    
    DECLARE Error INTEGER;
    DECLARE Text CHARACTER;
    DECLARE Place INTEGER;
    DECLARE LastPlace INTEGER;
    DECLARE NodeName CHARACTER;
    DECLARE Label CHARACTER;
    DECLARE FlowName CHARACTER;
    
    -- Set the start point
    DECLARE start REFERENCE TO ExceptionList.*[1];
    WHILE start.Number IS NOT NULL DO
       SET Error = start.Number;
          IF Error = 3001 THEN
             SET Text = SUBSTRING(start.Insert.Text FROM 1 FOR 250);
             ELSE
             SET Text = SUBSTRING(start.Text FROM 1 FOR 250);
          END IF;
       SET Label = start.Label;
       SET Place = POSITION('.' IN Label);
       SET LastPlace = Place;
          WHILE Place <>0 DO
             SET Label=SUBSTRING(Label FROM (Place+1));
             SET Place=POSITION('.' IN Label);
             SET LastPlace = LastPlace + Place;
          END WHILE;
       SET Label=start.Label;
       SET FlowName=SUBSTRING(Label FROM 1 FOR (LastPlace-1));
       SET NodeName=SUBSTRING(Label FROM (LastPlace+1));
    -- Move start to the last child of the field to which it currently points
       MOVE start LASTCHILD;
    END WHILE;
    INSERT INTO Database.ERRORS(MSGID,TEXT,ERRORNUM, ERRORDATE,MSGDATA,FLOWNAME,NODENAME)
    VALUES(CAST(Root.MQMD.MsgId AS BLOB),Text,Error,CURRENT_TIMESTAMP,BITSTREAM(Root),
    FlowName,NodeName);
          RETURN TRUE;
       END;
    END MODULE;

Você pode agora criar um fluxo de mensagens principal, que incorpora este subfluxo:Criando o Fluxo de Mensagens Principal

Ícone Página Principal   Voltar para Construção da Amostra Rotina de Tratamento de Erro