Acceso a mensajes intercalados en el dominio MRM

Si ha definido un mensaje de varias partes, tiene como mínimo un mensaje intercalado con otro. En el tipo complejo general que representa los mensajes externos, puede diseñar el mensaje interno de uno de los modos siguientes:
  • Un elemento (denominado E_outer1 en el ejemplo siguiente) con su propiedad Type establecida en un tipo complejo que se ha definido con su propiedad Composition establecida en Message
  • Un tipo complejo con su propiedad Composition establecida en Message (denominada t_Embedded en el ejemplo siguiente)
El ESQL que necesita escribir para manipular el mensaje interno varía según cuál de los modelos anteriores ha utilizado. Por ejemplo, presuponga que ha definido:
  • Un mensaje externo M_outer que tiene establecida su propiedad Type en t_Outer.
  • Un mensaje interno M_inner1 que tiene establecida su propiedad Type en t_Inner1
  • Un mensaje interno M_inner2 que tiene su propiedad Type establecida en t_Inner2
  • El tipo t_Outer que tiene un primer elemento hijo denominado E_outer1 y un segundo hijo definido como un tipo complejo denominado t_Embedded
  • El tipo t_Embedded que tiene su propiedad Composition establecida en Message
  • El tipo t_Inner1 que tiene su primer elemento hijo denominado E_inner11
  • El tipo t_Inner2 que tiene su primer elemento hijo denominado E_inner21
  • El tipo t_outer1 que tiene su propiedad Composition establecida en Message
  • El elemento E_outer1 que tiene su propiedad Type establecida en t_outer1
Si desea establecer el valor de E_inner11, codifique el ESQL siguiente:
SET OutputRoot.MRM.E_outer1.M_inner1.E_inner11 = 'FRED';
Si desea establecer el valor de E_inner21, codifique el ESQL siguiente:
SET OutputRoot.MRM.M_inner2.E_inner21 = 'FRED';

Si copia las cabeceras de mensaje del mensaje de entrada en el mensaje de salida y el tipo de mensaje de entrada contiene una vía de acceso, solo el nombre más externo de la vía de acceso se copia en el tipo del mensaje de salida.

Cuando configura un flujo de mensajes para manejar mensajes intercalados, puede especificar la vía de acceso de un tipo de mensaje en una cabecera MQRFH2 (si hay una presente en el mensaje de entrada) o en la propiedad Tipo de mensaje del nodo de entrada en lugar de un nombre (por ejemplo, para el mensaje diseñado anteriormente, la vía de acceso puede especificarse como M_Outer/M_Inner1/M_Inner2, en lugar de simplemente M_Outer).

Si ha especificado que el mensaje de entrada tiene un formato físico de CWF o XML, cualquier prefijo de tipo de mensaje se concatena delante del tipo de mensaje de MQRFH2 o del nodo de entrada, lo que proporciona una vía de acceso que se puede utilizar (para obtener más información consulte Mensajes de varias partes). El MRM utiliza el primer elemento de la vía de acceso como el tipo de mensaje más externo, a continuación progresa internamente cuando encuentra un tipo complejo que tiene la propiedad Composition establecida en Message.

Si ha especificado que el mensaje de entrada tenga un formato físico de TDS, se implementa un proceso diferente que utiliza las claves de mensajes. Este tema se describe en el apartado Formato de serie codificado/delimitado - mensajes de varias partes.

Para obtener más información acerca de las concatenaciones de vía de acceso, consulte Propiedades del conjunto de mensajes.

Conceptos relacionados
Flujos de mensajes
ESQL
Diseño de mensajes
Mensajes de varias partes
Formato de serie codificado/delimitado - mensajes de varias partes

Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Gestión de archivos ESQL
Desarrollo de modelos de mensajes

Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
ESQL
Sentencia SET
Propiedades del conjunto de mensajes