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 Compute-, Datenbank- und Filter-Knoten auf die Baumstruktur für Ausnahmelisten zugreifen, und Sie können diese in einem Compute-Knoten aktualisieren. Sie müssen den entsprechenden Korrelationsnamen verwenden: 'ExceptionList' bei einem Datenbank- oder Filter-Knoten und 'InputExceptionList' bei einem Compute-Knoten.
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 mithilfe 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 folgende Beispiel zeigt einen Auszug des ESQL-Codes, der für einen Compute-Knoten 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.
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 number.
* 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;
Informationen zu Beispielen können nur bei Verwendung des in das WebSphere Message Broker Toolkit integrierten bzw. online verfügbaren Information Center angezeigt werden. Muster können nur ausgeführt werden, wenn das im WebSphere Message Broker Toolkit integrierte Information Center verwendet wird.
Informationen zum Zugriff auf die Baumstruktur für Ausnahmelisten mit Java™ finden Sie im Abschnitt Zugriff auf die Baumstruktur 'ExceptionList' mittels Java