MuleSoft - Flusskontrolle und Transformatoren

Flusskontrolle (Router)

Die Hauptaufgabe der Flow Control-Komponente besteht darin, das eingegebene Mule-Ereignis zu einer oder mehreren separaten Folgen von Komponenten zu leiten. Grundsätzlich wird das Eingabe-Mule-Ereignis an andere Sequenzen von Komponenten weitergeleitet. Daher wird es auch als Router bezeichnet. Choice- und Scatter-Gather-Router sind die am häufigsten verwendeten Router unter der Flow Control-Komponente.

Choice Router

Wie der Name schon sagt, wendet dieser Router die DataWeave-Logik an, um eine von zwei oder mehr Routen auszuwählen. Wie bereits erwähnt, ist jede Route eine separate Sequenz von Mule-Ereignisprozessoren. Wir können Auswahlrouter als den Router definieren, der Nachrichten dynamisch durch einen Fluss gemäß einer Reihe von DataWeave-Ausdrücken leitet, die zum Auswerten des Nachrichteninhalts verwendet werden.

Schematische Darstellung des Choice Routers

Die Verwendung des Choice-Routers bewirkt das Hinzufügen einer bedingten Verarbeitung zu einem Flow oder einem if/then/elseCodeblock in den meisten Programmiersprachen. Es folgt das schematische Diagramm eines Choice Routers mit drei Optionen. Einer davon ist der Standardrouter.

Scatter-Gather-Router

Ein weiterer am häufigsten verwendeter Routing-Ereignisprozessor ist Scatter-Gather component. Wie der Name schon sagt, arbeitet es an den Grundlagen von Scatters (Kopie) und Gather (Consolidates). Wir können seine Arbeitsweise anhand der folgenden zwei Punkte verstehen:

  • Zunächst kopiert (Scatter) dieser Router ein Mule-Ereignis auf zwei oder mehr parallele Routen. Die Bedingung ist, dass jede Route eine Folge von einem oder mehreren Ereignisprozessoren sein muss, die einem Unterfluss ähnelt. In diesem Fall erstellt jede Route ein Mule-Ereignis, indem ein separater Thread verwendet wird. Jedes Mule-Ereignis hat seine eigenen Nutzdaten, Attribute und Variablen.

  • Als Nächstes sammelt dieser Router die erstellten Mule-Ereignisse von jeder Route und konsolidiert sie dann zu einem neuen Mule-Ereignis. Danach wird dieses konsolidierte Mule-Ereignis an den nächsten Ereignisprozessor übergeben. Hier ist die Bedingung, dass der SG-Router ein konsolidiertes Mule-Ereignis nur dann an den nächsten Ereignisprozessor weiterleitet, wenn jede Route erfolgreich abgeschlossen wurde.

Schematische Darstellung des Scatter-Gather-Routers

Es folgt das schematische Diagramm eines Scatter-Gather-Routers mit vier Ereignisprozessoren. Es führt jede Route parallel und nicht sequentiell aus.

Fehlerbehandlung durch Scatter-Gather-Router

Erstens müssen wir wissen, welche Art von Fehler innerhalb der Scatter-Gather-Komponente generiert werden kann. Jeder Fehler kann innerhalb von Ereignisprozessoren generiert werden, die dazu führen, dass die Scatter-Gather-Komponente einen Fehler vom Typ auslöstMule: COMPOSITE_ERROR. Dieser Fehler wird von der SG-Komponente erst ausgelöst, nachdem jede Route entweder fehlgeschlagen oder abgeschlossen ist.

Um diesen Fehlertyp zu behandeln, a try scopekann in jeder Route der Scatter-Gather-Komponente verwendet werden. Wenn der Fehler erfolgreich von behandelt wirdtry scopeDann kann die Route mit Sicherheit ein Mule-Ereignis generieren.

Transformer

Angenommen, wir möchten einen Teil eines Mule-Ereignisses festlegen oder entfernen, ist die Transformer-Komponente die beste Wahl. Es gibt folgende Arten von Transformatorkomponenten:

Variablen Transformator entfernen

Wie der Name schon sagt, nimmt diese Komponente einen Variablennamen und entfernt diese Variable aus dem Mule-Ereignis.

