Descripción


La tarea Correlator se encarga de relacionar varios mensajes de entrada unidos por un mismo criterio para pemitirles el paso.

Funcionamiento


La tarea guarda los mensajes que van llegando por sus slots de entrada hasta que completa un conjunto de mensajes relacionados por un criterio (uno por cada entrada). A continuación, coloca cada mensaje relacionado en cada salida siguiendo el orden de la entrada (si un mensaje llegó a la tarea por la entrada 0, saldrá por la salida 0).

El criterio de relación podemos indicarlo mediante la configuración de los campos de la propia tarea (criterio prioritario) o mediante la tarea Correlation Id Setter.

Parámetros

Criterio de relación


Expresión XPath que selecciona el nodo del mensaje que contiene el valor a usar como criterio de relación. Es decir, dos mensajes están relacionados si tienen el mismo valor en el nodo indicado en este campo.

U4aggJV-GiO7D3CKBn8B32wVL1cpyWtznA.pngUso habitual con puertos de solicitud: La tarea Correlator suele usarse mucho tras los puertos de tipo Solicitud. El motivo principal de esto es que en muchos casos se solicita a la aplicación externa un dato o una propiedad adicional que nos falta en el mensaje de origen, pero acto seguido necesitaremos actuar sobre la información del mensaje de origen y el nuevo dato obtenido. Como tras la ejecución del comando del puerto de solicitud el mensaje que recibimos suele ser completamente distinto al original y sin la información que necesitamos, es necesario previamente realizar una copia del mensaje original con una tarea Replicator. Luego, para poder saber que propiedad adicional va con cada mensaje original, necesitamos correlacionarlos. Si el puerto de solicitud no mantiene en el mensaje entrante ningún campo equivalente al mensaje original, no queda más remedio que almacenar la información de correlación en la cabecera del mensaje, que es lo que hace la tarea Correlation Id Setter. Por tanto es frecuente ver estructuras:
Correlation Id Setter + Replicator + Puerto de Solicitud + Correlator
como en el ejemplo de abajo.



Ejemplo de uso y configuración

En la muchos casos, la tarea Correlator no necesita ser configurada porque suele ir acompañada previamente de la tarea Correlation ID Setter, como en el siguiente ejemplo:


S8UtcTUIsTjX9DpDsUwe6883w17hcACjeg.png

El mensaje entrante que recibe la tarea en su slot inferior es un mensaje con la información de un producto procedente de una tienda online Prestashop. En el slot entrante superior, la tarea recibirá un pequeño mensaje que nos indica si dicho producto existe o ha sido borrado en un CRM Salesforce. Debemos ser capaces de correlacionar que mensajes de producto de Prestashop corresponde a qué mensaje con la información de borrado que nos devuelve Salesforce

Como se ha ubicado la tarea Correlation Id Setter justo antes del Replicator, todos los mensajes replicados tienen en su cabecera un identificador de correlación por pares. Por tanto no es necesario configurar nada en el Criterio de Relación de la tarea.

En caso de que sólo nos interesaran los productos existentes en tienda online y CRM, y pudiéramos prescindir de los que no estuvieran en Salesforce, podríamos correlacionar por un nodo común, por ejemplo la referencia de producto, que en caso del mensaje procedente de Prestashop estaría ubicado en el nodo "reference" y en de Salesforce en "productCode". Puedes configurarlos con un par de expresiones XPATH muy sencillas:

 


Criterio de relación (entrada 0)
//ProductSalesforceBean/productCode

  


klbsJsPWfdpQkJ-BgXQYY6PR9hr6saiywQ.png
Criterio de relación (entrada 1)
//ProductPrestashopBean/reference


 


U4aggJV-GiO7D3CKBn8B32wVL1cpyWtznA.pngEjemplo completo: Este ejemplo es un fragmento de una solución completa disponible en la sección de ejemplos de soluciones. En concreto se trata de la solución que Sincroniza productos de Prestashop a Salesforce. Te invitamos que visites el artículo que explica la solución entera para tener mayor información de contexto. 


Incoming message on SLOT  0 (Salesforce):



GqLb9OpYcXrDDFbJRl0dpfAbF4tYUEHf6A.png



Incoming message on SLOT 1 (Prestashop):

 

s-QKz5NFzLTotwdxyB4QLPej9PqXzyrmPQ.png