Acessando a Árvore Lista de Exceção

A árvore ExceptionList possui seu próprio nome de correlação, ExceptionList e é necessário utilizá-lo em todas as instruções ESQL que fazem referência ou definem o conteúdo dessa árvore.

Essa árvore é criada quando a árvore lógica é criada, quando uma mensagem de entrada é analisada. Ela está inicialmente vazia e será ocupada apenas se ocorrer uma exceção durante o processamento do fluxo de mensagens. É possível que mais de uma exceção ocorra; se isso ocorrer, a árvore ExceptionList conterá uma subárvore para cada exceção.

Você pode acessar a árvore ExceptionList nos nós Compute, Banco de Dados e Filter e pode atualizá-la em um nó Compute. É necessário utilizar o nome de correlação apropriado; ExceptionList para um nó Banco de Dados ou Filter e InputExceptionList para um nó Compute.

Talvez você queira acessar essa árvore em um nó em um procedimento de tratamento de erros. Por exemplo, talvez você queira rotear a mensagem para um caminho diferente, com base no tipo de exceção, por exemplo, uma que foi gerada explicitamente utilizando uma instrução ESQL THROW ou uma que foi gerada pelo intermediário.

O ESQL a seguir mostra como você pode acessar a Lista de Exceção e processar cada filho que ela contém:

-- Declare a reference for the ExceptionList
-- (em um nó Compute, utilize InputExceptionList)
DECLARE start REFERENCE TO ExceptionList.*[1];

-- Loop through the exception list children
WHILE start.Number IS NOT NULL DO
      -- more ESQL

   -- Move start to the last child of the field to which it currently points
      MOVE start LASTCHILD;
END WHILE;

O exemplo a seguir mostra um trecho do ESQL que foi codificado para um nó Compute para fazer o loop pela lista de exceção para a última descrição de exceção (aninhada) e extrair o número do erro. Esse erro está relacionado à causa original do problema e normalmente fornece as informações mais precisas. A ação seguinte tomada pelo fluxo de mensagens pode ser resolvida pelo número do erro recuperado desta forma.

CREATE PROCEDURE getLastExceptionDetail(IN InputTree reference,OUT messageNumber integer,
OUT messageText char)
    /****************************************************************************
* A procedure that will get the details of the last exception from a message
* IN InputTree: The incoming exception list
* IN messageNumber: The last message numberr.
* IN messageText: The last message text.
	 *****************************************************************************/
     BEGIN
   -- Create a reference to the first child of the exception list
   declare ptrException reference to InputTree.*[1];
   -- keep looping while the moves to the child of exception list work
WHILE lastmove(ptrException) DO
-- store the current values for the error number and text
IF ptrException.Number is not null THEN
        SET messageNumber = ptrException.Number;
        SET messageText = ptrException.Text;
  END IF;
  -- now move to the last child which should be the next exceptionlist
move ptrException lastchild;
		END WHILE;
	END;
Para obter mais informações sobre a utilização de ExceptionList, analise o subfluxo na amostra a seguir que inclui ESQL que interroga a estrutura ExceptionList e realiza a ação específica de acordo com seu conteúdo: Você pode visualizar amostras apenas quando utilizar o centro de informações integrado ao Message Brokers Toolkit.
Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Estrutura em Árvore da Lista de Exceções
Visão Geral do ESQL
Modelagem de Mensagens
Tarefas relacionadas
Tratando Erros em Fluxos de Mensagens
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Gerenciando Arquivos ESQL
Referências relacionadas
Nó Compute
Estrutura da Lista de Exceções
Referência de ESQL
Instrução DECLARE
Instrução EVAL
Instrução WHILE
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Última atualização : 2009-02-13 16:11:49

ac16830_