Explicación detallada del ejemplo de Almacenamiento de datos de
fidelidad de correlación de datos gráficos
Una explicación sobre cómo funciona el ejemplo, centrándose
principalmente en la correlación de datos gráficos.
El mensaje XML de entrada, LoyaltySalesData, contiene un número
de cliente exclusivo.
Se utiliza como clave primaria en la tabla LOYALTY, creando una
selección en la base de datos, utilizando una transformación
Select.
El resultado de esta transformación Select se consulta mediante una expresión XPath,
fn:count().
Cuenta las filas devueltas de la selección. Si no se encuentran en la tabla
LOYALTY, la transformación count devuelve 0, y continúa a través de la
transformación Else anidada.
En este caso, un nuevo registro se inserta en la base de datos.
La transformación Insert se incluye en la transformación Else anidada. Para obtener
más información sobre la inserción de datos en una base de datos, consulte
Inserción de
datos en una tabla en el Centro de información de IBM Integration Bus.
En la transformación anidada Insert, debe crear una suma total
de todos los elementos, desde el elemento Item, dentro de cada
categoría antes de insertarla en la base de datos. Esto se implementa
utilizando una transformación Sum.
Debe proporcionar una expresión para seleccionar los elementos
que desea sumar utilizando Propiedades
generales de la transformación.
Para proporcionar los
parámetros para la suma, puede utilizar corchetes para implementar un
filtro en $Items, porque es una matriz.
En este ejemplo, todos los productos de confitería tienen un código de
artículo en el rango 1-10, por lo que esta condición se utiliza como
filtro. Para obtener ayuda al rellenar esta información, puede
utilizar la Asistencia de contenido (Control+Espacio).
La transformación Return da la salida XML como un mensaje
LoyaltySalesDataOut. Este mensaje se coloca en la cola de salida
LOYALTYDATA.OUT del flujo de mensajes para analizar
inserciones completadas satisfactoriamente en la base de datos.
El
mensaje contiene los mismos datos que el mensaje de entrada, sino que
también tiene un elemento DatabaseReturn y un elemento Action.
El
elemento Action contiene un mensaje simple que indica que la
inserción se ha realizado satisfactoriamente.
Los elementos están
correlacionados utilizando una transformación For Each porque el
elemento es un elemento de repetición.
Tiene la opción de manejo de errores al insertar y actualizar una
base de datos, utilizando una transformación Failure. Para añadir una
transformación Failure a la inserción o actualización, pulse con el
botón derecho en la
transformación y seleccione Base de datos > Manejar error. A
continuación, puede direccionar los mensajes de error SQL a un
mensaje de salida en esta transformación.
La transformación Failure utiliza el mensaje
de salida LoyaltySalesDataOut. Cuando falla una inserción, el
código SQL y el estado de anomalía se correlacionan con el elemento
DatabaseReturn. Todos los demás campos se correlacionan como en la
transformación Insert.
Para obtener más información sobre las transformaciones Failure,
consulte
Anomalía
en el Centro de información de IBM Integration Bus.
Si la sentencia Select busca un registro coincidente,
fn:count() devolverá el número de filas
y la transformación If continúa.
Si este cliente existe en la base de
datos, el recuento del conjunto de resultados es 1 y el registro
debe actualizarse con los nuevos datos en el mensaje.
No puede
seleccionar más de un registro, porque el número de cliente es una
clave primaria.
La transformación Update se incluye en la transformación If anidada. Para obtener más
información sobre la actualización de datos en una base de datos, consulte
Actualización de
datos en una tabla en el Centro de información de IBM Integration
Bus.
En la transformación Update, debe crear una suma total de
todos los elementos dentro de cada categoría. Esto incluye el valor
actual en la base de datos y los elementos del mensaje de entrada.
Debe proporcionar la transformación Sum con el subconjunto de los
elementos para una categoría y el campo de base de datos existente en
Select utilizando una expresión en
Propiedades generales.
La transformación Update Failure se implementa de la misma manera
que la transformación Insert.