MQAbrufknoten in einem Anforderung-Antwort-Nachrichtenfluss verwenden

Details zur Verarbeitung, die im MQAbrufknoten abläuft, um das oben beschriebene Ergebnis zu erreichen, finden Sie unter Nachrichtenverarbeitung im MQAbrufknoten.

Einführung

Diese Seite gibt eine Einführung in die Verwendung eines MQAbrufknotens in einem Anforderung-Antwort-Nachrichtenfluss (request-response). Es wird beschrieben, wie der Knoten die Eingabenachrichten verarbeitet (gemäß der von Ihnen festgelegten LocalEnvironment- und Eingabeparameter), um die Ausgabenachrichten zu erstellen.

Weitere Details zum Erstellen eines Nachrichtenflusses finden Sie in folgendem Beispiel: Koordinierte Anforderungsantwort.

Verwendung der LocalEnvironment-Daten

Die LocalEnvironment-Daten werden gelesen und vom MQAbrufknoten aktualisiert.

  • Die MQGMO-Struktur wird aus ${inputMQParmsLocation}.MQGMO.* gelesen.
  • MQ-Rückkehrcodes und -Ursachencodes werden in ${outputMQParmsLocation}.CC und .RC abgelegt.
  • Wenn in der lokalen Umgebung eine MQGMO-Baumstruktur vorhanden ist, wird sie mit den vom Knoten verwendeten Werten aktualisiert und an den nachgelagerten Knoten weitergegeben.
  • Wenn ${inputMQParmsLocation}.MQMD vorhanden ist, werden die an den MQGET-Aufruf übergebenen MQMD-Daten (mit den in der Eingabenachricht angegebenen oder von dem Knoten generierten Werten) an dieser Adresse abgelegt, wobei alle dort bereits vorhandenen Daten gelöscht werden.
Zusammenfassung:
${inputMQParmsLocation}
  • QueueName
  • InitialBufferSize
${outputMQParmsLocation}
  • CC
  • RC
beide
  • MQGMO.*
  • MQMD

Erstellung der MQMD-Daten für den MQGet-Aufruf

  • Wenn Sie keinen Eingabe-MQMD übergeben, wird ein Standard-MQMD verwendet.
  • Wenn Sie einen Eingabe-MQMD übergeben, wird er auf eine der folgenden Arten verwendet:
    • Wenn das Attribut Vollständiges Eingabe-MQMD verwenden gesetzt ist, wird der Eingabe-MQMD in seiner Gesamtheit verwendet.
    • Wenn das Attribut Vollständiges Eingabe-MQMD verwenden nicht festgelegt ist, wird ein Standard-MQMD vorbereitet und, falls die Markierungsfelder Nachrichten-ID oder Korrelations-ID aktiviert sind, jede im Eingabe-MQMD gessetzte entsprechende ID in den Standard-MQMD kopiert.

Das folgende Diagramm zeigt etwas ausführlicher, wie der MQAbrufknoten den MQMD, der im Aufruf an WebSphere MQ verwendet werden soll, erstellt:

Das Diagramm wird oben im Text beschrieben.

Erstellung der Ausgabenachrichtenbaumstruktur

Das folgende Diagramm zeigt im Überblick, wie die Ausgabenachrichtenbaumstruktur erstellt wird, indem die Eingabebaumstruktur aus dem vorherigen Knoten mit der Ergebnisbaumstruktur aus dem MQGet-Aufruf kombiniert wird:

Das Diagramm wird oben im Text beschrieben.

Hier ein Beispiel:
copyMessage
copyEntireMessage
generateMode
message
outputDataLocation
OutputRoot.XML.A
resultDataLocation
ResultRoot.XML.C
In diesem Beispiel wird die Ausgabebaumstruktur wie folgt erstellt:
  1. Die gesamte Eingabebaumstruktur wird in die Ausgabebaumstruktur kopiert, einschließlich des XML-Zweiges mit dem untergeordneten Element A und dem A untergeordneten Element B.
  2. Das untergeordnete Element C und das C untergeordnete Element D im XML-Zweig werden aus der Ergebnisbaumstruktur an Position OutputRoot.XML.A in der Ausgabebaumstruktur abgelegt. Der bisherige Inhalt von A (Werte und untergeordnete Elemente) wird gelöscht und durch den Inhalt von C ersetzt, einschließlich aller Werte und untergeordneten Elemente (in diesem Fall das untergeordnete Element D).
  3. Die Position in der Ausgabebaumstruktur behält den Namen A.
Das folgende Diagramm zeigt dies in einer anschaulichen Darstellung:

Das Diagramm wird oben im Text beschrieben.

Beispiele für Nachrichtenbaumstrukturen

Es folgen einige Beispiele, wie Nachrichtenbaumstrukturen gemäß den oben beschriebenen Regeln erstellt werden.

