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

Convertendo NL EBCDIC em LF CR ASCII

Você pode alterar caracteres de nova linha (NL) em uma mensagem de texto para os pares de caracteres retorno de linha (CR) e feed de linha (LF). Este exemplo mostra uma maneira na qual é possível converter estes caracteres.

Essa conversão pode ser útil se as mensagens de uma plataforma EBCDIC (por exemplo, utilizando CCSID 1047) forem enviadas para uma plataforma ASCII (por exemplo, utilizando o CCSID 437). Podem surgir problemas porque o caractere NL EBCDIC hex '15' é convertido no caractere ASCII não definido hex '7F'. A página de códigos ASCII não possui um ponto de código correspondente para o caractere NL.

Neste exemplo, é criado um fluxo de mensagens que interpreta a mensagem de entrada como uma mensagem no domínio BLOB. Esta mensagem é passada para um nó ResetContentDescriptor para reconfigurar os dados para uma mensagem no domínio MRM. A mensagem é chamada de msg_nl (um conjunto de elementos de cadeia repetitivos delimitados por caracteres EBCDIC NL). Um nó Compute é então usado para criar uma saída com base em outra mensagem no domínio MRM chamada msg_crlf (um conjunto de elementos da cadeia de repetição delimitados por pares CR LF). O domínio de mensagem é então alterado novamente para BLOB em outro nó ResetContentDescriptor. Este fluxo de mensagens é mostrado no diagrama a seguir.

O diagrama exibe um fluxo de mensagens linear, que consiste nos seguintes nós: MQInput, com o terminal Out conectado a ResetContentDescriptor, com o terminal Out conectado a Compute, com o terminal Out conectado a ResetContentDescriptor1, com o terminal Out conectado a MQOutput. Nenhum outro terminal está conectado.

As seguintes instruções mostram como criar as mensagens e configurar o fluxo de mensagens.

  1. Crie os modelos de mensagem para as mensagens no domínio MRM:
    1. Crie um projeto de conjunto de mensagens chamado myProj.
    2. Crie um conjunto de mensagens chamado myMessageSet com um formato físico TDS (o nome padrão é Text1).
    3. Crie um elemento string1 do tipo xsd:string.
    4. Crie um tipo complexo chamado t_msg_nl e especifique as seguintes propriedades de tipo complexo:
      • Composição = Conjunto Ordenado
      • Validação de Conteúdo = Fechado
      • Separação do Elemento de Dados = Todos os Elementos Delimitados
      • Delimitador = <U+0085> (hex '0085' é a representação UTF-16 de um caractere NL)
      • Repetir = Sim
      • Mín Ocorrências = 1
      • Máx Ocorrências = 50 (supõe-se que o texto da mensagem consista em até 50 linhas)
    5. Inclua o Elemento string1 e configure a seguinte propriedade:
      • Delimitador do Elemento de Repetição = <U+0085>
    6. Crie uma Mensagem msg_nl e configure seu tipo complexo associado para t_msg_nl
    7. Crie um tipo complexo chamado t_msg_crlf e especifique as seguintes propriedades de tipo complexo:
      • Composição = Conjunto Ordenado
      • Validação de Conteúdo = Fechado
      • Separação do Elemento de Dados = Todos os Elementos Delimitados
      • Delimitador = <CR><LF> (<CR> e <LF> são os mnemônicos para os caracteres CR e LF)
      • Repetir = Sim
      • Mín Ocorrências = 1
      • Máx de Ocorrências = 50
    8. Inclua o Elemento string1 e configure a seguinte propriedade:
      • Delimitador do Elemento de Repetição = <CR><LF>
    9. Crie uma Mensagem msg_crlf e configure o tipo complexo para t_msg_crlf.
  2. Configure o fluxo de mensagens mostrado na figura anterior:
    1. Inicie com o nó MQInput:
      • Defina Domínio de Mensagem = BLOB
      • Configura Nome da Fila = <O nome da sua fila de mensagens de entrada>
    2. Inclua o nó ResetContentDescriptor, conectado ao terminal Out do nó MQInput:
      • Defina o Domínio de Mensagem = MRM
      • Selecione Redefinir Domínio de Mensagem
      • Configure Conjunto de Mensagens = <Seu ID do Conjunto de Mensagens> (este campo tem um máximo de 13 caracteres)
      • Selecione Redefinir Conjunto de Mensagens
      • Defina Tipo de Mensagem = msg_nl
      • Selecione Redefinir Tipo de Mensagem
      • Configure Formato da Mensagem = Text1
      • Selecione Redefinir Formato de Mensagem
    3. Inclua o nó Compute, conectado ao terminal Out do nó ResetContentDescriptor:
      • Digite um nome para o Módulo ESQL desse nó ou aceite o padrão (<nome do fluxo de mensagens>_Compute).
      • Clique com o botão direito do mouse no nó Compute e selecione Abrir ESQL. Inclua o seguinte código de ESQL no módulo:
        -- Declare local working variables
        DECLARE I INTEGER 1;
        DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
        
        -- Loop to copy all message headers from input to output message
        WHILE I < J DO
         	SET OutputRoot.*[I] = InputRoot.*[I];
         	SET I=I+1;
        END WHILE; 
        
        -- Set new output message type which uses CRLF delimiter
        SET OutputRoot.Properties.MessageType = 't_msg_crlf';
        
        -- Loop to copy each instance of string1 child within message body
        SET I = 1;
        SET J = CARDINALITY("InputBody"."string1"[]);
        WHILE I <= J DO
          SET "OutputRoot"."MRM"."string1"[I] = "InputBody"."string1"[I];
          SET I=I+1;
        END WHILE;

        O uso de uma variável, J, inicializada para o valor da cardinalidade dos cabeçalhos existentes na mensagem, é mais eficiente que o cálculo da cardinalidade em cada iteração do loop, que ocorre se você codificar a seguinte instrução WHILE:

        WHILE I < CARDINALITY(InputRoot.*[]) DO
    4. Inclua o nó ResetContentDescriptor1, conectado ao terminal Out do nó Compute:
      • Defina Domínio de Mensagem = BLOB
      • Selecione Reconfigurar o Domínio de Mensagem.
    5. Finalmente, inclua o nó MQOutput, conectado ao terminal Out do nó ResetContentDescriptor1. Configure suas propriedades para direcionar a mensagem de saída para a fila ou filas requeridas.
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:28:21


Tópico de TarefaTópico de Tarefa | Versão 8.0.0.5 | ac11630_