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 |
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.
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:
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';
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.
El siguiente diagrama muestra el flujo de mensajes principal 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.
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
Modalidad de un único mensaje: se envía un mensaje a la cola CICS_SINGLEMSG_IN
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.