Obtenga información sobre cómo migrar correlaciones de mensajes de Versión 5.0.
El modelo de programación para las correlaciones de mensaje es diferente entre la Versión 5.0 (donde el formato de archivo es .mfmap) y la Versión 6.0 (donde el formato es .msgmap). Las correlaciones de mensajes de la Versión 5.0 tienen un modelo de programación de procedimiento, que es esencialmente un ESQL alternativo, en el que usted describe todos los pasos necesarios para realizar una transformación. La Versión 6.0 utiliza un modelo de programación declarativo, en el que usted describe el resultado de la transformación, y las herramientas determinan cómo conseguir dicho resultado.
La mayoría de los errores de migración son debidos a correlaciones de mensajes que contienen demasiada información sobre los pasos que realizan la transformación, e información insuficiente sobre el resultado necesario. Para estas correlaciones de mensajes, la migración se habilita cambiando el archivo .mfmap para que las secciones "how to" específicas se separen en una función o un procedimiento ESQL al que la correlación de mensajes pueda llamar. El archivo .mfmap llama a la función ESQL en lugar de contenerla como una expresión. Entonces el mandato mqsimigratemfmaps migra el archivo .mfmap, pero llama a la función ESQL en lugar de anotar un error de migración.
src_msg.e[1] + src_msg.e[2]calcule el resultado en una función ESQL como:
CREATE FUNCTION addOneAndTwo(IN src_msg) BEGIN RETURN src_msg.e[1] + src_msg.e[2]; END;En el archivo .msgmap, llame a la función addOneAndTwo de ESQL mediante el elemento padre src_msg como parámetro.
src_msg.*o
src_msg.*[]puede procesarse utilizando una función que utiliza el padre del campo de repetición:
CREATE FUNCTION processAny(IN src_msg) BEGIN DECLARE nodeRef REFERENCE TO src_msg.e.*; DECLARE result <TipoDatos> <ValorInicial>; WHILE LASTMOVE nodeRef DO --la expresión va aquí SET result = result; END WHILE; RETURN RESULT; END;En el archivo .msgmap, llame a la función addOneAndTwo de ESQL mediante el elemento padre src_msg como parámetro.
src_msg.{'a' || 'b'}pueden procesarse mediante funciones ESQL que procesan el padre del campo de repetición:
CREATE FUNCTION processDynamicName(IN src_msg) BEGIN RETURN src_msg.{'a' || 'b'}; END;En el archivo .msgmap, llame a la función processDynamicName de ESQL mediante el elemento padre src_msg como parámetro.
SELECT MAX("#T".FIRSTNAME) FROM Database.CUSTOMER AS "#T" WHERE "#T".CUSTOMERID = custIdpueden procesarse mediante funciones ESQL que procesan el padre del campo de repetición:
CREATE FUNCTION processMAX(IN custId) BEGIN RETURN SELECT MAX("#T".FIRSTNAME) FROM Database.CUSTOMER AS "#T" WHERE "#T".CUSTOMERID = custId END;En el archivo .msgmap, llame a la función processMAX de ESQL mediante el elemento custId como parámetro.
e || "#I"deben reescribirse por completo en ESQL. Por definición, debe haber un elemento padre de repetición complejo, y esto no está soportado por las funciones ESQL.
src_msg.e[src_msg.a]se deben reescribir utilizando filas if, funciones msgmap:occurrence() y funciones ESQL:
for src_msg.e if condition msgmap:occurrence(src_msg/e) = src_msg/a
src_msg.e["#I" +5] src_msg.e[< 3]el archivo .msgmap entero se debe volver a escribir en ESQL, porque los archivos .msgmap no soportan el acceso indexado a los campos de repetición.
src_msg.e IN (1, 2, 3)se deben volver a escribir en ESQL, porque los archivos .msgmap no soportan expresiones ROW de ESQL.
Para la Versión 6.0, debe definir estructuras de esquema reutilizables como elementos y tipos globales. Si tiene subcorrelaciones de la Versión 5.0 que utilizan elementos locales, debe cambiar el esquema para añadir definiciones de elementos globales para los elementos locales y, a continuación, utilizar el nuevo esquema después de la migración. Si los nuevos elementos globales tienen el mismo nombre y tipo que los elementos locales, no es necesario cambiar las subcorrelaciones de la Versión 5.0.
Un elemento local de una subcorrelación de la Versión 5.0 se debe calificar con un espacio de nombres para asegurar que la migración se realice satisfactoriamente a la Versión 6.0, porque el elemento global que lo sustituye después de la migración debe estar calificado por el espacio de nombres. Si la subcorrelación contiene elementos locales, debe volver a crear la subcorrelación y volver a crear la llamada a la subcorrelación desde la correlación de mensajes principal.
Versión | Característica soportada |
---|---|
Versión 5.0 | elementos globales y atributos globales como origen de correlación |
elementos globales y atributos globales como destino de correlación | |
elementos locales y atributos locales como origen de correlación | |
elementos locales y atributos locales como destino de correlación | |
Versión 6.0 | elementos globales, atributos globales y tipos globales como origen de correlación |
elementos globales y atributos globales como destino de correlación |