Consejos, sugerencias y restricciones de la correlación

Los consejos y sugerencias de esta sección presuponen que ya ha creado un nodo de correlación dentro del flujo de mensajes, ha abierto el Editor de correlaciones de mensajes y ha seleccionado un mensaje de origen y uno de destino:

Establecer un campo de destino no de repetición igual a un campo de origen no de repetición

  1. Desde el panel origen del Editor de correlaciones de mensajes, arrastre el campo de origen y suéltelo en el campo de destino.

Establecer un campo de destino de repetición igual a un campo de origen de repetición (For)

  1. Desde el panel origen del Editor de correlaciones de mensajes, arrastre el campo de origen de repetición y suéltelo en el campo de destino de repetición.
  2. Desde la hoja de cálculo, pulse el botón derecho del ratón en el campo de destino de repetición y seleccione Para en el menú emergente. Aparece una entrada For en la hoja de cálculo.
  3. Pulse en la entrada For, arrastre el campo de origen de repetición y suéltelo en el panel de edición que hay justo encima de la hoja de cálculo.

Establecer una condición para mover un campo (If)

  1. Desde el panel origen del Editor de correlaciones de mensajes, arrastre el origen y suéltelo en el destino.
  2. Desde la hoja de cálculo, pulse el botón derecho del ratón en el campo de destino y seleccione Si en el menú emergente. Aparece una entrada If en la hoja de cálculo.
  3. Expanda la entrada If. Debajo aparece una condición, con fn:true() como el valor por omisión.
  4. Pulse en la condición fn:true(). La condición aparece en el panel de edición que hay justo encima de la hoja de cálculo.
  5. Suprima el valor fn:true().
  6. Arrastre los campos de origen al panel de edición situado justo encima de la hoja de cálculo.
  7. Edite los campos de origen para añadir las condiciones necesarias, por ejemplo: $source/Parent/SaleList/Invoice/Initial = 'K' es el equivalente de la operación ESQL IF InputRoot.Parent.SaleList.Invoice.Initial = 'K' THEN.

Establecer una condición que no sea igual a

Si desea que la condición coincida con otros valores que no sean =:
No igual a: !=
Mayor que >
Mayor que o igual a >=
Menor que <
Menor que o igual a <=

Ejemplo: $source/Parent/SaleList/Invoice/Surname != 'Shop'

Establecer una condición alternativa para mover un campo (Else)

  1. Desde el Editor de correlaciones de mensajes, realice los pasos indicados en Establecer una condición para mover un campo (If).
  2. Pulse el botón derecho del ratón en la entrada de condición y seleccione Si no en el menú emergente. Aparece una entrada Else debajo de la línea Else. Este debería ser el mismo campo de destino que contiene la If > Condition original.
  3. Establezca los campos de destino en los valores requeridos.

Establecer un campo de destino en un valor fijo

Si el campo de destino es visible en la hoja de cálculo:
  1. Desde la hoja de cálculo del Editor de correlaciones de mensajes, pulse en la línea que contiene el campo de destino y entre el valor en la segunda columna de la hoja de cálculo, o en el panel de edición que hay justo encima de la hoja de cálculo (puesto que ha pulsado el campo de destino en la hoja de cálculo, el panel de edición situado justo encima de la hoja de cálculo tiene el foco en ese campo de destino).
  2. Pulse Intro cuando haya entrado el valor de destino (los campos de serie de caracteres deben anidarse entre apóstrofos).
Si el campo de destino no es visible en la hoja de cálculo:
  1. Desde la hoja de cálculo del Editor de correlaciones de mensajes, pulse en el ascendiente más próximo del destino y seleccione Expandir. El ascendiente final es $target, que debería estar SIEMPRE presente. Esta acción debería llenar la hoja de cálculo con los hijos de dicho ascendiente.
  2. Repita la acción Expandir hasta que la hoja de cálculo se rellene con el campo de destino que desea establecer. Siga los pasos de más arriba para un campo de destino que es visible en la hoja de cálculo.

Aplicar una función ESQL a un campo de destino

  1. Desde el panel origen del Editor de correlaciones de mensajes, arrastre el origen y suéltelo en el destino.
  2. Desde la hoja de cálculo, pulse en el campo de destino. El valor del campo de destino aparece en el panel de edición que hay justo encima de la hoja de cálculo.
  3. Edite el valor del campo de destino para añadir el ESQL necesario (todas las sentencias ESQL deben llevar como prefijo el atributo esql).

Ejemplo: esql:upper($source/Parent/SaleList/Invoice/Surname)

Utilizar un operador aritmético

Suma +
Resta _
Multiplicación *
División div

