Acerca del ejemplo Conectividad del canal de CICS Transaction Server for z/OS

El programa CICS WMBCHAN1 espera un canal con una serie de contenedores:

El programa WMBCHAN1 también devuelve dos contenedores más: mirrorTran, que contiene la transacción de duplicación bajo la que se ejecuta WMBCHAN1, y ChannelName, que contiene el nombre del canal (que es el nombre de la colección de mensajes de entrada).

En el siguiente ejemplo se muestra la entrada XML para el flujo de mensajes:

<Data>
  <Explanation1>CICS suma estos números. Cada número es un contenedor de entrada distinto</Explanation1>
  <Numbers>
    <number>10</number>
    <number>20</number>
    <number>30</number>
    <number>40</number>
    <number>50</number>
  </Numbers>
  <Explanation2>CICS examina cada serie y devuelve la serie más larga
en un contenedor de respuesta</Explanation2>
  <Strings>
    <string>datos abreviados</string>
    <string>más datos, pero no suficientemente largos</string>
    <string>Una frase muy larga que CICS puede seleccionar y
devolver en un contenedor.</string>
    <string>datos</string>
    <string>más series</string>
  </Strings>
</Data>

El canal de entrada debe ser parecido al siguiente ejemplo:

Nombre de contenedor Contenido
number1 10
number2 20
number3 30
number4 40
number5 50
string1 datos abreviados
string2 más datos, pero no suficientemente largos
string3 Una frase muy larga que CICS puede seleccionar y devolver en un contenedor
string4 datos
string5 más series

Mensajes de entrada

Este ejemplo está diseñado para ser utilizado en dos modalidades distintas. La primera modalidad es la de recopilación de mensajes. En esta modalidad, el ejemplo muestra cómo construir una colección de mensajes y utilizarla para representar varios contenedores de entrada.

La segunda modalidad es la de un único mensaje. El nodo CICSRequest puede crear un único contenedor a partir de un único mensaje (una colección que no es de mensajes). En la modalidad de un único mensaje, el ejemplo muestra cómo enviar un mensaje cómo contenedor a CICS sin la sobrecarga de una colección de mensajes.

Modalidad de colección de mensajes

La colección de mensajes se construye en ESQL mediante un nodo de cálculo (Compute). El nodo Compute lleva a cabo las siguientes tareas:

Modalidad de un único mensaje

En la modalidad de un único mensaje, se envía un mensaje XML al flujo. Un nodo Compute establece metadatos en el entorno local que indican el contenedor y el canal que se va a utilizar. Los datos XML se devuelven en una secuencia de bits y se envían como cuerpo del contenedor indicado.

Para llevar a cabo estas acciones, el nodo Compute tiene las siguientes sentencias:

Para enviar el mensaje con el nombre de canal SINGLEMSG:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.ChannelName='SINGLEMSG';

Para enviar el cuerpo del mensaje en un contenedor denominado string1:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.SingleMessageContainerName='string1';

Para enviar string1 como contenedor de caracteres:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.Containers.string1='CHARACTER';

Procesamiento de la respuesta

Independientemente del tipo de entrada enviada al nodo CICSRequest, cuando se utiliza el soporte de canal, la salida siempre es una colección de mensajes.

El mensaje de respuesta contiene cuatro contenedores de interés:

En la pestaña de propiedades Análisis de mensaje de entrada de CICSRequest, una entrada en la tabla correlaciona el contenedor sum con un dominio MRM, junto con el mismo conjunto de mensajes (CICSIntegerMSet) que se utilizó para los contenedores de número de entrada. Por consiguiente, si se devuelve el contenedor sum, se correlaciona con esta información de análisis.

La casilla de verificación de la pestaña Análisis de mensaje de entrada se establece de tal modo que los contenedores devueltos desde CICS que no se enumeren en esta tabla se devuelvan como atributos de nombre-valor, no como carpetas de mensajes. Los contenedores longestString, mirrorTran y channelName son contenedores de series que no requieren ningún tipo de interpretación adicional, por lo que pueden colocarse directamente en el mensaje XML para su salida desde el flujo.

Flujos de mensajes

El siguiente diagrama muestra el flujo de mensajes principal del ejemplo Conectividad de canal de CICS Transaction Server for z/OS.

Flujo de mensajes del ejemplo Conectividad de canal de CICS Transaction Server for z/OS

