MuleSoft - Contrôle de flux et transformateurs

Contrôle de flux (routeurs)

La tâche principale du composant Flow Control est de prendre l'événement Mule d'entrée et de le router vers une ou plusieurs séquences distinctes de composants. Il achemine essentiellement l'événement Mule d'entrée vers d'autres séquences de composants. Par conséquent, il est également appelé Routeurs. Les routeurs Choice et Scatter-Gather sont les routeurs les plus utilisés sous le composant Flow Control.

Routeur de choix

Comme son nom l'indique, ce routeur applique la logique DataWeave pour choisir une ou plusieurs routes. Comme indiqué précédemment, chaque itinéraire est une séquence distincte de processeurs d'événements Mule. Nous pouvons définir des routeurs de choix comme le routeur qui achemine dynamiquement le message à travers un flux en fonction d'un ensemble d'expressions DataWeave utilisées pour évaluer le contenu du message.

Schéma de principe du routeur Choice

L'effet de l'utilisation du routeur Choice est comme l'ajout d'un traitement conditionnel à un flux ou à un if/then/elsebloc de code dans la plupart des langages de programmation. Voici le diagramme schématique d'un routeur Choice, avec trois options. Parmi ceux-ci, l'un est le routeur par défaut.

Routeur Scatter-Gather

Un autre processeur d'événements de routage le plus utilisé est Scatter-Gather component. Comme son nom l'indique, il travaille sur les principes fondamentaux de la dispersion (copie) et de la collecte (consolidation). Nous pouvons comprendre son fonctionnement à l'aide de deux points suivants -

  • Tout d'abord, ce routeur copie (Scatter) un événement Mule sur deux ou plusieurs routes parallèles. La condition est que chaque route doit être une séquence d'un ou plusieurs processeurs d'événements qui est comme un sous-flux. Chaque itinéraire dans ce cas créera un événement Mule en utilisant un thread distinct. Chaque événement Mule aura sa propre charge utile, des attributs ainsi que des variables.

  • Ensuite, ce routeur rassemble les événements Mule créés à partir de chaque itinéraire, puis les consolide dans un nouvel événement Mule. Après cela, il transmet cet événement Mule consolidé au processeur d'événements suivant. Ici, la condition est que le routeur SG transmettra un événement Mule consolidé au processeur d'événements suivant uniquement lorsque chaque itinéraire est terminé avec succès.

Diagramme schématique du routeur Scatter-Gather

Voici le diagramme schématique d'un routeur Scatter-Gather ayant quatre processeurs d'événements. Il exécute chaque route en parallèle et non séquentiellement.

Gestion des erreurs par le routeur Scatter-Gather

Tout d'abord, nous devons avoir des connaissances sur le type d'erreur qui peut être généré dans le composant Scatter-Gather. Toute erreur peut être générée dans les processeurs d'événements conduisant le composant Scatter-Gather à générer une erreur de typeMule: COMPOSITE_ERROR. Cette erreur sera renvoyée par le composant SG uniquement après l'échec ou la fin de chaque route.

Pour gérer ce type d'erreur, un try scopepeut être utilisé dans chaque route du composant Scatter-Gather. Si l'erreur est gérée avec succès partry scope, alors l'itinéraire pourra générer un événement Mule, c'est sûr.

Transformateurs

Supposons que si nous voulons définir ou supprimer une partie d'un événement Mule, le composant Transformer est le meilleur choix. Les composants du transformateur sont des types suivants -

Retirer le transformateur variable

Comme son nom l'indique, ce composant prend un nom de variable et supprime cette variable de l'événement Mule.

Configuration de la suppression du transformateur variable

Le tableau ci-dessous montre le nom des champs et leur description à prendre en compte lors de la configuration de la suppression du transformateur de variable -

Sr. Non Champ et explication
1

Display Name (doc:name)

Nous pouvons le personnaliser pour afficher un nom unique pour ce composant dans notre flux de travail Mule.

2

Name (variableName)

Il représente le nom de la variable à supprimer.

Définir le transformateur de charge utile

Avec l'aide de set-payloadcomposant, nous pouvons mettre à jour la charge utile, qui peut être une chaîne littérale ou une expression DataWeave, du message. Il n'est pas recommandé d'utiliser ce composant pour des expressions complexes ou des transformations. Il peut être utilisé pour des applications simples commeselections.

Le tableau ci-dessous montre le nom des champs et leur description à prendre en compte lors de la configuration du transformateur de charge utile set -

Champ Usage Explication
Valeur (valeur) Obligatoire La valeur enregistrée est requise pour définir une charge utile. Il acceptera une chaîne littérale ou une expression DataWeave définissant comment définir la charge utile. Les exemples sont comme "une chaîne"
Type Mime (mimeType) Optionnel Il est facultatif mais représente le type mime de la valeur affectée à la charge utile du message. Les exemples sont comme text / plain.
Encodage (encodage) Optionnel Il est également facultatif mais représente l'encodage de la valeur affectée à la charge utile du message. Les exemples sont comme UTF-8.

Nous pouvons définir une charge utile via le code de configuration XML -

With Static Content - Le code de configuration XML suivant définira la charge utile en utilisant du contenu statique -

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

With Expression Content - Le code de configuration XML suivant définira la charge utile en utilisant le contenu d'expression -

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

L'exemple ci-dessus ajoutera la date du jour avec la charge utile du message «Salut».

Définir le transformateur variable

Avec l'aide de set variablecomposant, nous pouvons créer ou mettre à jour une variable pour stocker des valeurs qui peuvent être de simples valeurs littérales telles que des chaînes, des charges utiles de message ou des objets d'attribut, à utiliser dans le flux de l'application Mule. Il n'est pas recommandé d'utiliser ce composant pour des expressions complexes ou des transformations. Il peut être utilisé pour des applications simples commeselections.

Configurer le transformateur variable défini

Le tableau ci-dessous montre le nom des champs et leur description à prendre en compte lors de la configuration du transformateur de charge utile set -

Champ Usage Explication
Nom de variable (variableName) Obligatoire Il est obligatoire et représente le nom de la variable. Lorsque vous donnez le nom, suivez la convention de dénomination car elle doit contenir des nombres, des caractères et des traits de soulignement.
Valeur (valeur) Obligatoire La valeur enregistrée est requise pour définir une variable. Il acceptera une chaîne littérale ou une expression DataWeave.
Type Mime (mimeType) Optionnel C'est facultatif mais représente le type mime de la variable. Les exemples sont comme text / plain.
Encodage (encodage) Optionnel Il est également facultatif mais représente l'encodage de la variable. Les exemples sont comme ISO 10646 / Unicode (UTF-8).

Exemple

L'exemple ci-dessous définira la variable sur la charge utile du message -

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

De même, l'exemple ci-dessous définira la variable sur la charge utile du message -

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