Accesso alla struttura ad albero ExceptionList

La struttura ad albero ExceptionList ha il proprio nome di correlazione, ExeptionList, ed è necessario utilizzare questo nome in tutte le istruzioni ESQL che fanno riferimento al contenuto di questa struttura ad albero o impostano tale contenuto.

Questa struttura ad albero è creata con la struttura ad albero logica quando viene analizzato un messaggio di input. Inizialmente è vuota e viene popolata solo se si verifica un'eccezione durante l'elaborazione del flusso di messaggi. E' possibile che si verifichi più di un'eccezione; in questo caso, la struttura ad albero ExceptionList contiene una struttura ad albero secondaria per ogni eccezione.

E' possibile accedere alla struttura ad albero ExceptionList nei nodi Compute, Database e Filter ed è possibile aggiornarla in un nodo Compute. E' necessario utilizzare il nome di correlazione appropriato; Exception List per un nodo Database o Filter e InputExceptionList per un nodo Compute.

Si potrebbe accedere a questa struttura ad albero in un nodo all'interno di una procedura di gestione degli errori. Ad esempio, si potrebbe instradare il messaggio su un percorso diverso in base al tipo di eccezione, ad esempio un'eccezione che sia stata generata esplicitamente utilizzando un'istruzione ESQL THROW o una generata dal broker.

Il seguente ESQL mostra come accedere alla struttura ad albero ExceptionList ed elaborare ogni child che contiene:

-- Dichiarare un riferimento per ExceptionList
-- (in un nodo Compute utilizzare InputExceptionList)
DECLARE start REFERENCE TO ExceptionList.*[1];

-- Eseguire il loop dei child dell'elenco eccezioni
WHILE start.Number IS NOT NULL DO 
   -- ulteriore ESQL

   -- Spostare l'avvio all'ultimo child del campo a cui sta attualmente puntando 
   MOVE start LASTCHILD;
END WHILE;         

Il secondo esempio riportato sotto mostra un estratto di ESQL codificato affinché un nodo Compute esegua il loop dell'elenco eccezioni fino all'ultima descrizione di eccezione (quella nidificata) ed estragga il numero di errore. Questo errore è relativo alla causa originale del problema e in genere fornisce le informazioni più precise. L'azione successiva intrapresa dal flusso di messaggi può essere decisa in base al numero di errore ottenuto in questo modo.

CREATE PROCEDURE getLastExceptionDetail(IN InputTree reference,OUT messageNumber integer,
OUT messageText char)	
    /****************************************************************************
	 * Una procedura che ottiene i dettagli dell'ultima eccezione da un messaggio
	 * IN InputTree:  La lista di eccezioni in entrata
	 * IN messageNumber:  L'ultimo numero del messaggio
	 * IN messageText: L'ultimo testo del messaggio
	 *****************************************************************************/
   BEGIN
   	    -- Creare un riferimento al primo child della lista di eccezioni
   	    declare ptrException reference to InputTree.*[1];
   	    -- mantenere il loop mentre sono in funzione i movimenti verso il child della lista di eccezioni 
		WHILE lastmove(ptrException) DO
			-- memorizzare i valori correnti per il numero e il testo di errore
			IF ptrException.Number is not null THEN
        		SET messageNumber = ptrException.Number;
        		SET messageText = ptrException.Text;
  END IF;
  			-- ora andare verso l'ultimo child inteso come exceptionlist successivo
			move ptrException lastchild;
		END WHILE; 
	END;

Per ulteriori informazioni circa l'utilizzo di ExceptionList, fare riferimento al flusso secondario nell'esempio Programma di gestione degli errori, che include l'ESQL che interroga la struttura ExceptionList e intraprende un'azione specifica in base al suo contenuto.

Concetti correlati
Panoramica dei flussi di messaggi
Struttura ad albero ExceptionList
Panoramica di ESQL
Creazione di modelli di messaggio
Attività correlate
Gestione degli errori nei flussi di messaggi
Progettazione di un flusso di messaggi
Definizione del contenuto del flusso di messaggi
Gestione dei file ESQL
Riferimenti correlati
Nodo Compute
Struttura dell'elenco di eccezioni
Riferimento ESQL
Istruzione DECLARE
Istruzione EVAL
Istruzione WHILE
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac16830_