WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Estructuras de datos de canal o COMMAREA

Es posible enlazar a programas CICS Transaction Server for z/OS utilizando una estructura de datos COMMAREA o una estructura de datos de canal como entrada, que devuelven la misma estructura de datos como salida. El nodo CICSRequest da soporte a la interacción con CICS a través de las estructuras de datos de canal o COMMAREA.

Los canales son una alternativa moderna para COMMAREAs, lo cual descongestiona el tamaño máximo de COMMAREA de 32766 bytes, y permite una mayor flexibilidad en estructuras de datos de entrada/salida.

COMMAREAs

Si utiliza un COMMAREA como estructura de datos de entrada para comunicarse con CICS, el nodo CICSRequest toma una parte del cuerpo de entrada, tal como se define en las propiedades de solicitud del nodo CICSRequest y lo envía a CICS como el COMMAREA.

El COMMAREA devuelto se coloca a continuación en el árbol de salida y sustituye el cuerpo existente en la ubicación que se define en las propiedades de resultado del nodo CICSRequest. El área de comunicación (COMMAREA) puede configurarse para el análisis utilizando las propiedades de análisis de mensajes de respuesta del nodo CICSRequest.

Al definir una estructura de datos COMMAREA como entrada, debe asegurarse de que el valor de la propiedad Longitud del área de comunicación del nodo CICSRequest sea lo suficientemente grande como para contener los datos de solicitud de entrada, o los datos de respuesta de salida, pero que no exceda el valor máximo de 32767 bytes. Si el valor de Longitud del commarea no es lo suficientemente grande como para utilizarlo para los datos de respuesta, o los datos de solicitud, se produce una fuga de memoria en CICS. El tamaño del COMMAREA no puede ser cambiado por el programa de CICS. Si el tamaño de los datos de solicitud serializados es superior a la Longitud de commarea, los datos se truncan a la Longitud del área de comunicación. Puede obtener el valor de la Longitud de commarea del administrador o desarrollador de CICS.

El valor predeterminado para la propiedad básica estructura de datos del nodo CICSRequest es Commarea.

Para obtener más información acerca de cómo utilizar una estructura de datos COMMAREA como entrada, consulte Definición de una estructura de datos de CICS Transaction Server for z/OS, Desarrollo de un flujo de mensajes con un nodo CICSRequesty Creación de un mensaje para el nodo CICSRequest.

Canales

Los canales CICS contienen varias estructuras denominadas contenedores. Los contenedores contienen la información empresarial a la que accede el programa CICS de destino. Cada contenedor puede albergar hasta 2 GB de datos y los canales pueden contener tantos contenedores como sea necesario, proporcionando flexibilidad en términos en términos de tamaño y disposición de los datos. Cada contenedor tiene un nombre de contenedor alfanumérico de 16 caracteres como máximo, que es exclusivo en el canal y se utiliza como mecanismo para recuperar el contenido del contenedor desde el canal.

Hay dos tipos de contenedor; caracteres o binario. El tipo de contenedor puede afectar a la conversión de datos entre WebSphere Message Broker y CICS, pero el tipo de contenedor no tiene ningún efecto en el formato de la información que puede colocarse en el contenedor.
Contenedores de caracteres
Es más probable que los contenedores de caracteres sean series individuales o elementos de datos únicos, pero también pueden ser las estructuras correlacionadas; no obstante, es importante recordar que la conversión de datos se aplica a los datos del contenedor. Cuando se construye un contenedor de caracteres, el ID de origen de juego de caracteres codificado (CCSID) información sobre el contenedor se envía a CICS como metadatos. El programa CICS utiliza la llamada de la interfaz de programación de aplicaciones GET CONTAINER (API) para convertir los metadatos en el CCSID predeterminado de la región, a menos que se proporcione otro CCSID. El programa CICS, a continuación, coloca el contenedor de nuevo en el canal y los datos se convierten preparados para que la aplicación de WebSphere Message Broker los recupere y utilice.
Contenedores binarios
Los contenedores binarios se pueden correlacionar utilizando una estructura COBOL o pueden ser valores discretos. La conversión de datos no se aplica a los datos en un contenedor binario, por lo tanto, los datos de un contenedor binario se envía a CICS y se recuperan de CICS sólo en formato original.

A diferencia de las estructuras COMMAREA, no es necesario que el tamaño del canal respuesta se parezca a la solicitud, mientras que las COMMAREAs deben tener en cuenta el tamaño de la respuesta en la solicitud.

Canales y contenedores en CICS

En el diagrama siguiente ejemplo, el canal tiene dos contenedores de CICS ; CustomerName y Order.

El diagrama muestra un canal de ejemplo en CICS que tiene dos contenedores. El primero se denomina CustomerName y es un contenedor de caracteres con un valor de Joe Bloggs. El segundo es un contenedor binario denominado Order y contiene una estructura compleja representada por un libro de copias (copybook) COBOL.

