PROPAGATE-Anweisung

Die PROPAGATE-Anweisung gibt eine Nachricht an die nachgeordneten Knoten weiter.

SYNTAX

Die PROPAGATE-Anweisung können Sie in Rechen- und Datenbankknoten, nicht jedoch in Filterknoten verwenden. Die Zusätze zu dieser Anweisung helfen bei der Fehlerbehandlung (siehe ESQL für die Fehlerbehandlung codieren).

Klausel TO TERMINAL
Wenn die Klausel TO TERMINAL angegeben ist, wird der TERMINAL-Ausdruck berechnet. Hat das Ergebnis den Typ CHARACTER, wird eine Nachricht entsprechend der Regel an ein Terminal weitergegeben:Beginn der Änderung
‘nowhere’ : keine Weitergabe
‘failure’ : Failure
 ‘out’    : Out 
 ‘out1'  : Out1
 ‘out2'  : Out2
 ‘out3'  : Out3
 ‘out4’  : Out4
Ende der Änderung
Tipp: Terminalnamen beachten die Groß-/Kleinschreibung, so dass "Out1" keinem Terminalnamen entspricht.
Hat das Ergebnis von TERMINAL-Ausdruck den Typ INTEGER, wird eine Nachricht entsprechend der Regel an ein Terminal weitergegeben:
-2 : keine Weitergabe
-1 : failure
 0 : out
 1 : out1
 2 : out2
 3 : out3
 4 : out4

Hat das Ergebnis von TerminalExpression weder den Typ CHARACTER noch den Typ INTEGER, gibt der Broker eine Ausnahme aus.

Existieren weder eine Klausel TO TERMINAL noch eine Klausel TO LABEL, gibt der Broker eine Nachricht an das "Ausgangsterminal" (out) weiter.

Tipp: Verwenden Sie Zeichenwerte in Terminalausdrücken, um natürlichen und gut lesbaren Code zu erhalten. Ganzzahlige Werte sind jedoch einfacher in Schleifen zu manipulieren und geringfügig schneller.
Klausel TO LABEL
Wenn die Klausel TO LABEL angegeben ist, wird der LABEL-Ausdruck berechnet. Hat das Ergebnis den Typ CHARACTER und gibt es in demselben Datenfluss einen Zieladressenknoten, dessen Attribut mit LABEL-Ausdruck übereinstimmt, leitet der Broker eine Nachricht an diesen Knoten weiter.
Tipp: Zieladressen beachten, wie Terminals auch, die Groß-/Kleinschreibung. Beachten Sie zudem, dass beim Weiterleiten an Zieladressenknoten das Attribut labelName des Zieladressenknotens das Ziel festlegt, nicht die Zieladresse des Knotens.

Wenn das Ergebnis von LABEL-Ausdruck NULL ist oder nicht den Typ CHARACTER hat oder wenn es im Datenfluss keinen entsprechenden Zieladressenknoten gibt, gibt der Broker eine Ausnahme aus.

Existieren weder eine Klausel TO TERMINAL noch eine Klausel TO LABEL, gibt der Broker eine Nachricht an das "Ausgangsterminal" (out) weiter.

Nachrichtenquellenklauseln

Die Nachrichtenquellenklauseln wählen die Nachrichtenbaumstrukturen aus, die weitergegeben werden sollen. Diese Klausel gilt nur für den Rechenknoten (hat keine Auswirkung im Datenbankknoten).

In Nachrichtenquellenklauseln können Sie folgende Werte angeben:
ENVIRONMENT : 
  InputLocalEnvironment 
    OutputLocalEnvironment

Message : 
  InputRoot
    OutputRoot
  
ExceptionList : 
  InputExceptionList
    OutputExceptionList

Ist keine MessageSources-Klausel angegeben, legt das Knotenattribut "compute mode" fest, welche Nachrichten weitergeleitet werden.

FINALIZE-Klausel
In der Endbearbeitung werden Headerketten korrigiert und der Eigenschaftenordner mit den Headern abgeglichen. Wenn eine FINALIZE-Klausel angegeben ist, ermöglicht sie die Steuerung der Endbearbeitung.

Diese Klausel gilt nur für den Rechenknoten (hat keine Auswirkung in einem Datenbankknoten).

Der Rechenknoten ermöglicht die Änderung seiner Ausgabenachricht durch andere Knoten (andere Knoten, die ihre Eingabenachricht ändern). Eine von einem Rechenknoten erstellte Nachricht kann jedoch nach folgenden Aktionen nicht mehr geändert werden:
  • Sie wurde abgeschlossen.
  • Sie hat einen Sendeknoten oder einen anderen Knoten erreicht, der einen Bitstrom generiert.

Wenn FINALIZE auf DEFAULT gesetzt wurde oder die FINALIZE-Klausel fehlt, wird die Ausgabenachricht (nicht aber die Umgebung (Environment), lokale Umgebung (Local Environment) oder die Ausnahmeliste (Exception List)) vor der Weitergabe abgeschlossen.

Beginn der ÄnderungWurde FINALIZE auf NONE gesetzt, findet keine Endbearbeitung statt. Diese Option ist erforderlich, wenn Sie Aktualisierungen der gesamten Ausgabenachrichtstruktur durch die nachgestalteten Knoten im Nachrichtenfluss beibehalten und zulassen möchten. Die Option wird, wie im nächsten Abschnitt beschrieben, mit DELETE NONE verwendet.Ende der Änderung

