Zugriff auf die Baumstruktur für Ausnahmelisten

Die Baumstruktur für Ausnahmelisten hat einen eigenen Korrelationsnamen (ExceptionList), und Sie müssen diesen in allen ESQL-Anweisungen verwenden, die auf den Inhalt dieser Baumstruktur verweisen oder diesen festlegen.

Diese Baumstruktur wird mit der logischen Baumstruktur erstellt, wenn eine Eingabenachricht syntaktisch analysiert wird. Sie ist zu Beginn leer und wird nur gefüllt, wenn während der Nachrichtenflussverarbeitung eine Ausnahmebedingung auftritt. Es ist möglich, dass mehrere Ausnahmebedingungen auftreten; ist dies der Fall, enthält die Baumstruktur für Ausnahmelisten für jede einzelne Ausnahmebedingung eine untergeordnete Baumstruktur.

Sie können in den Rechen-, Datenbank- und Filterknoten auf die Baumstruktur für Ausnahmelisten zugreifen, und Sie können diese in einem Rechenknoten aktualisieren. Sie müssen den entsprechenden Korrelationsnamen verwenden; ExceptionList bei einem Datenbank- oder Filterknoten, und InputExceptionList bei einem Rechenknoten.

Möglicherweise müssen Sie in einer Prozedur zur Fehlerbehandlung auf diese Baumstruktur in einem Knoten zugreifen. So kann es beispielsweise vorkommen, dass Sie die Nachricht auf Basis der Art der Ausnahmebedingung an einen anderen Pfad umleiten möchten, z. B. an einen Pfad, den Sie mit Hilfe der ESQL-Anweisung THROW explizit generiert haben, oder an einen vom Broker generierten Pfad.

Der folgende ESQL-Code zeigt, wie Sie auf die Ausnahmeliste zugreifen können und alle in ihr enthaltenen untergeordneten Elemente verarbeiten können:

-- Declare a reference for the ExceptionList
-- (in a Compute node use 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;

Das zweite Beispiel unten zeigt einen Auszug des ESQL-Codes, der für einen Rechenknoten codiert wurde, um sich in einer Schleife durch die Ausnahmeliste bis zur letzten (verschachtelten) Ausnahmebedingung zu bewegen und die Fehlernummer zu extrahieren. Dieser Fehler bezieht sich auf die ursprüngliche Fehlerursache und bietet für gewöhnlich die genauesten Informationen. Die nachfolgende Aktion, die vom Nachrichtenweiterleitung ausgeführt wird, kann durch die auf diese Weise abgerufene Fehlernummer bestimmt werden.

-- Declare variable for the Error number extracted from exception list
DECLARE Error INTEGER;
-- Declare current path within the exception list
DECLARE Path CHARACTER;

-- Start at first child of exception list
SET Path = 'InputExceptionList.*[1]';

-- Loop until no more children 
WHILE EVAL( 'FIELDNAME(' || Path || ') IS NOT NULL' ) DO

  -- Check if error number is available 
  IF EVAL( 'FIELDNAME(' || Path || '.Number) IS NOT NULL' ) THEN
    -- Record only the deepest error number 
    SET Error = EVAL( Path || '.Number' );
  		END IF;

 -- Step to last child of current element (usually a nested exception list
 SET Path = Path || '.*[<]';

                         END WHILE;

Weitere Informationen zur Verwendung der Ausnahmeliste finden Sie im untergeordneten Fluss im Beispiel des Fehlerbehandlungsprogramms (Error Handler), das ESQL-Code enthält, der die Struktur der Ausnahmeliste abfragt und je nach deren Inhalt bestimmte Aktionen ausführt.

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Ausnahmeliste-Baumstruktur
Übersicht zu ESQL
Nachrichten modellieren
Zugehörige Tasks
Fehler in Nachrichtenflüssen behandeln
Nachrichtenfluss entwerfen
Nachrichtenflussinhalt definieren
ESQL-Dateien verwalten
Zugehörige Verweise
Rechenknoten
Struktur der Ausnahmeliste
ESQL-Referenz
DECLARE-Anweisung
EVAL-Anweisung
WHILE-Anweisung
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2005 Letzte Aktualisierung: Nov 17, 2005
ac16830_