Konfigurieren des Entfernens des variablen Transformators

Die folgende Tabelle zeigt den Namen der Felder und ihre Beschreibung, die beim Konfigurieren des Entfernens des variablen Transformators berücksichtigt werden müssen.

Sr.Nr. Feld & Erklärung
1

Display Name (doc:name)

Wir können dies anpassen, um einen eindeutigen Namen für diese Komponente in unserem Mule-Arbeitsablauf anzuzeigen.

2

Name (variableName)

Es repräsentiert den Namen der zu entfernenden Variablen.

Nutzlasttransformator einstellen

Mit der Hilfe von set-payloadKomponente können wir die Nutzdaten der Nachricht aktualisieren, die eine Literalzeichenfolge oder ein DataWeave-Ausdruck sein können. Es wird nicht empfohlen, diese Komponente für komplexe Ausdrücke oder Transformationen zu verwenden. Es kann für einfache wie verwendet werdenselections.

Die folgende Tabelle zeigt den Namen der Felder und ihre Beschreibung, die bei der Konfiguration des eingestellten Nutzlasttransformators berücksichtigt werden müssen.

Feld Verwendung Erläuterung
Wert (Wert) Verpflichtend Der abgelegte Wert wird zum Festlegen einer Nutzlast benötigt. Es akzeptiert eine Literalzeichenfolge oder einen DataWeave-Ausdruck, der definiert, wie die Nutzdaten festgelegt werden. Die Beispiele sind wie "eine Zeichenfolge"
Mime-Typ (mimeType) Optional Es ist optional, repräsentiert jedoch den MIME-Typ des Werts, der der Nutzlast der Nachricht zugewiesen ist. Die Beispiele sind wie Text / Klartext.
Kodierung (Kodierung) Optional Es ist ebenfalls optional, stellt jedoch die Codierung des Werts dar, der der Nutzlast der Nachricht zugewiesen ist. Die Beispiele sind wie UTF-8.

Wir können eine Nutzlast über XML-Konfigurationscode festlegen -

With Static Content - Der folgende XML-Konfigurationscode legt die Nutzdaten mithilfe statischen Inhalts fest. -

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

With Expression Content - Der folgende XML-Konfigurationscode legt die Nutzdaten mithilfe von Ausdrucksinhalten fest. -

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

Im obigen Beispiel wird das heutige Datum mit der Nachrichtennutzlast "Hi" angehängt.

Stellen Sie den variablen Transformator ein

Mit der Hilfe von set variableAls Komponente können wir eine Variable erstellen oder aktualisieren, um Werte zu speichern, bei denen es sich um einfache Literalwerte wie Zeichenfolgen, Nachrichtennutzdaten oder Attributobjekte zur Verwendung im Ablauf der Mule-Anwendung handeln kann. Es wird nicht empfohlen, diese Komponente für komplexe Ausdrücke oder Transformationen zu verwenden. Es kann für einfache wie verwendet werdenselections.

Set variablen Transformator konfigurieren

Die folgende Tabelle zeigt den Namen der Felder und ihre Beschreibung, die bei der Konfiguration des eingestellten Nutzlasttransformators berücksichtigt werden müssen.

Feld Verwendung Erläuterung
Variablenname (Variablenname) Verpflichtend Es muss abgelegt werden und repräsentiert den Namen der Variablen. Befolgen Sie beim Geben des Namens die Namenskonvention, da diese Zahlen, Zeichen und Unterstriche enthalten muss.
Wert (Wert) Verpflichtend Der abgelegte Wert wird zum Setzen einer Variablen benötigt. Es akzeptiert eine Literalzeichenfolge oder einen DataWeave-Ausdruck.
Mime-Typ (mimeType) Optional Es ist optional, repräsentiert aber den MIME-Typ der Variablen. Die Beispiele sind wie Text / Klartext.
Kodierung (Kodierung) Optional Es ist ebenfalls optional, repräsentiert jedoch die Codierung der Variablen. Die Beispiele ähneln ISO 10646 / Unicode (UTF-8).

Beispiel

Im folgenden Beispiel wird die Variable auf die Nachrichtennutzlast festgelegt.

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

In ähnlicher Weise setzt das folgende Beispiel die Variable auf die Nachrichtennutzlast -

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