Descripción


La tarea Distributor encauza y dirige los mensajes que le lleguen a su entrada a cada salida determinada que cumpla con su condición.

Funcionamiento


La tarea distribuye los mensajes de entrada hacia una o más salidas en función de una condición asignada a cada una de ellas, es decir, si cumple la condición, la tarea colocará el mensaje en esa salida. El usuario puede especificar el número de salidas y las condiciones.

Cada slot de salida tendrá su propia condición asignada, de tal manera que si el mensaje cumple con más de una condición, se replicará en más de una salida. En caso de que el mensaje no cumpla con ninguna condición se descartará por completo.


y5Bw1U3u1o-S0IvDp5H6vkQZYCQEiK4ecQ.pngDistributor = Replicator x Filters: A efectos prácticos, la tarea Distributor de N salidas sería el equivalente a una tarea Replicator de N salidas en la que se coloca una tarea Filter en cada una de ellas, cuya condición será el criterio establecido para cada una de las salidas del Distributor. Evidentemente, el uso de Distributor es más eficiente, por lo que si en tu modelo encuentras una estructura Replicator + N x Filters plantéate sustituirla por un Distributor de N salidas.


 

Parámetros

Condición de paso (por cada salida)

Expresión XPath condicional que determina si el mensaje se enviará por esta salida. Si se cumple la condición, la tarea colocará el mensaje en esta salida

Número de salidas

Número de slots de salida que tendrá la tarea, cada una de ellas con una condición de paso especificada.


Ejemplo de uso y configuración


La configuración de una tarea Distributor es relativamente sencilla: tan sólo tienes que indicar el número de caminos de salida que tendrá la tarea (seleccionando en un selector) y posteriormente configurar una expresión XPATH por cada condición.

En el ejemplo vemos un par de tareas Distributor anidadas. El mensaje entrante procedente de la tarea Aggregator contiene en su interior información acerca de un mismo producto procedente de dos sistemas distintos, una tienda online Prestashop y un CRM Salesforce. Puedes ver el esquema del mensaje a la derecha.



G-72Gl-8kJg8RTofpssEjTKxS1X4yVo9qQ.png


El objetivo de los Distributor es encauzar los mensajes de productos en función de la operación de salida que se quiera realizar:

  • Si el producto ha sido eliminado de Prestashop, se encauzará por la rama superior para ser eliminado también en Salesforce
  • Si el producto no ha sido eliminado:
    • Si se ha creado nuevo, se encauzará por la rama de en medio para crear un nuevo producto en Salesforce
    • Si se ha actualizado un producto existe, se encauzará por la rama inferior para actualizar un producto existente en Salesforce

Las expresiones de configuración de los Distributor para conseguir el objetivo anterior, son las siguientes:


Condiciones
Distributor superior
Distributor inferior
Salida 0
//root/ProductPrestashopBean/delete[text() = 'true']
not(//root/ProductSalesforceBean/id)
Salida 1
//root/ProductPrestashopBean/delete[text() = 'false']
//root/ProductSalesforceBean/id

En las condiciones del Distributor superior comprobamos el valor de nodo booleano "delete" que nos indica si el elemento ha sido borrado de la tienda o no. En el segundo Distributor comprobamos si existe o no el campo "id" del mensaje de Salesforce. Sino existe, es que el producto es nuevo y hay que crearlo.


y5Bw1U3u1o-S0IvDp5H6vkQZYCQEiK4ecQ.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 SalesforceTe invitamos que visites el artículo que explica la solución entera para tener mayor información de contexto.

  


 


y2if2NAfCpaWdVWSXd2Mv8qYA1f4e6zQ4g.png