Tabelle 1. Beispiel für Input, LocalEnvironment und MQGet
Die Nachricht ist wie folgt aufgebaut: MQGet gibt folgende Nachricht zurück:
InputRoot
MQMD
{Eingabenachricht-MQMD}
MQRFH2
{Eingabenachricht-MQRFH2}
XMLNS
{Eingabenachricht-Hauptteil}
InputLocalEnvironment
MQ
GET
MQGMO
MatchOptions = MQMO_MATCH_CORREL_ID
MQMD (ohne untergeordnete Elemente)
MyData
MQMD
{Eingabe-MQMD} (mit CorrelID = {richtige Korrelations-ID in Binärformat})
ResultRoot
MQMD
{Ergebnisnachricht-MQMD}
MQMD
{Ergebnisnachricht-MQMD}
XML
{Ergebnisnachricht-Hauptteil}
Tabelle 2. Die resultierende Ausgabenachricht gemäß einiger Beispieleinstellungen
Bei folgenden Einstellungen ist die erstellte Ausgabenachricht wie folgt aufgebaut:
inputMQMDLocation
InputLocalEnvironment.MyData.MQMD
copyMessage
copyEntireMessage
copyLocalEnv
copyEntireLocalEnvironment
generateMode
messageAndLocalEnvironment
outputDataLocation
InputLocalEnvironment.MyData.ReturnedMessage
OutputRoot
MQMD
{Eingabenachricht-MQMD}
MQRFH2
{Eingabenachricht-MQRFH2}
XMLNS
{Eingabenachricht-Hauptteil}
OutputLocalEnvironment
MQ
GET
MQGMO
{für GET verwendetes MQGMO}
MQMD
{für GET verwendeter MQMD}
CC = 0
RC = 0
MyData
MQMD
{Eingabe-MQMD} (mit CorrelID = {richtige Korrelations-ID in Binärformat})
Antwortnachricht
MQMD
{Ergebnisnachricht-MQMD}
MQRFH2
{Ergebnisnachricht-MQRFH2}
XML
{Ergebnisnachricht-Hauptteil}
resultDataLocation
ResultRoot.XML
OutputRoot
MQMD
{Eingabenachricht-MQMD}
MQRFH2
{Eingabenachricht-MQRFH2}
XMLNS
{Eingabenachricht-Hauptteil}
OutputLocalEnvironment
MQ
GET
MQGMO
{für GET verwendetes MQGMO}
MQMD
{für GET verwendeter MQMD}
CC = 0
RC = 0
MyData
MQMD
{Eingabe-MQMD} (mit CorrelID = {richtige Korrelations-ID in Binärformat})
Antwortnachricht (mit allen Attributen und Werten aus ResultRoot.XML)
{Ergebnisnachricht-Hauptteil}

Diese Baumstruktur ist das effektive Ergebnis einer Zuordnung von ${resultDataLocation} zu ${outputDataLocation}. Der Wert des Quellenelements wird kopiert, ebenso alle untergeordneten Elemente, einschließlich der Attribute.

copyLocalEnv
none
OutputRoot
MQMD
{Eingabenachricht-MQMD}
MQRFH2
{Eingabenachricht-MQRFH2}
XMLNS
{Eingabenachricht-Hauptteil}
OutputLocalEnvironment
MQ
GET
MQGMO
{für GET verwendetes MQGMO}
MQMD
{für GET verwendeter MQMD}
CC = 0
RC = 0
MyData
Antwortnachricht (mit allen Attributen und Werten aus ResultRoot.XML)
{Ergebnisnachricht-Hauptteil}

In dieser Baumstruktur wird der MQMD für den GET-Aufruf in OutputLocalEnvironment verwendet, weil sich an der Position mit den MQ-Eingabeparametern ein untergeordnetes MQMD-Element befindet. Zwar wird die Eingabebaumstruktur nicht kopiert, die Anwesenheit des MQMD-Elements sorgt jedoch dafür, dass der für den GET-Aufruf verwendete MQMD in der Ausgabebaumstruktur abgelegt wird.

outputDataLocation
<blank>
copyLocalEnv
copyEntireLocalEnvironment
OutputRoot
MQMD
{Ergebnisnachricht-MQMD}
MQRFH2
{Ergebnisnachricht-MQRFH2}
XMLNS
{Ergebnisnachricht-Hauptteil}
OutputLocalEnvironment
MQ
GET
MQGMO
{für GET verwendetes MQGMO}
MQMD
{für GET verwendeter MQMD}
CC = 0
RC = 0
MyData
MQMD
{Eingabe-MQMD} (mit CorrelID = {richtige Korrelations-ID in Binärformat})

Die Einstellung von copyMessage hat in diesem Fall keine Auswirkung auf die erstellte Ausgabebaumstruktur.

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht

Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2005 Letzte Aktualisierung: Nov 17, 2005
ac34680_