Tipo de nodo Nombre de nodo
MQInput CICSCHANNEL_IN, CICSSingleMsg_IN
Compute CreateCollection, AddLENames, ProcessChannel, ProcessAbend
CICSRequest CICS Request
MQOutput CICSCHANNEL_OUT, CICSCHANNEL_ABEND

Para obtener más información sobre los nodos que se utilizan en el ejemplo Conectividad de canal de CICS Transaction Server for z/OS, consulte Nodos incorporados en la documentación de WebSphere Message Broker.

Ruta tomada por los mensajes del ejemplo de canal

Al colocar uno de los mensajes en la cola de entrada, el mensaje pasa a través de los nodos. Si ninguna de las colas se ha inhabilitado, el mensaje no puede seguir esta vía de acceso.

En la siguiente sección se describe la ruta seguida por los mensajes y la función de los nodos en el flujo de mensajes de ejemplo principal Conectividad del canal de CICS Transaction Server for z/OS.

Modalidad de colección de mensajes: se envía un mensaje a la cola CICSCHANNEL_IN

  1. CICSCHANNEL_IN: el nodo CICSCHANNEL_IN MQInput obtiene el mensaje de entrada de la cola de entrada.
  2. CreateCollection: el nodo CreateCollection Compute crea una colección de mensajes; para ello, en primer lugar crea un último hijo inmediato del elemento raíz denominado Collection y luego copia la carpeta de propiedades. El nodo crea un elemento (CollectionName) y le asigna el nombre (que pasa a ser el nombre del canal). El nodo luego itera por cada una de las carpetas de número del mensaje de entrada y crea una carpeta de mensajes con nombre exclusivo para cada una. Para las carpetas de series, el nodo crea elementos exclusivos, no carpetas. El nodo establece un valor de entorno local para cada elemento para identificarlo como contenedor de caracteres.
  3. Solicitud CICS: el nodo CICSRequest se configura para estructuras de datos de canal. El nodo llama al programa CICS WMBCHAN1 y espera la respuesta de un canal.
  4. ProcessChannel: el nodo ProcessChannel Compute crea un nuevo mensaje de salida XMLNSC basado en la colección de mensajes producida por el nodo CICSRequest. El nodo copia el valor entero de la carpeta de mensajes sum en el código XML, junto con los tres atributos de serie: longestString, channelName y mirrorTran.
  5. CICSCHANNEL_OUT: el nodo CICSCHANNEL_OUT MQOutput transfiere el mensaje a la cola de salida CICSCHANNEL_OUT.

Modalidad de un único mensaje: se envía un mensaje a la cola CICS_SINGLEMSG_IN

  1. CICSSingleMsg_IN: el nodo CICSSingleMsg_IN MQInput obtiene el mensaje de entrada de la cola de entrada.
  2. AddLENames: el nodo AddLENames Compute establece el nombre para el canal y el nombre para el contenedor que contiene los datos de mensajes de entrada. El nodo también establece el contenedor como contenedor de caracteres.
  3. Solicitud CICS: el nodo CICSRequest se configura para estructuras de datos de canal. El nodo llama al programa CICS WMBCHAN1 y espera la respuesta de un canal.
  4. ProcessChannel: el nodo ProcessChannel Compute crea un nuevo mensaje de salida XMLNSC basado en la colección de mensajes producida por el nodo CICSRequest. El nodo copia el valor entero de la carpeta de mensajes sum en el código XML, junto con los tres atributos de serie: longestString, channelName y mirrorTran.
  5. CICSCHANNEL_OUT: el nodo CICSCHANNEL_OUT MQOutput transfiere el mensaje a la cola de salida CICSCHANNEL_OUT.

El ejemplo Conectividad del canal de CICS Transaction Server for z/OS muestra cómo leer un mensaje de entrada, construir una colección de mensajes, conectarse a CICS y cómo guiar un programa basado en canales. La colección de mensajes que se devuelve se transforma en XML y se envía a una cola.

Para obtener más información, consulte Trabajar con CICS Transaction Server for z/OS en la documentación de WebSphere Message Broker.

Antes de ejecutar el ejemplo, puede llevar a cabo los pasos de configuración que se describen en Configuración del ejemplo Conectividad del canal de CICS Transaction Server for z/OS.

Volver a la página inicial del ejemplo