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.
Der Anforderungsnachrichtenfluss führt folgende Verarbeitung aus:
Der Nachrichtenfluss 'Request' enthält die folgenden 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:
Der JMSOutput-Knoten 'OutputRequestMsg' schreibt die JMS-Ausgabenachricht.
Der Back-End-Antwortnachrichtenfluss führt folgende Verarbeitung aus:
Der Nachrichtenfluss 'Backend Reply' enthält die folgenden 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:
Der JMSReply-Knoten 'PutReplyMsg' schreibt die JMS-Ausgabenachricht.
Der Nachrichtenfluss 'Reply' führt die folgenden Verarbeitungsschritte aus:
Der Antwortnachrichtenfluss besteht aus den folgenden 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 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.
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>