Informationen zum Mustercode 'Coordinated Request Reply WebSphere MQ'

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

Der Mustercode 'Coordinated Request Reply WebSphere MQ' veranschaulicht die Verwendung eines MQGet-Knotens. Die Nachrichtenflüsse und die von ihnen ausgeführte Verarbeitung werden in den folgenden Abschnitten näher erläutert.

Anforderungsnachrichtenfluss

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

  1. Er liest eine WebSphere MQ-Nachricht, die XML-Nutzdaten enthält.
  2. Er speichert die ursprünglichen Details zu ReplyToQ und ReplyToQMgr in einer separaten WebSphere MQ-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 WebSphere MQ-Nachricht, die die umgewandelte Nachricht enthält.
  5. Er setzt die Details zu ReplyToQ und ReplyToQMgr, die die Eingabe des Nachrichtenflusses 'Reply' darstellen.
  6. Er sendet die Nachricht an den Nachrichtenfluss 'Backend Reply' weiter.

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

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

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

Der untergeordnete Nachrichtenfluss 'StoreOriginalMQMD_Sub' bindet das Speichern der Werte 'ReplyToQ' und 'ReplyToQMgr' in eine WebSphere MQ-Nachricht ein. Diese Einbindung ermöglicht Folgendes:

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' 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 ReplyToQ für die neue Nachricht als jene der Eingabewarteschlange für den Antwortnachrichtenfluss fest.

Der MQReply-Knoten 'OutputRequestMsg' schreibt die WebSphere MQ-Ausgabenachricht.

Back-End-Antwortnachrichtenfluss

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

  1. Er liest eine WebSphere MQ-Nachricht.
  2. Er fügt die Änderungszeit der Nachricht zu den Nutzdaten der Nachricht hinzu.
  3. Schreibt eine WebSphere MQ-Nachricht.

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

Der Nachrichtenfluss 'Backend Reply' enthält einen MQInput-Knoten, einen Rechenknoten und einen MQReply-Knoten.

Der MQInput-Knoten 'GetRequestMsg' liest die CWF-Nachricht. Der Nachrichtensatz, das Format und die Domäne, die zur syntaktischen Analyse der eingehenden Nachricht benötigt werden, sind im MQInput-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 MQOutput-Knoten 'PutReplyMsg' schreibt die WebSphere MQ-Ausgabenachricht.

Antwortnachrichtenfluss

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

  1. Er liest eine WebSphere MQ-Nachricht, die eine Nachricht im CW-Format enthält.
  2. Er konvertiert die Nachricht in das entsprechende XML-Format.
  3. Er ruft die Werte 'ReplyToQ' und 'ReplyToQMgr' der ursprünglichen Anforderungsnachricht ab, indem er die WebSphere MQ-Nachricht liest, die zum Speichern dieser Informationen im Anforderungsnachrichtenfluss verwendet wurde. Diese Aktion wird durch den MQGet-Knoten ausgeführt.
  4. Er erstellt eine WebSphere MQ-Nachricht, die die umgewandelte Nachricht und die abgerufenen ReplyToQ- und ReplyToQMgr-Werte enthält.

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

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

Der MQInput-Knoten 'GetBackendReply' liest die CWF-Nachricht. Der Nachrichtensatz, das Format und die Domäne, die zur syntaktischen Analyse der eingehenden Nachricht benötigt werden, sind im MQInput-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 untergeordneter Nachrichtenfluss 'RestoreOriginalMQMD_Sub' bindet die Abfrage der Werte 'ReplyToQ' und 'ReplyToQMgr' ein. Er liest die WebSphere MQ-Nachricht, die die ReplyToQ- und ReplyToQMgr-Werte enthält, die in der ursprünglichen Anforderungsnachricht angegeben wurden, und kopiert diese in die Antwortnachricht. Zur Ausführung des Lesevorgangs verwendet er den MQGet-Knoten. Der MQGet-Knoten ist konfiguriert, um die entsprechende Nachricht über die Korrelations-ID (CorrelId) auszuwählen und um die ursprüngliche Anforderungs-MQMD in die MQMD der Nachricht zu kopieren, die verarbeitet wird. Dies dient der Übertragung der Antwortnachricht von der etablierten Anwendung zur korrekten Anforderungsanwendung. Der MQGet-Knoten ruft außerdem die Nutzdaten der WebSphere MQ-Nachricht ab, die zum Speichern der ursprünglichen Werte 'ReplyToQ' und 'ReplyToQMgr' verwendet wurde.

Der MQReply-Knoten 'PutOriginalReply' schreibt die WebSphere MQ-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