DELETE-Klausel
Die DELETE-Klausel ermöglicht das Löschen der zu steuernden Ausgabe der lokalen Umgebung, Nachricht und Ausnahmeliste.

Diese Klausel gilt nur für den Rechenknoten (hat keine Auswirkung in einem Datenbankknoten).

Wenn DELETE auf DEFAULT gesetzt wurde oder wenn die DELETE-Klausel fehlt, wird die Ausgabe der lokalen Umgebung, der Nachricht und der Ausnahmeliste gelöscht und ihr Speicher direkt nach der Weitergabe wiederhergestellt.

Beginn der ÄnderungWurde DELETE auf NONE gesetzt, wird nichts gelöscht. Verwenden Sie DELETE NONE, wenn den nachgeschalteten Knoten eine einzelne Instanz der ausgegebenen lokalen Umgebungsnachricht und Ausnahmelistenstrukturen angezeigt werden sollen. Anstatt mit leeren Baumstrukturen startet jede PROPAGATE-Anweisung mit dem von der vorherigen PROPAGATE-Anweisung erstellten Inhalt dieser Baumstrukturen. Wenn auch diese Knoten die Ausgabebaumstruktur aktualisieren sollen, müssen Sie DELETE NONE mit der Option FINALIZE NONE verwenden, die im nächsten Abschnitt beschrieben wird.Ende der Änderung

Beachten Sie, dass die abgeschlossenen Ausgabebaumstrukturen unabhängig davon, welche weitergeleitet werden sollen, gelöscht werden.

Die Weitergabe ist ein synchroner Vorgang. Die nächste Anweisung wird erst verarbeitet, wenn die gesamte Verarbeitung der Nachricht in den nachgeschalteten Knoten abgeschlossen ist. Beachten Sie, dass diese Verarbeitung Ausnahmen auslösen kann. Werden diese Ausnahmen nicht abgefangen, kann die Anweisung nach dem PROPAGATE-Aufruf nicht erreicht werden. Genau dies könnte die Logik Ihres Datenflusses jedoch erfordern. Ist dies nicht der Fall, können Sie die Ausnahme mit Hilfe eines Handlers abfangen und die notwendigen Aktionen ausführen. Beachten Sie, dass Ausnahmen, wenn sie nach einem PRPAGATE-Aufruf ausgelöst und nicht abgefangen wurden, auch die Ausführung abschließender automatischer Aktionen eines Rechen- oder Datenbankknotens verhindern (z. B. die Ausgabe einer auf COMMIT gesetzten COMMIT Transaktion).

DECLARE i INTEGER 1;
DECLARE count INTEGER;
SET count = CARDINALITY(InputRoot.XML.Invoice.Purchases."Item"[])
WHILE i <= count DO 
  --verwenden Sie die von den Tools generierte Standardprozedur zum Kopieren von Nachrichtenheadern
  CALL CopyMessageHeaders();
  SET OutputRoot.XML.BookSold.Item = InputRoot.XML.Invoice.Purchases.Item[i]; 
  PROPAGATE; 
  SET i = i+1;
                         END WHILE;
RETURN FALSE;

Nachfolgend sind die Nachrichten aufgeführt, die auf dem Ausgangsterminal von der PROPAGATE-Anweisung erstellt werden:

<BookSold>
 <Item>
  <Title Category="Computer" Form="Paperback" Edition="2">The XML Companion </Title>
  <ISBN>0201674866</ISBN>
  <Author>Neil Bradley</Author>
  <Publisher>Addison-Wesley</Publisher>
  <PublishDate>October 1999</PublishDate>
  <UnitPrice>27.95</UnitPrice>
  <Quantity>2</Quantity>
 </Item>
</BookSold>
<BookSold>
 <Item>
  <Title Category="Computer" Form="Paperback" Edition="2">A Complete Guide to
   DB2 Universal Database</Title>
  <ISBN>1558604820</ISBN>
  <Author>Don Chamberlin</Author>
  <Publisher>Morgan Kaufmann Publishers</Publisher>
  <PublishDate>April 1998</PublishDate>
  <UnitPrice>42.95</UnitPrice>
  <Quantity>1</Quantity>
 </Item>
</BookSold>
<BookSold>
 <Item>
  <Title Category="Computer" Form="Hardcover" Edition="0">JAVA 2 Developers
  Handbook</Title>
  <ISBN>0782121799</ISBN>
  <Author>Phillip Heller, Simon Roberts </Author>
  <Publisher>Sybex, Inc.</Publisher>
  <PublishDate>September 1998</PublishDate> <UnitPrice>59.99</UnitPrice>
  <Quantity>1</Quantity>
 </Item>
</BookSold>
Zugehörige Konzepte
Übersicht zu ESQL
ESQL für die Fehlerbehandlung codieren
Zugehörige Tasks
ESQL erstellen
Mehrere Ausgabenachrichten generieren
Datenbankaktualisierungen festschreiben
Zugehörige Verweise
Syntaxdiagramme: verfügbare Typen
ESQL-Anweisungen
RETURN-Anweisung
Beispielnachricht
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ak05110_