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

Criando Referências de Campos Dinâmicos

Você pode utilizar uma variável de tipo REFERENCE como uma referência dinâmica para navegar por uma árvore de mensagens. Isso atua de maneira semelhante a um cursor de mensagem ou ponteiro de variável.

Geralmente, é mais simples e mais eficiente utilizar variáveis de preferência em vez de índices matriciais ao acessar estruturas repetitivas. Variáveis de referência são aceitas em qualquer lugar em que as referências de campos são aceitas e são fornecidas com um conjunto de instruções e funções para permitir a manipulação detalhada de árvores de mensagens.

Você deve declarar uma referência dinâmica antes de utilizá-la. Uma referência dinâmica é declarada e inicializada e uma única instrução.

Todos os exemplos neste tópico usam a Mensagem de Exemplo como sua mensagem de entrada. O exemplo a seguir mostra como criar e utilizar uma referência.

-- Declare the dynamic reference
DECLARE myref REFERENCE TO OutputRoot.XMLNS.Invoice.Purchases.Item[1];

--  Continue processing for each item in the array
WHILE LASTMOVE(myref)=TRUE 
DO
-- Add 1 to each item in the array
   SET myref = myref + 1;
-- Move the dynamic reference to the next item in the array
   MOVE myref NEXTSIBLING;
END WHILE;
O exemplo funcionará se a árvore de mensagens tiver sido criada com campos com tipo, baseados em um modelo de mensagem para a Mensagem de Exemplo. Se este não for o caso, será possível modificar a ESQL para funcionar sem um modelo, por exemplo:
SET myref = CAST (myref AS INTEGER) + 1; 	

Esse exemplo declara uma referência dinâmica, myref, que aponta para o primeiro item na matriz em Purchases. O valor no primeiro item é incrementado em um e o ponteiro (referência dinâmica) é movido para o próximo item. Mais uma vez o valor do item é incrementado em um. Esse processo continua até o ponteiro mover para fora do escopo da matriz da mensagem (todos os itens dessa matriz foram processados) e a função LASTMOVE retornar FALSE.

Os exemplos a seguir mostram exemplos adicionais.

DECLARE ref1 REFERENCE TO InputBody.Invoice.Purchases.Item[1];

DECLARE ref2 REFERENCE TO 
	InputBody.Invoice.Purchases.NonExistentField;

DECLARE scalar1 CHARACTER;
DECLARE ref3 REFERENCE TO scalar1; 

No segundo exemplo, ref2 está definido para apontar para InputBody, porque o campo especificado não existe.

Com exceção da instrução MOVE, que altera a posição da referência dinâmica, você pode utilizar uma referência dinâmica em qualquer local em que utiliza uma referência estática. O valor da referência dinâmica em qualquer expressão ou instrução é o valor do campo ou variável para o qual ela aponta. Por exemplo, utilizando a mensagem em Mensagem de Exemplo, o valor de Invoice.Customer.FirstName será Andrew. Se a referência dinâmica myref for configurada para apontar para o campo Customer conforme a seguir:

DECLARE myref REFERENCE TO Invoice.Customer;

será possível estender essa referência dinâmica para endereçar filhos desse campo:

SET myref.Billing.Address[1] = 'Oaklands';

Isso altera o endereço no exemplo para Oaklands Hursley Village Hampshire SO213JR.

A posição de uma referência dinâmica permanece fixa mesmo se uma árvore for modificada. Para ilustrar esse ponto, as etapas a seguir utilizam a mensagem em Mensagem de Exemplo como mensagem de entrada e criam uma versão modificada dessa mensagem como uma mensagem de saída:

  1. Copie a mensagem de entrada na mensagem de saída.
  2. Para modificar a mensagem de saída, primeiro declare uma referência dinâmica ref1 que aponte para o primeiro item, The XML Companion.
    DECLARE
    ref1 REFERENCE TO 
    	OutputRoot.XMLNS.Invoice.Purchases.Item[1];
    A referência dinâmica agora é equivalente à referência estática OutputRoot.XMLNS.Invoice.Purchases.Item[1].
  3. Utilize uma instrução criar para inserir um novo primeiro item para essa compra.
    CREATE PREVIOUSSIBLING OF ref1 VALUES 'Item'; 
    A referência dinâmica agora é equivalente à referência estática OutputRoot.XMLNS.Invoice.Purchases.Item[2].
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:29:52


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