Informationen zum Mustercode 'Coordinated Request Reply JMS'

Der Mustercode 'Coordinated Request Reply JMS' enthält die JMS-Anwendung 'Coordinated Request Reply'. Diese Anwendung enthält eine Bibliotheksreferenz auf die Bibliothek 'Coordinated Request Reply'.

Der Mustercode 'Coordinated Request Reply JMS' veranschaulicht die Verwendung des JMSReceive-Knotens. Die Nachrichtenflüsse und die von ihnen ausgeführte Verarbeitung werden in den folgenden Abschnitten beschrieben.

Anforderungsnachrichtenfluss

Der Anforderungsnachrichtenfluss führt folgende Verarbeitung aus:

  1. Er liest eine JMS-Nachricht, die XML-Nutzdaten enthält.
  2. Er speichert die ursprünglichen Details zu ReplyToQ in einer separaten JMS-Nachricht für das spätere Abrufen durch den Nachrichtenfluss 'Reply'.
  3. Er konvertiert die Nachricht in das entsprechende CWF-Format.
  4. Er erstellt eine JMS-Nachricht, die die umgewandelte Nachricht enthält.
  5. Er legt die Details zu ReplyToQ fest, die die Eingabe des Nachrichtenflusses 'Reply' darstellen.
  6. Er sendet die Nachricht an den Nachrichtenfluss 'Backend Reply'.

Der Nachrichtenfluss 'Request' enthält die folgenden Knoten:

Der Nachrichtenfluss 'Request' enthält einen JMSInput-Knoten, zwei untergeordnete Nachrichtenflussknoten, einen Rechenknoten und einen JMSOutput-Knoten.

Der JMSInput-Knoten 'GetRequestMsg' liest die XML-Nachricht. Da die eingehende Nachricht ein selbstdefinierendes XML-Format hat, ist es nicht erforderlich, eine Nachrichtengruppe oder ein Nachrichtenformat anzugeben, damit sie erfolgreich syntaktisch analysiert werden kann.

Der untergeordnete Nachrichtenfluss 'StoreOriginalJMSHeader_Sub' bindet das Speichern der Werte für ReplyToQ und die Korrelations-ID in eine JMS-Nachricht ein. Die Nachrichten-ID wird in die Korrelations-ID kopiert. Dies geschieht aus zweierlei Gründen: Damit die Verarbeitungslogik leicht in anderen Nachrichtenflüssen wiederverwendet werden kann und damit alternative Implementierungen eingesetzt werden können. Es kann beispielsweise eine alternative Implementierung erstellt werden, die einen Datenbankknoten verwendet.

Der untergeordnete Nachrichtenfluss 'TransformXMLtoMRM_Sub' kopiert die Nachrichtenheader von der Eingabenachricht in die Baumstruktur der Ausgabenachricht und konvertiert die Eingabenachricht vom XML-Format in CWF, indem er die Nachrichtengruppe, den Typ und das Format für die Ausgabenachricht festlegt.

Der Rechenknoten 'SetReplyTo_CorrelID' führt folgende Aktionen aus:

  1. Er kopiert die Nachrichtenheader von der Eingabenachricht in die Baumstruktur der Ausgabenachricht.
  2. Er kopiert den Nachrichtenhauptteil von der Eingabenachricht in die Baumstruktur der Ausgabenachricht.
  3. Er legt die Korrelations-ID als Nachrichten-ID fest.
  4. Er legt die ReplyToQ für die neue Nachricht als jene der Eingabewarteschlange für den Antwortnachrichtenfluss fest.

Der JMSOutput-Knoten 'OutputRequestMsg' schreibt die JMS-Ausgabenachricht.

Back-End-Antwortnachrichtenfluss

Der Back-End-Antwortnachrichtenfluss führt folgende Verarbeitung aus:

  1. Er liest eine JMS-Nachricht.
  2. Hinzufügen der Änderungszeit der Nachricht zu den Nutzdaten der Nachricht.
  3. Er schreibt eine JMS-Nachricht.

Der Nachrichtenfluss 'Backend Reply' enthält die folgenden Knoten:

Der Nachrichtenfluss 'Backend Reply' enthält einen JMSInput-Knoten, einen Rechenknoten und einen JMSReply-Knoten.

Der JMSInput-Knoten 'GetRequestMsg' liest die CWF-Nachricht. Die Nachrichtengruppe, das Format und die Domäne, die zur syntaktischen Analyse der eingehenden Nachricht benötigt werden, sind im JMSInput-Knoten angegeben.

Der Rechenknoten 'Modify_CompletionTime' führt folgende Aktionen aus:

  1. Er kopiert die vollständige Eingabenachricht in die Baumstruktur der Ausgabenachricht.
  2. Er ruft die aktuelle Zeit vom Nachrichtenbroker ab und formatiert sie erneut.
  3. Er fügt die neu formatierte Zeit der Baumstruktur der Ausgabenachricht hinzu.

Der JMSReply-Knoten 'PutReplyMsg' schreibt die JMS-Ausgabenachricht.

Antwortnachrichtenfluss

