WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Estruturas de Dados COMMAREA ou de Canal

Os programas do CICS Transaction Server para z/OS podem ser vinculados usando uma estrutura de dados COMMAREA ou de canal como entrada, que retorna a mesma estrutura de dados como saída. O nó CICSRequest suporta interação com o CICS através das estruturas de dados COMMAREA ou de canal.

Os canais são uma alternativa moderna às COMMAREAs, fornecendo auxílio do tamanho máximo da COMMAREA de 32766 bytes e permitindo maior flexibilidade nas estruturas de dados de entrada/saída.

COMMAREAs

Se usando uma COMMAREA como estrutura de dados de entrada para comunicação com o CICS, o nó CICSRequest obtém uma parte do Corpo de Entrada, conforme definido nas propriedades de Solicitação do nó CICSRequest e a envia ao CICS como a COMMAREA.

A COMMAREA de retorno então é colocada na árvore de Saída e substitui o corpo existente no local definido nas propriedades de Resultado do nó CICSRequest. A COMMAREA pode, então, ser configurada para análise usando as propriedades Análise da Mensagem de Resposta do nó CICSRequest.

Ao definir uma estrutura de dados COMMAREA como entrada, você deve assegurar que o valor da propriedade Comprimento da Commarea do nó CICSRequest seja grande o suficiente para conter os dados da solicitação de entrada, ou os dados de resposta de saída, mas não exceda o valor máximo de 32767 bytes. Se o valor Comprimento da Commarea não for grande o suficiente para ser utilizado para os dados de resposta ou dados do pedido, ocorrerá uma fuga de memória no CICS. O tamanho da COMMAREA não pode ser alterado pelo programa CICS. Se os dados do pedido serializados forem maiores que o Comprimento da Commarea, os dados serão truncados no Comprimento da Commarea. É possível obter o valor Comprimento da Commarea do administrador ou desenvolvedor do CICS.

O valor padrão para a propriedade básica estrutura de dados do nó CICSRequest é Commarea.

Para obter mais informações sobre o uso de uma estrutura de dados COMMAREA como entrada, consulte Definindo uma Estrutura de Dados do CICS Transaction Server para z/OS, Desenvolvendo um Fluxo de Mensagens com um Nó CICSRequest e Construindo uma Mensagem para o Nó CICSRequest.

Canais

Os canais CICS contêm várias estruturas chamadas contêineres. Os contêineres mantêm as informações de negócios que são acessadas pelo programa CICS de destino. Cada contêiner pode conter até 2 GB de dados, enquanto os canais podem ter quantos contêineres for necessário, o que oferece flexibilidade em termos de tamanho e layout de dados. Cada contêiner tem um nome alfanumérico com no máximo 16 caracteres, que é exclusivo no canal, e é usado como mecanismo para recuperar o conteúdo do contêiner do canal.

Há dois tipos de contêiner; character ou binary. O tipo de contêiner pode afetar a conversão de dados entre o WebSphere Message Broker e o CICS; entretanto, o tipo de contêiner não tem qualquer impacto sobre o formato das informações que podem ser colocadas no contêiner.
Contêineres de caracteres
Contêineres de caracteres têm maior probabilidade de serem sequências individuais ou itens de dados discretos, mas podem também ser estruturas mapeadas; entretanto, é importante lembrar-se de que a conversão de dados é aplicada aos dados do contêiner. Quando um contêiner de caracteres é construído, a informação do ID do conjunto de caracteres codificado de origem (CCSID) sobre o contêiner é enviada ao CICS como metadados. O programa CICS usa a chamada da interface de programação de aplicativo (API) GET CONTAINER para converter os metadados no CCSID padrão da região, a menos que outro CCSID seja fornecido. O programa CICS então coloca o contêiner de volta no canal e os dados são convertidos prontos para o aplicativo WebSphere Message Broker recuperar e usar.
Contêineres binários
Contêineres binários podem ser mapeados usando uma estrutura de copybook COBOL ou podem ter valores discretos. A conversão de dados não é aplicada aos dados em um contêiner binário; logo, os dados de um contêiner binário são enviados ao CICS e recuperados do CICS no formato original somente.

Ao contrário das estruturas COMMAREA, o tamanho do canal de resposta não precisa ser semelhante à solicitação, enquanto as COMMAREAs devem permitir o tamanho da resposta na solicitação.

Canais e contêineres no CICS

No diagrama de exemplo a seguir, o canal do CICS tem dois contêineres; CustomerName e Order.

O diagrama mostra um canal de exemplo no CICS que tem dois contêineres. O primeiro é chamado CustomerName e é um contêiner de caracteres com um valor Joe Bloggs. O segundo é um contêiner binário chamado Order e contém uma estrutura complexa representada por um copybook COBOL.