CustomerName es un contenedor de caracteres (CHAR) que contiene una serie de caracteres individual; Joe Bloggs. Puesto que CustomerName es un contenedor de caracteres, se puede aplicar una conversión de datos a los datos de en el contenedor. Order es un contenedor binario (BIN) que podría crearse utilizando una estructura copybook de COBOL o un archivo de cabecera C, que luego puede importar para llenar el conjunto de mensajes con definiciones de mensajes. El copybook de ejemplo siguiente describe el diseño binario de los datos que el programa CICS espera recibir:
01 ORDER_STRUCTURE.
          03 QTY                  COMP-1.
          03 ITEM                 PIC X(10).
          03 PRICE                PIC S9(9).
El programa de destino CICS puede recuperar ambos contenedores del canal proporcionando el nombre del contenedor cuando se utiliza la API GET CONTAINER. Cuando los datos se proporcionan al programa CICS, el programa procesa elija lo que elija. Por ejemplo, el programa puede colocar otros contenedores en el canal para proporcionar una respuesta al contenedor denominado utilizando la API PUT CONTAINER.

Canales y contenedores en WebSphere Message Broker

En WebSphere Message Broker, un canal CICS está representado como una estructura de colección de mensajes. Una colección de mensajes puede contener mensajes hijo, cada uno tratado como un contenedor por el nodo CICSRequest. Una estructura de colección de mensajes se utiliza como entrada y salida en el nodo CICSRequest cuando se utiliza una estructura de datos de canal. Para obtener más información acerca de colecciones de mensajes, consulte Colecciones de mensajes y para obtener información sobre cómo crear una colección de mensajes, consulte Crear una colección de mensajes utilizando ESQL.

El nombre de la colección de mensajes se utiliza para el nombre del canal. El nombre del mensaje hijo de la colección de mensajes se utiliza como el nombre del contenedor en el canal y debe ser exclusivo. Si el nombre de mensaje hijo de la colección de mensajes no es exclusivo, la solicitud se rechaza en CICS.

En la tabla siguiente se muestran el canal y contenedor de la colección de mensajes y la correlación de mensajes hijo:
CICS WebSphere Message Broker
Nombre de canal Nombre de la colección de mensajes
Nombre de contenedor (debe ser exclusivo para el canal primario) Nombre de mensajes hijo (debe ser exclusivo a la colección de mensajes)

Atributos nombre-valor

WebSphere Message Broker da soporte a agregar atributos nombre-valor a una colección de mensajes para crear un contenedor. Una colección de mensajes puede tener cero o más atributos. El nombre de un atributo debe ser único dentro de una colección de mensajes. Un atributo estándar para la colección de mensajes es un atributo denominado CollectionName.

Puede agregar atributos nombre-valor a una colección de mensajes para crear los contenedores de CICS. Los atributos nombre-valor en la colección de mensajes, aparte de CollectionName, se pueden utilizar en lugar de mensajes-carpetas completos para datos simples. Por ejemplo, un atributo de serie nombre-valor se puede establecer en la colección de mensajes y utilizarse directamente en el nodo CICSRequest sin necesidad de crear un conjunto de mensajes para el elemento.

Los atributos nombre-valor se pueden generar a partir de los contenedores en la salida, así como aceptarse en la entrada. Para obtener información sobre la creación de un atributo en lugar de una carpeta de mensajes de un contenedor, consulte Nodo CICSRequest.

En el diagrama siguiente ejemplo, el CICS canal se representa mediante una colección de mensajes denominado Collection. Colección contiene dos contenedores que se representan mediante mensajes hijo denominado CustomerName y Order. CollectionName y CustomerName son ambos atributos nombre-valor, aunque el atributo CollectionName no es tratado como un contenedor por el nodo CICSRequest, y, por consiguiente, no se envía a CICS.

El diagrama muestra un canal CICS que se representa mediante una colección de mensajes denominado Collection. Collection tiene dos contenedores que se representan mediante mensajes hijo denominado CustomerName y Order.

Si el atributo CustomerName va a tratarse como un contenedor carácter por el nodo CICSRequest, el entorno local debe reflejarlo.

LocalEnvironment

Cada mensaje hijo en una colección de mensajes se trata como que tiene un tipo de valor predeterminado de binary, que determina si los datos se convierte al CCSID en la región de CICS. Sin embargo, puede alterar dinámicamente este valor en caracteres, un mensaje a la vez, en el entorno local. Por ejemplo, puede establecer el valor siguiente en LocalEnvironment.Destination.CICS.RequestChannel.Containers:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.Containers.<myContainerName> = CHARACTER;