Ejemplo: $source/Parent/SaleList/Invoice/Item/Price div 1.6

El origen es una lista y el destino es una lista del origen pero con una entrada nueva al principio de la lista

  1. Expanda el destino para visualizar el elemento para el que desea crear una primera instancia nueva. Este puede ser una estructura o un elemento simple.
  2. Pulse el botón derecho del ratón en este elemento y seleccione Si. Aparece una línea de condición inmediatamente debajo.
  3. Pulse el botón derecho del ratón en el elemento y seleccione Copiar. Vaya a la línea de condición y seleccione Pegar. Ahora debería tener dos entradas en la hoja de cálculo para el elemento.
  4. Establezca la primera de estas entradas en los valores que desee. Esta es la primera instancia. Pulse el botón derecho del ratón en la segunda entrada y seleccione Para. Aparece una línea for en la hoja de cálculo.
  5. Establezca la segunda entrada en el valor o valores correlacionados desde el origen.
  6. Establezca la entrada for en la condición de bucle.
  7. Pulse en for, luego arrastre el campo de origen que representa la condición de bucle al editor de expresiones situado justo encima de la hoja de cálculo.

Cambiar el analizador de ejecución de destino

Al crear por primera vez la correlación, debe designar un conjunto de mensajes para el mensaje de destino. El analizador asociado al mensaje de salida es el analizador de ejecución asociado al conjunto de mensajes. Por ejemplo, la primera vez que se crea un conjunto de mensajes, el analizador de ejecución por omisión es MRM. Esto significa que el nodo Mapping genera ESQL con el formato siguiente:
SET OutputRoot.MRM.Fielda...
Si cambia el analizador de ejecución a XML o XMLNSC, por ejemplo, el nodo Mapping genera ESQL con el formato siguiente:
SET OutputRoot.XMLNSC...
El analizador del mensaje de origen (de entrada) lo determina la cabecera MQRFH2 o el nodo Input. El nodo Mapping puede manejar todos los analizadores de la entrada. El nodo Mapping genera un mensaje de destino (de salida) con el analizador que coincide con el analizador de ejecución del conjunto de mensajes.
  1. Abra el archivo de conjunto de mensajes messageset.mset
  2. Cambie el analizador de ejecución por un valor de su elección y guarde el proyecto o proyectos de flujo de mensajes, haciendo referencia este conjunto de mensajes para fines de correlación.
  3. Despliegue el conjunto de mensajes si ha cambiado el analizador a MRM.
  4. Despliegue el flujo de mensajes que contiene las correlaciones. Si hace esto, debería probar su ESQL en el nodo Compute y en otros nodos para asegurarse de que siguen funcionando según lo esperado.

Asegurarse de que un elemento de elección se procese incondicionalmente

Si arrastra un elemento de elección (choice), se genera una línea If en la hoja de cálculo de correlación, y una línea de condición para cada posible elección. Cada condición tiene asociado el valor fn:false() por omisión (esto significa que esta elección no se procesará). Si desea que el elemento de elección se procese incondicionalmente, asegúrese de que la condición esté establecida en fn:true().

Alterar temporalmente el nombre de esquema de la base de datos

Puede cambiar el nombre de esquema de base de datos que se genera en el ESQL. Hágalo en el asistente Alterar temporalmente esquema RDB, en el diálogo Especificar esquema de ejecución. El valor por omisión es el nombre de esquema de las definiciones de base de datos importadas al kit de herramientas. Utilice este diálogo para cambiar el valor.

Restricciones de la correlación

A menos que se indique aquí explícitamente, puede conseguir la funcionalidad necesaria llamando a una función o procedimiento ESQL.
  • Los campos de contenido mixto no se pueden correlacionar.
  • No se pueden generar excepciones directamente en nodos de correlación.
  • Los elementos autodefinidos no se pueden manipular en los nodos de correlación (hay soporte limitado para comodines cuando el comodín representa mensajes incorporados).
  • El árbol Entorno no se puede manipular en el nodo de correlación.
  • No se pueden definir ni establecer variables de usuario.
  • Las expresiones CASE no se pueden emular, debe utilizar if/else.
  • Los árboles no se pueden copiar de la entrada en la salida para modificar elementos dentro del árbol copiado. Por ejemplo, el ESQL siguiente no se puede modelar en un nodo Mapping: SET OutputRoot.MQMD = InputRoot.MQMD; SET OutputRoot.MQMD.ReplyToQ = 'NEW.QUEUE'; Debe establecer cada campo de la estructura individualmente si tiene la intención de modificar uno o más campos hermano.
Conceptos relacionados
Visión general de la correlación de mensajes
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2005 Última actualización: 11/11/2005
ar25245_