Der Nachrichtenfluss 'Reply' führt die folgenden Verarbeitungsschritte aus:

  1. Er liest eine JMS-Nachricht, die eine Nachricht im CWF-Format enthält.
  2. Er konvertiert die Nachricht in das entsprechende XML-Format.
  3. Er ruft die Details von ReplyToQ der ursprünglichen Anforderungsnachricht ab, indem er die JMS-Nachricht liest, die zum Speichern dieser Informationen im Nachrichtenfluss 'Request' verwendet wurde. Diese Aktion wird mithilfe des JMSReceive-Knotens ausgeführt.
  4. Er erstellt eine JMS-Nachricht, die die umgewandelte Nachricht und den abgerufenen ReplyToQ-Wert enthält.

Der Antwortnachrichtenfluss besteht aus den folgenden Knoten:

Der Nachrichtenfluss 'Reply' enthält einen JMSInput-Knoten, zwei untergeordnete Nachrichtenflussknoten und einen JMSReply-Knoten.

Der JMSInput-Knoten 'GetBackendReply' liest die CWF-Nachricht. Die Nachrichtengruppe, das Format und die Domäne, die zur syntaktischen Analyse der eingehenden Nachricht benötigt werden, sind im JMSInput-Knoten angegeben.

Der untergeordnete Nachrichtenfluss 'TransformMRMtoXML_Sub' kopiert die Nachrichtenheader von der Eingabenachricht in die Baumstruktur der Ausgabenachricht und konvertiert die Eingabenachricht vom CWF-Format in XML.

Der Nachrichtenfluss 'RestoreOriginalJMSHeader_sub' enthält den JMSReceive-Knoten.

Der untergeordnete Nachrichtenfluss 'RestoreOriginalJMSHeader_Sub' bindet die Abfrage der Werte von ReplyToQ und der Korrelations-ID ein. Er verwendet einen JMSReceive-Knoten zum Lesen der JMS-Nachricht, die die Werte von ReplyToQ und der Korrelations-ID enthält, die in der ursprünglichen Anforderungsnachricht angegeben waren, und kopiert diese in die Antwortnachricht. Dem JMSReceive-Knoten ist im Fluss ein Rechenknoten vorgeschaltet. Im Rechenknoten wird die Eigenschaft Korrelations-ID des JMSReceive-Knotens in der Umgebungsvariable durch die Korrelations-ID der Antwortnachricht überschrieben. Der JMSReceive-Knoten ist konfiguriert, um die entsprechende Nachricht über die zugehörige Korrelations-ID auszuwählen und um den ursprünglichen Anforderungs-JMSHeader in den JMSHeader der Nachricht zu kopieren, die verarbeitet wird. Dies dient der Übertragung der Antwortnachricht von der etablierten Anwendung zur korrekten Anforderungsanwendung. Der JMSReceive-Knoten ruft außerdem die Nutzdaten der JMS-Nachricht ab, die zum Speichern der ursprünglichen Werte von ReplyToQ verwendet wurde.

Weitere Informationen zum JMSReceive-Knoten finden Sie in der Dokumentation zu WebSphere Message Broker im Abschnitt JMSReceive-Knoten.

Der JMSReply-Knoten 'PutOriginalReply' schreibt die JMS-Ausgabenachricht.

Testnachricht

Bei der Testnachricht, die im Mustercode 'Coordinated Request Reply' verwendet wird, handelt es sich um eine einfache XML-Nachricht, die Rechnungsdetails für einen Kunden enthält. Dieser Mustercode konvertiert die XML-Nachricht in das CWF-Format. Der Feldwert für CompletionTime (Beendigungszeit) ist der einzige Wert, der vom Mustercode geändert wird. Im folgenden Beispiel ist die Nachricht dargestellt:

<SaleEnvelope>
<Header>
<SaleListCount>1</SaleListCount>
</Header>
<SaleList>
<Invoice>
<Initial>K</Initial>
<Initial>A</Initial>
<Surname>Braithwaite</Surname>
<Item>
<Code>00</Code>
<Code>01</Code>
<Code>02</Code>
<Description>Twister</Description>
<Category>Games</Category>
<Price>30</Price>
<Quantity>01</Quantity>
</Item>
<Item>
<Code>02</Code>
<Code>03</Code>
<Code>01</Code>
<Description>The Times Newspaper</Description>
<Category>Books and Media</Category>
<Price>20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>50</Balance>
<Currency>Sterling</Currency>
</Invoice>
<Invoice>
<Initial>T</Initial>
<Initial>J</Initial>
<Surname>Dunnwin</Surname>
<Item>
<Code>04</Code>
<Code>05</Code>
<Code>01</Code>
<Description>The Origin of Species</Description>
<Category>Books and Media</Category>
<Price>22</Price>
<Quantity>02</Quantity>
</Item>
<Item>
<Code>06</Code>
<Code>07</Code>
<Code>01</Code>
<Description>Microscope</Description>
<Category>Miscellaneous</Category>
<Price>36</Price>
<Quantity>01</Quantity>
</Item>
<Balance>80</Balance>
<Currency>Euros</Currency>
</Invoice>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>

Zurück zum Beginn des Mustercodes