Validar mensajes

Antes de empezar:

Consulte los temas de concepto sobre nodos de flujos de mensajes y Analizador y dominio MRM.

El intermediario proporciona validación basándose en los diccionarios de mensajes para los mensajes predefinidos. Por tanto, la validación sólo se aplica a los mensajes que ha modelado y definido en el dominio MRM.

El intermediario no proporciona ninguna validación para los mensajes autodefinidos. No puede validar mensajes directamente en una DTD XML o un Esquema XML. En lugar de ello, deberá crear el modelo equivalente en el dominio MRM importando la DTD XML o el Esquema XML utilizando el Kit de herramientas de Message Brokers

Los flujos de mensajes están diseñados para transformar y direccionar los mensajes que cumplen ciertas normas. Por omisión, el analizador MRM realiza alguna comprobación de validez en un mensaje, pero sólo para asegurar la integridad de la operación de análisis. Sin embargo, puede validar un mensaje de forma más rigurosa contra el modelo de mensaje contenido en el diccionario de mensajes, especificando opciones de validación en ciertos nodos en el flujo de mensajes.

Puede utilizar las opciones de validación para validar los siguientes mensajes:

Estas opciones de validación pueden garantizar la validez de los datos que entran y salen del flujo de mensajes. Las opciones le proporcionan cierto control sobre la validación que se realiza para:

También puede especificar qué acción se debe realizar cuando falla la validación.

La validación de un mensaje comporta navegar por un árbol de mensaje y comprobar su validez. Es una ampliación de la creación de un árbol cuando se analiza el mensaje, y una ampliación de la creación de corriente de bits cuando se escribe el mensaje de salida.

Las opciones de validación están disponibles en los nodos siguientes:

Tipo de nodo Nodos con opciones de validación
Nodo de entrada MQInput, SCADAInput, HTTPInput, JMSInput, TimeoutNotification
Nodo de salida MQOutput, MQReply, SCADAOutput, HTTPReply, JMSOutput
Otros nodos Compute, Mapping, JavaCompute, Validate, ResetContentDescriptor, MQGet, HTTPRequest,

También se pueden especificar opciones de validación en la sentencia ESQL CREATE y la función ASBITSTREAM.

Par validar mensajes de entrada recibidos en un nodo de entrada, puede especificar propiedades de validación en el nodo de entrada. Entonces el mensaje de entrada se valida mientras se analiza la corriente de bits de mensaje para formar el árbol de mensaje.

También puede utilizar la propiedad de temporización de análisis del nodo de entrada para controlar si se debe analizar y validar el mensaje entero en este momento o si sólo se deben analizar y validar campos individuales del mensaje cuando se haga referencia a ellos.

Para validar los mensajes de salida creados por un nodo Compute, un nodo Mapping o un nodo JavaCompute, especifique propiedades de validación en el propio nodo o especifique propiedades de validación en el nodo de salida que envía el mensaje. La validación tiene lugar cuando el nodo de salida crea la corriente de bits de mensaje desde el árbol de mensaje.

De forma alternativa, puede utilizar un nodo Validate para validar un árbol de mensaje en un lugar determinado del flujo de mensajes o puede utilizar la función ESQL ASBITSTREAM en un nodo Compute, Filter o Database.

Por omisión se produce una cantidad limitada de validación si no modifica los valores de validación. En este nivel por omisión, se genera una excepción si es cierta una de las condiciones siguientes:
  • Hay discrepancia de datos, por ejemplo, el analizador no puede interpretar los datos proporcionados por el tipo de campo especificado
  • El orden de elementos del mensaje de salida no coincide con el orden del árbol lógico de mensaje (sólo modelos de longitud fija CWF y TDS)
Adicionalmente, el analizador MRM realizará por omisión una acción de remedio limitada bajo las circunstancias siguientes:
  1. Se descartan los campos externos en la salida para los formatos fijos (sólo modelos de longitud fija CWF y TDS)
  2. Si falta contenido necesario, se proporcionan valores por omisión, si están disponibles, en la salida para formatos fijos (sólo modelos de longitud fija CWF y TDS)
  3. Si el tipo de datos de un elemento del árbol no coincide con el especificado en el diccionario, el tipo de datos se convierte en salida para que, si es posible, coincida con la definición de diccionario para todos los formatos.

Sin embargo, si utiliza opciones de validación puede solicitar la validación más completa de los mensajes. Por ejemplo, quizá desee validar una o más de las siguientes condiciones y generar una excepción o anotar los errores:

El ejemplo de ilustra algunas de estas opciones de validación.

Cuando se utilizan opciones de validación es importante conocer el siguiente comportamiento:
  • La propiedad de temporización de análisis, que controla si tiene lugar el análisis 'a petición' (a veces conocido como análisis parcial), produce un efecto en la temporización de la validación de los mensajes de entrada, incluidas las cabeceras de mensaje.

    Si desea ver más información sobre la temporización de análisis, consulte Propiedades de validación para mensajes del dominio MRM.

  • Si se pasa un árbol de mensaje a un nodo de salida, por omisión el nodo de salida hereda las opciones de validación en vigor para el árbol de mensaje. Puede alterar temporalmente estas opciones especificando un nuevo conjunto de opciones de validación en el nodo de salida.
  • Si se pasa un árbol de mensaje como entrada a un nodo Compute, Mapping o JavaCompute, cualquier árbol de mensaje de salida nuevo creado por el nodo Compute, Mapping o JavaCompute tendrá las opciones de validación especificadas por el propio nodo (incluso si se copia el mensaje entero). Puede alterar temporalmente este comportamiento y especificar que los mensajes creados por el nodo hereden las opciones de validación del árbol de mensaje de entrada.
  • Cuando se graba la corriente de bits y se aplican las opciones de validación, se valida el mensaje entero. Es posible que el árbol de mensaje contenga un tipo sin resolver (por ejemplo, si un nodo Compute ha copiado un tipo sin resolver de un mensaje de entrada en un mensaje de salida, sin resolverlo). Si se encuentra un tipo así, se produce un error de validación porque no es posible validar el tipo. Para evitar esto, asegúrese de que se resuelvan todos los tipos sin resolver antes de ser copiados a los mensajes de salida.

Para obtener información sobre cómo se puede controlar la validación utilizando propiedades diferentes, consulte el apartado Propiedades de validación para mensajes del dominio MRM.

Conceptos relacionados
Mensajes predefinidos y autodefinidos
Visión general de flujos de mensajes
Tareas relacionadas
Diseñar un flujo de mensajes
Crear un flujo de mensajes
Definir el contenido del flujo de mensajes
Referencia relacionada
Nodos incorporados
Propiedades de validación para mensajes del dominio MRM
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac00400_