Cuando se convierte una correlación de mensajes de una versión anterior de WebSphere Message Broker en una correlación de datos gráfica, puede ser necesario realizar primero tareas adicionales para poder utilizar la correlación de datos gráfica en una solución de mensajería.
El recurso Editor de correlaciones de datos gráficas tiene un motor de ejecución dedicado, mientras que la correlación de mensajes se basa en código ESQL.
Al prepararse para convertir una correlación de mensajes en una correlación de datos gráfica, se deben tener en cuenta los siguientes puntos:
El tiempo de ejecución proporciona un motor de ejecución basado en Java dedicado para correlaciones de datos gráficas. Como resultado, la ejecución de correlaciones se beneficia del soporte completo para la optimización de JIT de Java y XPath 2.0, y ofrece una mayor fiabilidad.
Una subcorrelación de datos gráficos sólo puede invocarse desde una correlación de datos gráfica de nivel superior en un nodo Mapping.
Aunque se puede utilizar una sentencia 'CALL' de ESQL en un nodo ESQL Compute para invocar una correlación de subcorrelación de mensajes, esta función no está soportada para correlaciones de datos gráficas. Si convierte una correlación de mensajes que se utiliza de este modo, la sentencia 'CALL' de SQL falla e informa de que no se puede resolver una función. La solución consiste en sustituir el nodo Compute por un nuevo nodo Mapping que tiene una nueva correlación de datos gráfica que puede llamar a la subcorrelación convertida.
En ESQL, se define un valor NULL especial y es diferente de vacío. Cuando se asigna NULL a un elemento con nombre o se establece el elemento desde el valor NULL devuelto de una función ESQL llamada, se suprime el elemento del árbol.
En una correlación de datos gráficos, ESQL NULL produce un elemento vacío o un elemento vacío con el atributo xsi:nil establecido cuando el elemento se define como que permite nulos en el modelo. Por lo tanto, en algunos casos la salida de la correlación de datos gráficos podría incluir elementos vacíos inesperados que pueden causar problemas de proceso, incluyendo violaciones de validación de esquemas XML. Estos problemas normalmente se producen cuando se llama a una función definida por el usuario ESQL que devuelve ESQL NULL en algunas condiciones. Para evitar estos problemas, añada una condición a la transformación personalizada para impedir que se invoque si devuelve NULL.
Se convierte la forma simple TRIM-BOTH ( Source ).
Esta sección describe cómo implementar algunas tareas de transformación que el editor de correlaciones de mensajes anterior implementaba con distintas construcciones. Esta lista no es exhaustiva, pero puede servir de ayuda al considerar los conceptos y el desarrollo de correlaciones de datos gráficas.
Puede utilizar la transformación Asignar para establecer los valores literales en elementos de salida. La transformación Asignar utiliza una representación de serie, que se asigna al elemento de salida correspondiente y, por lo tanto, debe formatearse según su tipo. El valor de la propiedad no es necesario que esté entre comillas, ya que las comillas se pasarían como parte del valor de serie. Para proporcionar un valor con tipo explícitamente, utilice la transformación Conversión xs:<tipo> sin ninguna conexión de entrada.
Puede crear expresiones en el editor de correlaciones de mensajes en que se implicaba una conversión de tipo y se utilizaba la representación de valor de serie subyacente. El Editor de correlaciones de datos gráficas utiliza la sintaxis de expresión XPath y aplica escritura estricta. Por ejemplo, al probar un elemento de tipo booleano para el valor literal de serie “true” se produciría una excepción de tipo.
Las correlaciones de mensajes proporcionan funciones, similares a las funciones XPath, que se implementan en el tiempo de ejecución mediante funciones ESQL equivalentes. Algunas de estas funciones ESQL tienen una escritura de valor más flexible que en la definición en la especificación XPath de la función. El correlacionador de datos gráficos proporciona funciones XPath conformes. Como resultado, una correlación de datos gráfica creada desde una correlación de mensajes convertida podría fallar en el tiempo de ejecución debido a valores no válidos o a problemas de conversión de tipo. En concreto, las funciones ESQL equivalentes podrían proporcionar un valor predeterminado cuando el valor de parámetro estaba vacío. Para resolver estos problemas, añada condiciones para evitar que se pasen valores no válidos para los parámetros de función Xpath a la función.
Las correlaciones de mensajes no requieren que el usuario sea explícito al acceder a valores de texto de contenido mixto desde un elemento de tipo complejo en una expresión de condición. El correlacionador de datos gráficos se basa en la sintaxis XPath estándar y requiere el uso explícito de "/texto()" para indicar que debe utilizarse el valor de texto de contenido mixto. Como resultado, una correlación de mensajes convertida con una expresión condicional que hacía referencia a valores de texto de contenido mixto puede fallar hasta que se amplía la expresión de vía de acceso para añadir el "/texto()" que falta.
El editor de correlaciones de mensajes no ha validado correctamente la escritura de entradas de subcorrelación. Los usuarios podrían editar el valor de vía de acceso de elemento normal y en lugar de él proporcionar un valor literal sin tipo. La validación del correlacionador de datos gráficos requiere que todas las entradas de subcorrelación estén conectadas a un elemento de entrada escrito adecuadamente.
Algunas transformaciones requieren el uso del valor de contador "Para cada índice". La correlación de mensajes de la Versión 6.1 y la versión 7.0 proporcionaba la función msgmap:occurrence para obtener el recuento de bucles actual. El correlacionador de datos gráficos proporciona una variable de contador Para bucle que se puede utilizar para proporciona una función equivalente. El nombre de esta variable tiene con el formato fijo $<Para cada nombre de elemento de entrada primario>-índice se puede obtener utilizando asistencia de contenido Ctrl-espacio en la "transformación ForEach" correspondiente en el panel Expresión Filtrar propiedades o en la asistencia de contenido en cualquier transformación anidada.