MuleSoft - Control de flujo y transformadores

Control de flujo (enrutadores)

La tarea principal del componente Flow Control es tomar el evento Mule de entrada y enrutarlo a una o más secuencias separadas de componentes. Básicamente, se trata de enrutar el evento Mule de entrada a otras secuencias de componentes. Por lo tanto, también se denomina enrutadores. Los enrutadores Choice y Scatter-Gather son los enrutadores más utilizados en el componente Control de flujo.

Elección del enrutador

Como sugiere el nombre, este enrutador aplica la lógica DataWeave para elegir una de dos o más rutas. Como se discutió anteriormente, cada ruta es una secuencia separada de procesadores de eventos Mule. Podemos definir los enrutadores de elección como el enrutador que enruta dinámicamente el mensaje a través de un flujo de acuerdo con un conjunto de expresiones DataWeave utilizadas para evaluar el contenido del mensaje.

Diagrama esquemático de Choice Router

El efecto de usar el enrutador Choice es como agregar procesamiento condicional a un flujo o un if/then/elsebloque de código en la mayoría de los lenguajes de programación. A continuación se muestra el diagrama esquemático de un Choice Router, que tiene tres opciones. Entre ellos, uno es el enrutador predeterminado.

Enrutador Scatter-Gather

Otro procesador de eventos de enrutamiento más utilizado es Scatter-Gather component. Como su nombre lo indica, trabaja sobre los fundamentos de scatters (copiar) y Gather (Consolidates). Podemos entender su funcionamiento con la ayuda de los siguientes dos puntos:

  • Primero, este enrutador copia (Scatter) un evento Mule en dos o más rutas paralelas. La condición es que cada ruta debe ser una secuencia de uno o más procesadores de eventos que es como un subflujo. En este caso, cada ruta creará un evento Mule usando un hilo separado. Cada evento de Mule tendrá su propia carga útil, atributos y variables.

  • A continuación, este enrutador recopila los eventos Mule creados de cada ruta y luego los consolida en un nuevo evento Mule. Después de esto, pasa este evento Mule consolidado al siguiente procesador de eventos. Aquí la condición es que el enrutador SG pasará un evento Mule consolidado al siguiente procesador de eventos solo cuando todas las rutas se completen con éxito.

Diagrama esquemático del enrutador Scatter-Gather

A continuación se muestra el diagrama esquemático de un enrutador Scatter-Gather que tiene cuatro procesadores de eventos. Ejecuta cada ruta en paralelo y no secuencialmente.

Manejo de errores mediante el enrutador Scatter-Gather

Primero, debemos tener conocimiento sobre el tipo de error que se puede generar dentro del componente Scatter-Gather. Se puede generar cualquier error dentro de los procesadores de eventos que llevan al componente Scatter-Gather a generar un error de tipoMule: COMPOSITE_ERROR. Este error lo lanzará el componente SG solo después de que cada ruta falle o se complete.

Para manejar este tipo de error, un try scopese puede utilizar en cada ruta del componente Scatter-Gather. Si el error es manejado con éxito portry scope, entonces la ruta podrá generar un evento Mule, seguro.

Transformadores

Supongamos que si queremos configurar o eliminar una parte de cualquier evento de Mule, el componente Transformer es la mejor opción. Los componentes del transformador son de los siguientes tipos:

Quitar transformador variable

Como su nombre lo indica, este componente toma un nombre de variable y elimina esa variable del evento Mule.

Configurar quitar transformador variable

La siguiente tabla muestra el nombre de los campos y su descripción a considerar al configurar la eliminación del transformador variable -

No Señor Campo y explicación
1

Display Name (doc:name)

Podemos personalizar esto para mostrar un nombre único para este componente en nuestro flujo de trabajo de Mule.

2

Name (variableName)

Representa el nombre de la variable a eliminar.

Configurar transformador de carga útil

Con la ayuda de set-payloadcomponente, podemos actualizar la carga útil, que puede ser una cadena literal o expresión DataWeave, del mensaje. No se recomienda utilizar este componente para expresiones o transformaciones complejas. Se puede usar para simples comoselections.

La siguiente tabla muestra el nombre de los campos y su descripción que se deben considerar al configurar el transformador de carga útil establecido:

Campo Uso Explicación
Valor (valor) Obligatorio El valor archivado es necesario para configurar una carga útil. Aceptará una cadena literal o una expresión DataWeave que defina cómo configurar la carga útil. Los ejemplos son como "alguna cadena"
Tipo de Mime (mimeType) Opcional Es opcional pero representa el tipo mime del valor asignado a la carga útil del mensaje. Los ejemplos son como texto / sin formato.
Codificación (codificación) Opcional También es opcional, pero representa la codificación del valor que se asigna a la carga útil del mensaje. Los ejemplos son como UTF-8.

Podemos establecer una carga útil a través del código de configuración XML:

With Static Content - El siguiente código de configuración XML establecerá la carga útil mediante el uso de contenido estático -

<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }" 
   mimeType = "application/json" encoding = "UTF-8"/>

With Expression Content - El siguiente código de configuración XML establecerá la carga útil mediante el uso de contenido de expresión -

<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>

El ejemplo anterior agregará la fecha de hoy con el mensaje "Hola".

Configurar transformador variable

Con la ayuda de set variablecomponente, podemos crear o actualizar una variable para almacenar valores que pueden ser valores literales simples como cadenas, cargas útiles de mensajes u objetos de atributo, para usar dentro del flujo de la aplicación Mule. No se recomienda utilizar este componente para expresiones o transformaciones complejas. Se puede usar para simples comoselections.

Configurar transformador de variable de set

La siguiente tabla muestra el nombre de los campos y su descripción que se deben considerar al configurar el transformador de carga útil establecido:

Campo Uso Explicación
Nombre de variable (variableName) Obligatorio Se requiere archivado y representa el nombre de la variable. Al dar el nombre, siga la convención de nomenclatura, ya que debe contener números, caracteres y guiones bajos.
Valor (valor) Obligatorio El valor archivado es necesario para establecer una variable. Aceptará una cadena literal o expresión DataWeave.
Tipo de Mime (mimeType) Opcional Es opcional pero representa el tipo mime de la variable. Los ejemplos son como texto / sin formato.
Codificación (codificación) Opcional También es opcional pero representa la codificación de la variable. Los ejemplos son como ISO 10646 / Unicode (UTF-8).

Ejemplo

El siguiente ejemplo establecerá la variable en la carga útil del mensaje:

Variable Name = msg_var
Value = payload in Design center and #[payload] in Anypoint Studio

De manera similar, el siguiente ejemplo establecerá la variable en la carga útil del mensaje:

Variable Name = msg_var
Value = attributes in Design center and #[attributes] in Anypoint Studio.