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

Creación de referencias de campo dinámicas

Puede utilizar una variable de tipo REFERENCE como una referencia dinámica para navegar por un árbol de mensaje. Esto actúa de forma similar a un cursor de mensaje o un puntero de variable.

Generalmente es más sencillo y eficaz utilizar variables de referencia antes que índices de matriz para acceder a estructuras que se repiten. Las variables de referencia se aceptan en cualquier lugar donde se acepten referencias de ese campo y vienen con un conjunto de sentencias y funciones para permitir la manipulación detallada de árboles de mensajes.

Debe declarar una referencia dinámica antes de poder utilizarla. Una referencia dinámica se declara e inicializa en una sola sentencia.

Todos los ejemplos de este tema utilizan el Mensaje de ejemplo como mensaje de entrada. El ejemplo siguiente muestra cómo crear y utilizar una referencia.

-- Declarar la referencia dinámica
DECLARE myref REFERENCE TO OutputRoot.XMLNS.Invoice.Purchases.Item[1];

--  Continuar el proceso para cada elemento de la matriz
WHILE LASTMOVE(myref)=TRUE 
DO
-- Añadir 1 a cada elemento de la matriz
   SET myref = myref + 1;
-- Mover la referencia dinámica al siguiente elemento de la matriz
   MOVE myref NEXTSIBLING;
END WHILE;
El ejemplo funciona si el árbol de mensajes se ha creado con campos escritos, basándose en un modelo de mensaje para el Mensaje de ejemplo. Si no es así, puede modificar el ESQL para trabajar sin un modelo, por ejemplo:
SET myref = CAST (myref AS INTEGER) + 1; 	

Este ejemplo declara una referencia dinámica, myref, que apunta al primer elemento de la matriz contenido en Purchases. El valor del primer elemento se aumenta en uno y el puntero (la referencia dinámica) se traslada al elemento siguiente. Una vez más el valor de elemento se aumenta en uno. Este proceso continúa hasta que el puntero sale del ámbito de la matriz de mensaje (todos los elementos de esta matriz se han procesado) y la función LASTMOVE devuelve FALSE.

Los ejemplos siguientes muestran ejemplos adicionales:

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; 

En el segundo ejemplo, ref2 se establece de modo que apunte a InputBody debido a que el campo especificado no existe.

Con la excepción de la sentencia MOVE que cambia la posición de la referencia dinámica, puede utilizar una referencia dinámica en cualquier lugar que pueda utilizar una referencia estática. El valor de la referencia dinámica en cualquier expresión o sentencia es el valor del campo o variable al que apunta actualmente. Por ejemplo, al utilizar el mensaje en Mensaje de ejemplo, el valor de Invoice.Customer.FirstName es Andrew. Si la referencia dinámica myref se establece de modo que apunte al campo Customer, como se indica a continuación:

DECLARE myref REFERENCE TO Invoice.Customer;

puede ampliar esta referencia dinámica para tratar los hijos de ese campo:

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

Esto modifica la dirección del ejemplo a Oaklands Hursley Village Hampshire SO213JR.

La posición de una referencia dinámica permanece fija incluso si se modifica un árbol. Para ilustrar este punto, los pasos que siguen utilizan el mensaje en Mensaje de ejemplo como su mensaje de entrada y crean una versión modificada de este mensaje como un mensaje de salida:

  1. Copie el mensaje de entrada en el mensaje de salida.
  2. Para modificar el mensaje de salida, en primer lugar declare una referencia dinámica ref1 que apunte al primer elemento, el compañero XML.
    DECLARE ref1 REFERENCE TO 
    	OutputRoot.XMLNS.Invoice.Purchases.Item[1];
    La referencia dinámica es ahora equivalente a la referencia estática OutputRoot.XMLNS.Invoice.Purchases.Item[1].
  3. Utilice una sentencia CREATE para insertar un primer elemento nuevo para esta compra.
    CREATE PREVIOUSSIBLING OF ref1 VALUES 'Item'; 
    La referencia dinámica es ahora equivalente a la referencia estática OutputRoot.XMLNS.Invoice.Purchases.Item[2].
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 16:59:51


Tema de tareaTema de tarea | Versión 8.0.0.5 | ak04864_