WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

PROPAGATE-Anweisung

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

Syntax

Syntaxdiagramm lesenSyntaxdiagramm überspringen
>>-PROPAGATE--+-------------------------------------+--+--------------------+--+----------------+-><
              '-TO--+-TERMINAL--TERMINAL-Ausdruck-+-'  '-Nachrichtenquellen-'  '-Bedienelemente-'   
                    '-LABEL--LABEL-Ausdruck-------'                                                 

WHERE

|--Nachrichtenquellen =--+-----------------------+--+-------------------+--+---------------------+--|
                         '-ENVIRONMENT--Ausdruck-'  '-MESSAGE--Ausdruck-'  '-EXCEPTION--Ausdruck-'   

|--Steuerelemente =--+-----------------------+--+---------------------+--|
                     '-FINALIZE--+-DEFAULT-+-'  '-DELETE--+-DEFAULT-+-'   
                                 '-NONE----'              '-NONE----'     

Die PROPAGATE-Anweisung können Sie in Compute- und Datenbank-Knoten, nicht jedoch in Filter-Knoten 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:
'nowhere' : keine Weitergabe
'failure' : Failure
 'out'    : Out 
 'out1'   : Out1
 'out2'   : Out2
 'out3'   : Out3
 'out4'   : Out4
Tipp: Terminalnamen beachten die Groß-/Kleinschreibung, so dass 'Out1' z. B. 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 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 Label-Knoten, dessen Eigenschaft Label mit LABEL-Ausdruck übereinstimmt, leitet der Broker eine Nachricht an diesen Knoten weiter.
Tipp: Bei Kennsätzen wird, wie bei Terminals auch, die Groß-/Kleinschreibung beachtet. Beachten Sie zudem, dass beim Weiterleiten an Label-Knoten die Eigenschaft Zielbezeichnung des Label-Knotens 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 Label-Knoten 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 weiter.

Nachrichtenquellenklauseln

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

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

Message : 
  InputRoot 
  OutputRoot 
ExceptionList : 
  InputExceptionList
  OutputExceptionList 

Ist keine MessageSources-Klausel angegeben, legt die Knoteneigenschaft Rechenmodus 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 Compute-Knoten (hat keine Auswirkung in einem Datenbank-Knoten).

Der Compute-Knoten ermöglicht die Änderung seiner Ausgabenachricht durch andere Knoten (andere Knoten, die ihre Eingabenachricht ändern). Eine von einem Compute-Knoten 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.

Wurde 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.

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

Die DELETE-Klausel gilt nur für den Compute-Knoten (hat keine Auswirkung in einem Datenbank-Knoten).

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.

Wurde 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.

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 mithilfe eines Handlers abfangen und die notwendigen Aktionen ausführen. Beachten Sie, dass Ausnahmen, wenn sie nach einem PROPAGATE-Aufruf ausgelöst und nicht abgefangen wurden, auch die Ausführung abschließender automatischer Aktionen eines Compute- oder Datenbank-Knotens verhindern (z. B. die Ausgabe einer auf COMMIT gesetzten COMMIT-Transaktion).

Wenn Sie die PROPAGATE-Anweisung in Ihrem Knoten verwenden, ist es wichtig, dass Sie mit einem RETURN FALSE; eine automatische Weitergabe der Nachricht an den nächsten Knoten im Nachrichtenfluss verhindern.

DECLARE i INTEGER 1;
DECLARE count INTEGER;
SET count = CARDINALITY(InputRoot.XMLNS.Invoice.Purchases."Item"[])

WHILE i <= count DO 
  --verwenden Sie die von den Tools generierte Standardprozedur zum Kopieren von Nachrichtenheadern 
  CALL CopyMessageHeaders(); 
  SET OutputRoot.XMLNS.BookSold.Item = InputRoot.XMLNS.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>
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:21:31


ReferenzthemaReferenzthema | Version 8.0.0.5 | ak05110_