Cuando una colección de mensajes se emite desde el nodo CICSRequest después de la solicitud, el entorno local contiene la información de tipo devuelto para los contenedores. Por ejemplo, cuando el canal respuesta vuelve de CICS, el entorno local muestra los tipos de los contenedores que tienen volver en la ubicación siguiente: LocalEnvironment.CICS.ResponseChannel.Containers.<myContainerName> CHARACTER =

El nombre de canal, que tiene un límite alfanumérico de 16 caracteres, se puede alterar temporalmente de la manera siguiente:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.ChannelName = <myNewChannelName>;
Si necesita un contenedor único sólo para la entrada, no necesita crear una colección de mensajes. Puede utilizarse en su lugar un mensaje normal aunque deberá establecer ChannelName con un máximo de 16 caracteres alfanuméricos en LocalEnvironment. Debe proporcionar un SingleMessageContainerName con un máximo de 16 caracteres alfanuméricos que crear en la ubicación siguiente:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.SingleMessageContainerName = <mySingleMessageContainerName>;

Puesto que una colección de mensajes permite que cada contenedor en el canal sea modelado como un mensaje independiente, cada mensaje tiene su propia estructura y las opciones de análisis. Por ejemplo, un contenedor podría ser XML y otro puede estar basado en copybook, que puede representarse mediante mensajes XMLNSC y MRM dentro de una colección de mensajes.

Cada mensaje hijo de la colección de mensajes contiene un dominio de mensajes, conjunto, tipo, formato, CCSID, e información de codificación en la carpeta Propiedades que está asociada con el mensaje hijo, que se serializa en una secuencia de bytes y se envía a CICS. Cada carpeta de mensajes hijo dentro de la colección de mensajes que se envía a CICS se serializa en el nivel del último hijo del dominio de propiedad de mensaje. No todos los contenedores de CICS necesitan un conjunto de mensajes para representarlos.

En el ejemplo anterior, el contenedor Orden se puede representar como MRM, y un conjunto de mensajes se pueden crear desde el copybook ORDER_STRUCTURE para representarlo. El canal de devolución se convierte en una colección de mensajes, donde cada mensaje hijo de la colección de mensajes representa un contenedor desde el canal. Los mensajes hijo de la colección de mensajes se correlacionan con una lista de dominio de mensajes, conjunto, tipo, formato, CCSID y codificación información utilizando el nombre del mensaje hijo, sin embargo, el CCSID y la codificación información se omiten los mensajes de caracteres. Si no puede encontrarse una correlación en el mensaje, puede proporcionarse una correlación por omisión.

Puesto que no es posible saber cuántos contenedores están en la respuesta, siempre se genera como salida una colección de mensajes.

Puede utilizar las propiedades Análisis de mensaje de respuesta del nodo CICSRequest para correlacionar un contenedor que regresa a un dominio de mensajes, conjunto, tipo, formato, CCSID, y la información de codificación. En particular, la propiedad Ubicación de datos de resultado se puede utilizar para reducir el árbol de resultado a una carpeta de mensajes único o a un único campo o subárbol para la salida. Para obtener información acerca de la propiedad Ubicación de datos de resultado, consulte Nodo CICSRequest.

Los siguientes detalles deben especificarse para que el mensaje llegue al nodo CICSRequest de entrada terminal y procesarse en una serie de contenedores y para los contenedores en el canal de respuesta que se va a colocar de nuevo en el mensaje a medida que deja el nodo:
  • Debe proporcionarse al menos al canal un nombre alfanumérico de 16 caracteres como máximo.

    Dado que el canal se representa mediante una colección de mensajes en WebSphere Message Broker, puede crear el nombre de canal estableciendo el nombre de la colección de mensajes. Los nombres de la colección de mensajes se establecen utilizando el atributo CollectionName. Para obtener más información acerca de cómo crear una colección de mensajes y establecer el nombre de la colección de mensajes, consulte Crear una colección de mensajes utilizando ESQL.

  • Los siguientes detalles deben especificarse para cada contenedor en el canal:
    • Un nombre alfanumérico de 16 caracteres como máximo.

      Dado que un contenedor se representa mediante un mensaje hijo en WebSphere Message Broker, puede crear un nombre de contenedor estableciendo el nombre de mensajes hijo. Para obtener más información acerca de cómo crear una colección de mensajes y establecer el nombre del mensaje hijo, consulte Crear una colección de mensajes utilizando ESQL.

    • Un tipo de contenedor; por ejemplo, binary o character.
    • Un directorio que se utilizará para colocar los datos de respuesta.

Se proporciona un ejemplo que muestra cómo llamar a un programa CICS basado en canal creando y rellenar una colección de mensajes para el nodo CICSRequest, y cómo procesar la colección después de la llamada. Para obtener más información, consulte CICS Transaction Server for z/OS Channel Connectivity.

Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 17:00:44


Tema de conceptoTema de concepto | Versión 8.0.0.5 | bc16120_