Das CICS-Programm WMBCHAN1 erwartet einen Kanal mit mehreren Containern:
Außerdem liefert das Programm 'WMBCHAN1' zwei weitere Container: mirrorTran mit der Spiegeltransaktion, unter der WMBCHAN1 ausgeführt wird, und ChannelName mit dem Namen des Kanals (dabei handelt es sich um den Namen der Eingabenachrichtensammlung).
Die XML-Eingabe im Nachrichtenfluss wird in folgendem Beispiel dargestellt:
<Data> <Explanation1>These numbers are added together by CICS. Each number is a separate input container</Explanation1> <Numbers> <number>10</number> <number>20</number> <number>30</number> <number>40</number> <number>50</number> </Numbers> <Explanation2>CICS examines each string and returns the longest string in a response container</Explanation2> <Strings> <string>short data</string> <string>some other data, but not long enough</string> <string>A really long sentence that CICS can pick out and return in a container.</string> <string>data</string> <string>some more strings</string> </Strings> </Data>
Der Eingabekanal muss wie in folgendem Beispiel aussehen:
Containername | Inhalte |
---|---|
number1 | 10 |
number2 | 20 |
number3 | 30 |
number4 | 40 |
number5 | 50 |
string1 | short data |
string2 | some other data, but not long enough |
string3 | a really long sentence that CICS can pick out and return in a container |
string4 | data |
string5 | some more strings |
Dieser Mustercode kann in zwei verschiedenen Modi genutzt werden. Der erste Modus ist der Nachrichtensammlungsmodus. In diesem Modus veranschaulicht der Mustercode die Erstellung einer Nachrichtensammlung und deren Verwendung für die Darstellung mehrerer Eingabecontainer.
Der zweite Modus ist der Einzelnachrichtenmodus. Der CICSRequest-Knoten kann aus einer einzelnen Nachricht (keine nachrichtenbezogene Sammlung) einen einzelnen Container erstellen. Im Einzelnachrichtenmodus veranschaulicht der Mustercode das Senden einer Nachricht als Container an CICS ohne den Aufwand einer Nachrichtensammlung.
Die Nachrichtensammlung wird mit einem Rechenknoten in Extended SQL (ESQL) erstellt. Der Rechenknoten führt folgende Tasks aus:
Im Einzelnachrichtenmodus wird eine einzelne XML-Nachricht an den Fluss gesendet. Ein Rechenknoten legt Metadaten in der lokalen Umgebung fest, die den verwendeten Container und den verwendeten Kanal benennen. Die XML-Daten werden in einen Bitstrom umgewandelt und als Hauptteil des benannten Containers gesendet.
Zur vollständigen Ausführung dieser Aktionen verfügt der Rechenknoten über folgende Anweisungen:
Send the message with a channel name of SINGLEMSG: SET OutputLocalEnvironment.Destination.CICS.RequestChannel.ChannelName='SINGLEMSG';
Send the message body in a container called string1. SET OutputLocalEnvironment.Destination.CICS.RequestChannel.SingleMessageContainerName='string1';
Send string1 as a character container. SET OutputLocalEnvironment.Destination.CICS.RequestChannel.Containers.string1='CHARACTER';
Unabhängig von der Art der Eingabe, die an den CICSRequest-Knoten gesendet wird, ist die Ausgabe bei Verwendung der Kanalunterstützung immer eine Nachrichtensammlung.
Die Antwortnachricht enthält vier relevante Container:
Auf der CICSRequest-Eigenschaftenregisterkarte 'Syntaxanalyse der Antwortnachricht' ordnet ein Eintrag in der Tabelle den Container sum gemeinsam mit der Nachrichtengruppe (CICSIntegerMSet), die für die Eingabezahlencontainer verwendet wurde, einer MRM-Domäne zu. Wenn also der Container sum geliefert wird, wird er diesen Syntaxanalysedaten zugeordnet.
Das Kontrollkästchen auf der Registerkarte 'Syntaxanalyse der Antwortnachricht' ist aktiviert, sodass alle von CICS zurückgegebenen Container, die nicht in der Tabelle genannt sind, als Name-/Wertattribute statt als Nachrichtenordner zurückgegeben werden. Die Container longestString, mirrorTran und channelName sind allesamt Zeichencontainer, die keine weitere Interpretation erfordern und daher direkt zur Ausgabe aus dem Fluss in die XML-Nachricht gestellt werden können.
Das folgende Diagramm veranschaulicht den Hauptnachrichtenfluss des Mustercodes 'CICS Transaction Server for z/OS Channel Connectivity'.
Knotentyp | Knotenname |
---|---|
MQ-Empfangsknoten | CICSCHANNEL_IN, CICSSingleMsg_IN |
Compute | CreateCollection, AddLENames, ProcessChannel, ProcessAbend |
CICSRequest | CICS Request |
MQOutput | CICSCHANNEL_OUT, CICSCHANNEL_ABEND |
Weitere Informationen zu den im Mustercode 'CICS Transaction Server for z/OS Channel Connectivity' verwendeten Knoten finden Sie in der Dokumentation zu WebSphere Message Broker im Abschnitt Integrierte Knoten .
Wird eine der Nachrichten in die Eingabewarteschlange eingereiht, durchläuft sie die Knoten. Wenn eine der Warteschlangen inaktiviert ist, kann die Nachricht dieser Route nicht folgen.
Im folgenden Abschnitt wird die Route beschrieben, welche die Nachrichten nehmen, sowie die Funktion der Knoten im Hauptnachrichtenfluss des Mustercodes 'CICS Transaction Server for z/OS Channel Connectivity'.
Nachrichtensammlungsmodus: Eine Nachricht wird an die Warteschlange CICSCHANNEL_IN gesendet
Einzelner Nachrichtenmodus: Eine Nachricht wird an die Warteschlange CICS_SINGLEMSG_IN gesendet
Der Mustercode 'CICS Transaction Server for z/OS Channel Connectivity' veranschaulicht, wie eine Eingabenachricht gelesen, eine Nachrichtensammlung erstellt, eine Verbindung zu CICS hergestellt und ein kanalbasiertes Programm gesteuert wird. Die Antwortnachrichtensammlung wird in das XML-Format konvertiert und in eine Warteschlange ausgegeben.
Weitere Informationen finden Sie unter Mit CICS Transaction Server for z/OS arbeiten in der Dokumentation für WebSphere Message Broker.
Vor Ausführung des Mustercodes müssen Sie zunächst die unter Mustercode 'CICS Transaction Server for z/OS Channel Connectivity' einrichten aufgeführten Schritte ausführen.