Informationen zum Mustercode 'CICS Transaction Server for z/OS Channel Connectivity'

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

Eingabenachrichten

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.

Nachrichtensammlungsmodus

Die Nachrichtensammlung wird mit einem Rechenknoten in Extended SQL (ESQL) erstellt. Der Rechenknoten führt folgende Tasks aus:

Einzelnachrichtenmodus

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';

Antwort verarbeiten

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.

Nachrichtenflüsse

Das folgende Diagramm veranschaulicht den Hauptnachrichtenfluss des Mustercodes 'CICS Transaction Server for z/OS Channel Connectivity'.

Nachrichtenfluss 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 .

Route der Kanalmusternachrichten

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

  1. CICSCHANNEL_IN: Der MQINPUT-Knoten 'CICSCHANNEL_IN' ruft die Eingabenachricht aus der Eingabewarteschlange ab.
  2. CreateCollection: Der Compute-Knoten 'CreateCollection' erstellt eine Nachrichtensammlung, indem er zunächst ein unmittelbares letztes untergeordnetes Element des Stammelements erstellt. Dieses hat den Namen 'Collection' und wird anschließend in den Eingabeeigenschaftenordner kopiert. Der erstellt ein Element (CollectionName) und gibt diesem einen Namen (dieser wird dann zum Kanalnamen). Anschließend durchläuft der Knoten alle Zahlenordner aus der Eingabenachricht und erstellt für jeden einen eindeutig benannten Nachrichtenordner. Für die Zeichenfolgeordner erstellt der Knoten eindeutige Elemente anstelle von Ordnern. Der Knoten legt für jedes Element einen lokalen Umgebungswert fest, um es als Zeichencontainer zu identifizieren.
  3. CICS Request: Der CICSRequest-Knoten wird für Kanaldatenstrukturen konfiguriert. Der Knoten ruft das CICS-Programm WMBCHAN1 auf und erwartet eine Kanalantwort.
  4. ProcessChannel: Der Compute-Knoten 'ProcessChannel' erstellt eine neue XMLNSC-Ausgabenachricht auf Basis der Nachrichtensammlung, die vom CICSRequest-Knoten erzeugt wird. Der Knoten kopiert den ganzzahligen Wert aus dem Nachrichtenordner sum gemeinsam mit den drei folgenden Zeichenfolgeattributen in den XML-Code: longestString, channelName und mirrorTran.
  5. CICSCHANNEL_OUT: Der MQOutput-Knoten CICSCHANNEL_OUT reiht die Nachricht in die Ausgabewarteschlange CICSCHANNEL_OUT ein.

Einzelner Nachrichtenmodus: Eine Nachricht wird an die Warteschlange CICS_SINGLEMSG_IN gesendet

  1. CICSSingleMsg_IN: Der MQINPUT-Knoten 'CICSSingleMsg_IN' ruft die Eingabenachricht aus der Eingabewarteschlange ab.
  2. AddLENames: Der Compute-Knoten 'AddLENames' legt den Namen für den Kanal und den Namen für den Container fest, der die Eingabenachrichtendaten enthält. Außerdem legt der Knoten den Container fest, der als Zeichencontainer fungieren soll.
  3. CICS Request: Der CICSRequest-Knoten wird für Kanaldatenstrukturen konfiguriert. Der Knoten ruft das CICS-Programm WMBCHAN1 auf und erwartet eine Kanalantwort.
  4. ProcessChannel: Der Compute-Knoten 'ProcessChannel' erstellt eine neue XMLNSC-Ausgabenachricht auf Basis der Nachrichtensammlung, die vom CICSRequest-Knoten erzeugt wird. Der Knoten kopiert den ganzzahligen Wert aus dem Nachrichtenordner sum gemeinsam mit den drei folgenden Zeichenfolgeattributen in den XML-Code: longestString, channelName und mirrorTran.
  5. CICSCHANNEL_OUT: Der MQOutput-Knoten CICSCHANNEL_OUT reiht die Nachricht in die Ausgabewarteschlange CICSCHANNEL_OUT ein.

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.

Zurück zum Beginn des Mustercodes