Beliebte Suchanfragen

Cloud Native

DevOps

IT-Security

Agile Methoden

Java

//

Mule Flow Landscape: Abhängigkeiten zwischen Mule Flows sichtbar machen

13.8.2023 | 3 Minuten Lesezeit

Erfahre, wie du mit dem Tool Mule Flow Landscape den Überblick über alle Mule Flows und deren Abhängigkeiten behältst.

Die Integrationsplattform Mule ermöglicht es uns, Integrationen mittels einer Low-Code-Entwicklungsplattform umzusetzen. Die Bausteine, die uns zur Verfügung stehen, um die Strukturierung vorzunehmen, sind Konfigurationen und darin enthaltene Flows oder Subflows. Das folgende Beispiel zeigt eine Konfiguration mit einem Flow, der offensichtlich ein Array von User-Objekten erwartet und diese in eine Queue schreibt. Die meisten Entwickler kennen diese Umsetzung unter der Bezeichnung „Reliability Pattern“.

Zugegeben, das ist wirklich ein sehr triviales Beispiel. Trotzdem passiert unter der Haube mehr als wir auf den ersten Blick erkennen können. In Anypoint Studio ist es möglich, Referenzen zu folgen, um entlang des Programmflusses zu navigieren. Wenn Queues genutzt werden, ist dies nicht möglich und bei größeren Projekten verliert man so schnell den Überblick. Unser Beispielprojekt ist zum Glück klein und überschaubar und so finden wir schnell die zweite Konfiguration, in der ein Flow die Liste von User-Objekten empfängt.

Im Flow impl-main werden die User-Objekte transformiert und anschließend wird der Flow impl-user-persistence aufgerufen, um alle User-Objekte in die Datenbank zu schreiben. Der Flow impl-user-transformation wird auf den ersten Blick scheinbar nicht benötigt. Klickt man auf den „Transform Message“-Prozessor im Flow impl-main, sieht man Folgendes:

1%dw 2.0
2output application/java
3---
4payload map ((user, index) -> lookup("impl-user-transformation", user))

Der Flow impl-main ist wegen des lookup im Dataweave-Code vom Flow impl-user-transformation abhängig. Der Flow-Editor in Anypoint Studio hat keine Möglichkeit, das zu visualisieren, obwohl diese Informationen entscheidend für das Verständnis und die Wartbarkeit von Mule-Anwendungen sind. Wir haben also zwei Abhängigkeiten zwischen Flows, die in Anypoint Studio nicht visualisiert werden können. Daher empfehle ich, möglichst auf die Funktion Mule::lookup zu verzichten.

Den Überblick behalten mit Mule Flow Landscape

Bei einem meiner letzten Kunden hatte ich einige Anwendungen, die Mule::lookup verwenden und es fiel mir wirklich schwer, die Zusammenhänge zwischen Flows zu begreifen. Ich suchte nach Tools, die mich bei der Analyse unterstützen, und dabei stieß ich auf das Tool Mule Flow Diagrams (mulefd). Leider unterstützte es Mule::lookup nicht und deshalb entschied ich mich, selbst ein Tool als Ergänzung zu mulefd zu entwickeln. So ist das Tool Mule Flow Landscape entstanden. Wird das Tool Mule Flow Landscape auf unser kleines Beispiel angewendet, entsteht folgendes Diagramm.

Hier sehen wir, dass normale Flow-Referenzen als schwarzer Pfeil, Mule::lookup als gestrichelter roter Pfeil und VM, JMS oder IBM-MQ Queues als blauer Pfeil dargestellt werden, sofern sich Publisher und Consumer im selben Projekt befinden. Die Gruppierung der Flows basiert auf den Dateien, in denen sie definiert sind.

Installation von Mule Flow Landscape

Mule Flow Landscape steht als Maven-Plugin und als CLI-Tool zur Verfügung und kann sowohl mit Mule 3 als auch mit Mule 4 verwendet werden. Das Maven-Plugin eignet sich gut für neue Anwendungen, bei denen das Diagramm beim Build generiert und in einer Readme.md referenziert wird. Wir haben somit immer eine Übersicht, ohne dass das Projekt ausgecheckt werden muss. Das CLI-Tool ist gut für Migrationsausfgaben geeignet. Angenommen, es gibt eine alte Mule-3-Anwendung, bei der keine Änderungen vorgenommen werden sollen und das Hinzufügen des Maven-Plugin nicht gewünscht ist. Über folgenden Befehl könntest du dann Mule Flow Landscape ausführen.

1→ flowlandscape -b 1.0 -w 600
212:58:02.886 [main] INFO  g.n.g.engine.V8JavascriptEngine - Starting V8 runtime...
312:58:03.036 [main] INFO  g.n.g.engine.V8JavascriptEngine - Started V8 runtime. Initializing javascript...
412:58:03.040 [main] INFO  g.n.g.engine.V8JavascriptEngine - Initialized javascript.
512:58:04.206 [main] INFO  io.github.obscure1910.Flowlandscape - Successfully generated image with Flow-Landscape! The generated image has been copied to the folder: ../flowlandscape/blog-example

Die Installation und alle Konfigurationsmöglichkeiten für Mule Flow Landscape sind auf GitHub beschrieben.

Fazit

Mit Mule Flow Landscape kannst du dir einen Überblick über alle Flows und deren Abhängigkeiten verschaffen. Es handelt sich um ein nützliches Werkzeug für Mule-Anwendungen, das die Dokumentation verbessert und zum besseren Verständnis der gesamten Integration beiträgt.

Beitrag teilen

Gefällt mir

0

//

Weitere Artikel in diesem Themenbereich

Entdecke spannende weiterführende Themen und lass dich von der codecentric Welt inspirieren.

//

Gemeinsam bessere Projekte umsetzen.

Wir helfen deinem Unternehmen.

Du stehst vor einer großen IT-Herausforderung? Wir sorgen für eine maßgeschneiderte Unterstützung. Informiere dich jetzt.

Hilf uns, noch besser zu werden.

Wir sind immer auf der Suche nach neuen Talenten. Auch für dich ist die passende Stelle dabei.