CustomerName é um contêiner de caracteres (CHAR) que contém uma única sequência de caracteres; Joe Bloggs. Como CustomerName é um contêiner de caracteres, a conversão de dados pode ser aplicada aos dados do contêiner. Order é um contêiner binário (BIN) que pode ser criado usando uma estrutura de copybook COBOL ou arquivo de cabeçalho C, que você pode então importar para preencher seu conjunto de mensagens com definições de mensagem. O exemplo de copybook a seguir descreve o layout binário dos dados que o programa CICS espera receber:
01 ORDER_STRUCTURE.
          03 QTY                  COMP-1.
          03 ITEM                 PIC X(10).
          03 PRICE                PIC S9(9).
O programa CICS de destino pode recuperar ambos os contêineres do canal fornecendo o nome do contêiner ao usar a API GET CONTAINER. Quando os dados são fornecidos ao programa CICS, o programa processa os dados que ele escolhe todavia. Por exemplo, o programa pode colocar outros contêineres no canal para fornecer uma resposta ao contêiner chamada, usando a API PUT CONTAINER.

Canais e contêineres no WebSphere Message Broker

No WebSphere Message Broker, um canal CICS é representado como uma estrutura de coleção de mensagens. Uma coleção de mensagens pode conter mensagens filhas, cada uma tratada como um contêiner pelo nó CICSRequest. Uma estrutura de coleção de mensagens é usada como entrada e saída para o nó CICSRequest ao usar uma estrutura de dados de canal. Para obter mais informações sobre coleções de mensagens, consulte Coleta de Mensagens, e para informações sobre a criação de uma coleção de mensagens, consulte Criando uma Coleção de Mensagens Usando ESQL.

O nome da coleção de mensagens é usado para nomear o canal. O nome da mensagem filha na coleção de mensagens é usado como nome do contêiner no canal, e deve ser exclusivo. Se o nome da mensagem filha na coleção de mensagens não for exclusivo, a solicitação será rejeitada no CICS.

A tabela a seguir mostra o canal e o contêiner para mapeamento de coleção de mensagens e mensagem filha:
CICS WebSphere Message Broker
Nome do canal Nome da coleção de mensagens
Nome do contêiner (deve ser exclusivo para o canal pai) Nome da mensagem filha (deve ser exclusivo para a coleção de mensagens)

Atributos de nome/valor

O WebSphere Message Broker suporta a inclusão de atributos de nome/valor em uma coleção de mensagens para criar um contêiner. Uma coleção de mensagens pode ter zero ou mais atributos. O nome de um atributo deve ser exclusivo em uma coleção de mensagens. Um atributo padrão para a coleta de mensagens é um atributo chamado CollectionName.

Você pode incluir atributos de nome/valor em uma coleção de mensagens para criar contêineres CICS. Os atributos de nome/valor na coleção de mensagens, a não ser CollectionName, podem ser usados no lugar de pastas de mensagens completas para dados simples. Por exemplo, um atributo de sequência de nome/valor pode ser configurado na coleção de mensagens e usado diretamente pelo nó CICSRequest sem precisar criar um conjunto de mensagens para o elemento.

Os atributos de nome/valor podem ser produzidos a partir de contêineres na saída, bem como aceitos para entrada. Para obter informações sobre como criar um atributo em vez de uma pasta de mensagem a partir de um contêiner, consulte Nó CICSRequest.

No diagrama de exemplo a seguir, o canal do CICS é representado por uma coleção de mensagens chamada Collection. Collection contém dois contêineres que são representados por mensagens filhas denominadas CustomerName e Order. CollectionName e CustomerName são atributos de nome/valor; entretanto, o atributo CollectionName não é tratado como um contêiner pelo nó CICSRequest; portanto, não é enviado para o CICS.

O diagrama mostra um canal do CICS que é representado por uma coleção de mensagens denominada Collection. Collection contém dois contêineres que são representados por mensagens filhas denominadas CustomerName e Order.

Se o atributo CustomerName for tratado como um contêiner de caracteres pelo nó CICSRequest, o LocalEnvironment deverá refletir isso.

LocalEnvironment

Cada mensagem filha em uma coleção de mensagens é tratada como tendo um tipo padrão de binário, que determina se os dados são convertidos no CCSID na região do CICS. Entretanto, você pode substituir dinamicamente esse valor para caractere, por mensagem, no ambiente local. Por exemplo, você pode configurar o seguinte valor em LocalEnvironment.Destination.CICS.RequestChannel.Containers:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.Containers.<myContainerName> = CHARACTER;

Quando uma coleção de mensagens é emitida do nó CICSRequest após a solicitação, o LocalEnvironment contém a informação do tipo retornado para os contêineres. Por exemplo, quando o canal de resposta volta do CICS, o LocalEnvironment mostra os tipos dos contêineres que voltaram no seguinte local: LocalEnvironment.CICS.ResponseChannel.Containers.<myContainerName> = CHARACTER

O nome do canal, que tem um limite alfanumérico de 16 caracteres, pode ser substituído da seguinte forma:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.ChannelName = <myNewChannelName>;
Se um único contêiner for necessário para entrada somente, uma coleção de mensagens não precisa ser construída. Em vez disso, uma mensagem comum pode ser usada; entretanto, você deve configurar o ChannelName alfanumérico com no máximo 16 caracteres no LocalEnvironment. O SingleMessageContainerName alfanumérico de no máximo 16 caracteres que precisa ser criado deve também ser fornecido no seguinte local:
SET OutputLocalEnvironment.Destination.CICS.RequestChannel.SingleMessageContainerName = <mySingleMessageContainerName>;

Como uma coleção de mensagens permite que cada contêiner no canal seja modelado como uma mensagem separada, cada mensagem tem sua própria estrutura e opções de análise. Por exemplo, um contêiner pode ser XML e outro poderá ser baseado em um copybook, que pode ser representado usando as mensagens XMLNSC e MRM em uma coleção de mensagens.

Cada mensagem filha na coleção de mensagens contém informações de domínio, conjunto, tipo, formato, CCSID e codificação de mensagem na pasta Propriedades que são associadas à mensagem filha, que é serializada em um fluxo de bytes e enviada ao CICS. Cada pasta de mensagem filha na coleção de mensagens que está sendo enviada para o CICS é serializada no nível do último filho do domínio da propriedade de mensagem. Nem todos os contêineres do CICS exigem um conjunto de mensagens para representá-los.

No exemplo anterior, o contêiner Order pode ser representado como MRM, enquanto um conjunto de mensagens pode ser criado do copybook ORDER_STRUCTURE para representá-lo. O canal de retorno é convertido em uma coleção de mensagens, onde cada mensagem filha na coleção de mensagens representa um contêiner do canal. As mensagens filhas na coleção de mensagens são mapeadas para uma lista de informações de domínio, conjunto, tipo, formato, CCSID e codificação de mensagem usando o nome da mensagem filha; entretanto, as informações de CCSID e codificação são ignoradas para mensagens de caractere. Se um mapeamento não puder ser encontrado na mensagem, um mapeamento padrão poderá ser fornecido.

Como não é possível saber quantos contêineres estão na resposta, uma coleção de mensagens é sempre produzida como saída.

Você pode usar as propriedades de Análise de Mensagem de Resposta do nó CICSRequest para mapear um contêiner de retorno para um domínio, conjunto, tipo, formato, CCSID e codificação de mensagem. Particularmente, a propriedade Local de dados de resultados pode ser usada para reduzir a árvore de resultados para uma única pasta de mensagem ou para um único campo ou subárvore para saída. Para obter informações sobre a propriedade Local dos dados de resultados, consulte Nó CICSRequest.

Os detalhes a seguir devem ser especificados para que a mensagem chegue no terminal de entrada do nó CICSRequest e seja processada em uma série de contêineres, e para que esses contêineres no canal de resposta sejam colocados novamente na mensagem conforme ela deixa o nó:
  • Deve ser dado ao canal um nome alfanumérico de no máximo 16 caracteres.

    Como o canal é representado por uma coleção de mensagens no WebSphere Message Broker, é possível criar o nome do canal configurando o nome da coleção de mensagens. Os nomes de coleção de mensagens são configurados usando o atributo CollectionName. Para obter mais informações sobre como criar uma coleção de mensagens e configurar o nome dela, consulte Criando uma Coleção de Mensagens Usando ESQL.

  • Os detalhes a seguir devem ser especificados para cada contêiner no canal:
    • Um nome com no máximo 16 caracteres alfanuméricos.

      Como um contêiner é representado por uma mensagem filha no WebSphere Message Broker, é possível criar um nome de contêiner configurando o nome da mensagem filha. Para obter mais informações sobre como criar uma coleção de mensagens e configurar o nome da mensagem filha, consulte Criando uma Coleção de Mensagens Usando ESQL.

    • Um tipo de contêiner; por exemplo, binary ou character.
    • Um diretório a ser usado para colocar dados de resposta.

É fornecida uma amostra que demonstra como chamar um programa CICS baseado em canal criando e preenchendo uma coleção de mensagens para o nó CICSRequest e como processar a coleção após a chamada. Para obter informações adicionais, consulte CICS Transaction Server para z/OS Channel Connectivity.

Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

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

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:30:44


Tópico de ConceitoTópico de Conceito | Versão 8.0.0.5 | bc16120_