MuleSoft - Kurzanleitung

ESB steht für Enterprise Service BusDies ist im Grunde ein Middleware-Tool zum Integrieren verschiedener Anwendungen über eine busähnliche Infrastruktur. Grundsätzlich handelt es sich um eine Architektur, die ein einheitliches Mittel zum Verschieben der Arbeit zwischen integrierten Anwendungen bietet. Auf diese Weise können wir mithilfe der ESB-Architektur verschiedene Anwendungen über einen Kommunikationsbus verbinden und ihnen die Kommunikation ermöglichen, ohne voneinander abhängig zu sein.

ESB implementieren

Das Hauptaugenmerk der ESB-Architektur liegt darauf, die Systeme voneinander zu entkoppeln und ihnen eine stetige und kontrollierbare Kommunikation zu ermöglichen. Die Implementierung von ESB kann mit Hilfe von erfolgen‘Bus’ und ‘Adapter’ auf folgende Weise -

  • Das Konzept des „Busses“, das über einen Messaging-Server wie JMS oder AMQP erreicht wird, wird verwendet, um verschiedene Anwendungen voneinander zu entkoppeln.

  • Das Konzept des „Adapters“, der für die Kommunikation mit der Backend-Anwendung und die Umwandlung von Daten vom Anwendungsformat in das Busformat verantwortlich ist, wird zwischen Anwendungen und Bus verwendet.

Die Daten oder Nachrichten, die über den Bus von einer Anwendung zu einer anderen übertragen werden, haben ein kanonisches Format, was bedeutet, dass es ein einheitliches Nachrichtenformat gibt.

Der Adapter kann auch andere Aktivitäten wie Sicherheit, Überwachung, Fehlerbehandlung und Verwaltung des Nachrichtenroutings ausführen.

ESB-Leitprinzipien

Wir können diese Prinzipien als zentrale Integrationsprinzipien bezeichnen. Sie sind wie folgt -

  • Orchestration - Integration von zwei oder mehr Diensten, um eine Synchronisation zwischen Daten und Prozess zu erreichen.

  • Transformation - Umwandlung von Daten vom kanonischen Format in ein anwendungsspezifisches Format.

  • Transportation - Abwicklung der Protokollaushandlung zwischen Formaten wie FTP, HTTP, JMS usw.

  • Mediation - Bereitstellung mehrerer Schnittstellen zur Unterstützung mehrerer Versionen eines Dienstes.

  • Non-functional consistency - Bereitstellung eines Mechanismus zur Verwaltung von Transaktionen und Sicherheit.

Notwendigkeit von ESB

Die ESB-Architektur ermöglicht es uns, verschiedene Anwendungen zu integrieren, über die jede Anwendung kommunizieren kann. Im Folgenden finden Sie einige Richtlinien zur Verwendung von ESB:

  • Integrating two or more applications - Die Verwendung der ESB-Architektur ist vorteilhaft, wenn zwei oder mehr Dienste oder Anwendungen integriert werden müssen.

  • Integration of more applications in future - Angenommen, wir möchten in Zukunft weitere Dienste oder Anwendungen hinzufügen, kann dies mithilfe der ESB-Architektur problemlos durchgeführt werden.

  • Using multiple protocols - Wenn wir mehrere Protokolle wie HTTP, FTP, JMS usw. verwenden müssen, ist ESB die richtige Option.

  • Message routing - Wir können ESB verwenden, wenn wir ein Nachrichtenrouting basierend auf dem Nachrichteninhalt und anderen ähnlichen Parametern benötigen.

  • Composition and consumption - ESB kann verwendet werden, wenn Dienste für Zusammensetzung und Verbrauch veröffentlicht werden müssen.

P2P-Integration vs. ESB-Integration

Angesichts der zunehmenden Anzahl von Anwendungen war eine große Frage vor den Entwicklern, wie verschiedene Anwendungen verbunden werden können. Die Situation wurde durch Handcodierung einer Verbindung zwischen verschiedenen Anwendungen behandelt. Das nennt manpoint-to-point integration.

Rigidityist der offensichtlichste Nachteil der Punkt-zu-Punkt-Integration. Die Komplexität nimmt mit der Anzahl der Verbindungen und Schnittstellen zu. Die Nachteile der P-2-P-Integration führen uns zur ESB-Integration.

ESB ist ein flexiblerer Ansatz für die Anwendungsintegration. Es kapselt und macht jede Anwendungsfunktionalität als eine Reihe diskreter wiederverwendbarer Funktionen verfügbar. Keine Anwendung lässt sich direkt in andere integrieren, stattdessen werden sie wie unten gezeigt über einen ESB integriert.

Für die Verwaltung der Integration besteht ESB aus den folgenden zwei Komponenten:

  • Service Registry- Mule ESB verfügt über eine Dienstregistrierung / ein Dienstregister, in der alle im ESB bereitgestellten Dienste veröffentlicht und registriert werden. Es dient als Entdeckungspunkt, von dem aus die Dienste und Funktionen anderer Anwendungen genutzt werden können.

  • Centralized Administration - Wie der Name schon sagt, bietet es einen Überblick über die Transaktionsströme der Leistung von Interaktionen innerhalb des ESB.

ESB Functionality- Die VETRO-Abkürzung wird im Allgemeinen verwendet, um die Funktionalität von ESB zusammenzufassen. Es ist wie folgt -

  • V(Validieren) - Wie der Name schon sagt, wird die Schemaüberprüfung validiert. Es erfordert einen validierenden Parser und ein aktuelles Schema. Ein Beispiel ist ein XML-Dokument, das ein aktuelles Schema bestätigt.

  • E(Anreichern) - Fügt einer Nachricht zusätzliche Daten hinzu. Der Zweck besteht darin, die Nachricht für einen Zieldienst aussagekräftiger und nützlicher zu machen.

  • T(Transformieren) - Konvertiert die Datenstruktur in ein kanonisches Format oder aus einem kanonischen Format. Beispiele sind die Umrechnung von Datum / Uhrzeit, Währung usw.

  • R(Routing) - Leitet die Nachricht weiter und fungiert als Gatekeeper des Endpunkts eines Dienstes.

  • O(Bedienen) - Die Hauptaufgabe dieser Funktion besteht darin, den Zieldienst aufzurufen oder mit der Ziel-App zu interagieren. Sie laufen im Backend.

Das VETRO-Muster bietet allgemeine Flexibilität für die Integration und stellt sicher, dass nur konsistente und validierte Daten im gesamten ESB weitergeleitet werden.

Was ist Mule ESB?

Mule ESB ist ein leichter und hoch skalierbarer Java-basierter Enterprise Service Bus (ESB) und eine Integrationsplattform von MuleSoft. Mit Mule ESB kann der Entwickler Anwendungen einfach und schnell verbinden. Unabhängig von verschiedenen Technologien, die von Anwendungen verwendet werden, ermöglicht Mule ESB die einfache Integration von Anwendungen und den Datenaustausch. Mule ESB hat die folgenden zwei Ausgaben -

  • Gemeinschaftsausgabe
  • Enterprise Edition

Ein Vorteil von Mule ESB ist, dass wir problemlos von der Mule ESB-Community auf Mule ESB Enterprise upgraden können, da beide Editionen auf einer gemeinsamen Codebasis basieren.

Funktionen und Fähigkeiten von Mule ESB

Folgende Funktionen besitzt Mule ESB -

  • Es verfügt über ein einfaches grafisches Drag-and-Drop-Design.
  • Mule ESB ist in der Lage, Daten visuell abzubilden und zu transformieren.
  • Der Benutzer kann Hunderte von vorgefertigten zertifizierten Steckverbindern nutzen.
  • Zentrale Überwachung und Verwaltung.
  • Es bietet zuverlässige Funktionen zur Durchsetzung der Unternehmenssicherheit.
  • Es bietet die Möglichkeit der API-Verwaltung.
  • Es gibt ein sicheres Data Gateway für die Cloud- / On-Premise-Konnektivität.
  • Es stellt die Dienstregistrierung bereit, in der alle im ESB bereitgestellten Dienste veröffentlicht und registriert werden.
  • Benutzer können die Kontrolle über eine webbasierte Verwaltungskonsole haben.
  • Das schnelle Debuggen kann mit dem Service Flow Analyzer durchgeführt werden.

Die Motive hinter dem Mule-Projekt waren -

  • um es den Programmierern einfacher zu machen,

  • die Notwendigkeit einer leichten und modularen Lösung, die von einem Messaging-Framework auf Anwendungsebene zu einem unternehmensweiten, hochverteilbaren Framework skaliert werden kann.

Mule ESB ist sowohl als ereignisgesteuertes als auch als programmatisches Framework konzipiert. Es ist ereignisgesteuert, da es mit einer einheitlichen Darstellung von Nachrichten kombiniert wird und mit steckbaren Modulen erweitert werden kann. Es ist programmatisch, da Programmierer auf einfache Weise einige zusätzliche Verhaltensweisen wie die spezifische Nachrichtenverarbeitung oder die benutzerdefinierte Datentransformation implantieren können.

Geschichte

Die historische Perspektive des Mule-Projekts ist wie folgt:

SourceForge-Projekt

Das Mule-Projekt wurde im April 2003 als SourceForge-Projekt gestartet. Nach zwei Jahren wurde die erste Version veröffentlicht und in das CodeHaus verschoben. Die UMO-API (Universal Message Object) war das Kernstück ihrer Architektur. Die Idee hinter der UMO-API war es, die Logik zu vereinheitlichen und sie gleichzeitig von den zugrunde liegenden Transporten isoliert zu halten.

Version 1.0

Es wurde im April 2005 mit zahlreichen Transporten veröffentlicht. Das Hauptaugenmerk vieler anderer Versionen lag auf dem Debuggen und Hinzufügen neuer Funktionen.

Version 2.0 (Übernahme von Spring 2)

Spring 2 als Konfigurations- und Verkabelungsframework wurde in Mule 2 übernommen, erwies sich jedoch aufgrund der mangelnden Ausdruckskraft der erforderlichen XML-Konfiguration als große Überholung. Dieses Problem wurde behoben, als in Spring 2 eine XML-Schema-basierte Konfiguration eingeführt wurde.

Bauen mit Maven

Die größte Verbesserung, die die Verwendung von Mule sowohl zu Entwicklungs- als auch zu Bereitstellungszeiten vereinfachte, war die Verwendung von Maven. Ab Version 1.3 wurde mit Maven begonnen.

MuleSource

Im Jahr 2006 wurde MuleSource integriert, um „die schnell wachsende Community bei der Verwendung von Mule in unternehmenskritischen Unternehmensanwendungen zu unterstützen und zu unterstützen“. Es erwies sich als der wichtigste Meilenstein für das Mule-Projekt.

Konkurrenten von Mule ESB

Im Folgenden sind einige der Hauptkonkurrenten von Mule ESB aufgeführt:

  • WSO2 ESB
  • Oracle Service Bus
  • WebSphere Message Broker
  • Aurea CX-Plattform
  • Fiorano ESB
  • WebSphere DataPower Gateway
  • Workday Business Process Framework
  • Talend Enterprise Service Bus
  • JBoss Enterprise Service Bus
  • iWay Service Manager

Mules Kernkonzept

Wie bereits erwähnt, ist Mule ESB eine leichte und hoch skalierbare Java-basierte Enterprise Service Bus (ESB) - und Integrationsplattform. Unabhängig von verschiedenen Technologien, die von Anwendungen verwendet werden, ermöglicht Mule ESB die einfache Integration von Anwendungen und den Datenaustausch. In diesem Abschnitt werden wir über das Kernkonzept von Mule sprechen, das ins Spiel kommt, um eine solche Integration zu ermöglichen.

Dazu müssen wir sowohl die Architektur als auch die Bausteine ​​verstehen.

Die Architektur

Die Architektur von Mule ESB besteht aus drei Schichten: Transportschicht, Integrationsschicht und Anwendungsschicht, wie in der folgenden Abbildung dargestellt:

Im Allgemeinen gibt es drei Arten von Aufgaben, die zum Konfigurieren und Anpassen der Mule-Bereitstellung ausgeführt werden können:

Entwicklung von Servicekomponenten

Diese Aufgabe umfasst die Entwicklung oder Wiederverwendung der vorhandenen POJOs oder Spring Beans. POJOs ist eine Klasse mit Attributen, die die Methoden get und set, Cloud Connectors, generiert. Auf der anderen Seite enthält Spring Beans die Geschäftslogik zur Anreicherung von Nachrichten.

Service-Orchestrierung

Diese Aufgabe stellt im Wesentlichen die Dienstvermittlung bereit, bei der der Nachrichtenprozessor, die Router, die Transformatoren und die Filter konfiguriert werden.

Integration

Die wichtigste Aufgabe von Mule ESB ist die Integration verschiedener Anwendungen, unabhängig von den verwendeten Protokollen. Zu diesem Zweck bietet Mule Transportmethoden an, mit denen die Nachrichten auf verschiedenen Protokollverbindern empfangen und versendet werden können. Mule unterstützt viele vorhandene Transportmethoden, oder wir verwenden möglicherweise auch eine benutzerdefinierte Transportmethode.

Bausteine

Die Maultierkonfiguration hat die folgenden Bausteine:

Frühlingsbohnen

Die Hauptverwendung von Spring Beans ist das Erstellen von Servicekomponenten. Nach dem Erstellen der Spring Service-Komponente können wir sie über eine Konfigurationsdatei oder manuell definieren, falls Sie keine Konfigurationsdatei haben.

Agenten

Es handelt sich im Grunde genommen um einen Dienst, der in Anypoint Studio vor Mule Studio erstellt wurde. Ein Agent wird erstellt, sobald Sie einen Server starten, und wird zerstört, sobald Sie den Server stoppen.

Verbinder

Es ist eine Softwarekomponente, die mit den für Protokolle spezifischen Parametern konfiguriert ist. Es wird hauptsächlich zur Steuerung der Verwendung eines Protokolls verwendet. Beispielsweise wird ein JMS-Connector mit a konfiguriertConnection und dieser Verbinder wird unter verschiedenen Einheiten geteilt, die für die tatsächliche Kommunikation verantwortlich sind.

Globale Konfiguration

Wie der Name schon sagt, werden mit diesem Baustein die globalen Eigenschaften und Einstellungen festgelegt.

Globale Endpunkte

Es kann auf der Registerkarte Globale Elemente verwendet werden, die in einem Flow so oft verwendet werden kann.

Globaler Nachrichtenprozessor

Wie der Name schon sagt, beobachtet oder ändert er eine Nachricht oder einen Nachrichtenfluss. Transformatoren und Filter sind Beispiele für Global Message Processor.

Transformers- Die Hauptaufgabe eines Transformators besteht darin, Daten von einem Format in ein anderes zu konvertieren. Es kann global definiert und in mehreren Flows verwendet werden.

Filters- Es ist der Filter, der entscheidet, welche Mule-Nachricht verarbeitet werden soll. Filter gibt im Wesentlichen die Bedingungen an, die erfüllt sein müssen, damit eine Nachricht verarbeitet und an einen Dienst weitergeleitet werden kann.

Modelle

Im Gegensatz zu Agenten handelt es sich um eine logische Gruppierung von Diensten, die im Studio erstellt werden. Wir haben die Freiheit, alle Dienste innerhalb eines bestimmten Modells zu starten und zu stoppen.

Services- Services sind diejenigen, die unsere Geschäftslogik oder Komponenten umschließen. Außerdem werden Router, Endpunkte, Transformatoren und Filter speziell für diesen Dienst konfiguriert.

Endpoints- Es kann als ein Objekt definiert werden, für das Dienste eingehende (empfangene) und ausgehende (sendende) Nachrichten senden. Dienste sind über Endpunkte verbunden.

Fließen

Der Nachrichtenprozessor verwendet Flows, um einen Nachrichtenfluss zwischen einer Quelle und einem Ziel zu definieren.

Struktur der Maultiernachrichten

Eine Mule-Nachricht, die vollständig unter dem Mule-Nachrichtenobjekt verpackt ist, sind die Daten, die über Mule-Flows durch Anwendungen geleitet werden. Die Nachricht von Structure Mule ist in der folgenden Abbildung dargestellt:

Wie im obigen Diagramm zu sehen ist, besteht Mule Message aus zwei Hauptteilen -

Header

Es sind nichts anderes als die Metadaten der Nachricht, die durch die folgenden zwei Eigenschaften weiter dargestellt werden:

Inbound Properties- Dies sind die Eigenschaften, die von der Nachrichtenquelle automatisch festgelegt werden. Sie können vom Benutzer nicht manipuliert oder eingestellt werden. Eingehende Eigenschaften sind in der Natur unveränderlich.

Outbound Properties- Dies sind die Eigenschaften, die Metadaten wie eine eingehende Eigenschaft enthalten und im Verlauf des Flusses festgelegt werden können. Sie können automatisch von Mule oder manuell von einem Benutzer eingestellt werden. In der Natur sind ausgehende Eigenschaften veränderlich.

Ausgehende Eigenschaften werden zu eingehenden Eigenschaften, wenn die Nachricht über einen Transport vom ausgehenden Endpunkt eines Flusses zum eingehenden Endpunkt eines anderen Flusses übertragen wird.

Ausgehende Eigenschaften bleiben ausgehende Eigenschaften, wenn die Nachricht über einen Flow-Ref und nicht über einen Connector an einen neuen Flow übergeben wird.

Nutzlast

Die tatsächliche Geschäftsnachricht, die vom Nachrichtenobjekt übertragen wird, wird als Nutzlast bezeichnet.

Variablen

Es kann als benutzerdefinierte Metadaten zu einer Nachricht definiert werden. Grundsätzlich sind Variablen temporäre Informationen zu einer Nachricht, die von der Anwendung verwendet wird, die sie verarbeitet. Es ist nicht dazu gedacht, zusammen mit den Nachrichten an sein Ziel weitergeleitet zu werden. Es gibt drei Arten von Typen, wie unten angegeben -

Flow variables - Diese Variablen gelten nur für den Fluss, in dem sie existieren.

Session variables - Diese Variablen gelten für alle Flows innerhalb derselben Anwendung.

Record variables - Diese Variablen gelten nur für Datensätze, die als Teil eines Stapels verarbeitet werden.

Anhänge und zusätzliche Nutzlast

Hierbei handelt es sich um einige zusätzliche Metadaten zur Nachrichtennutzlast, die nicht unbedingt jedes Mal im Nachrichtenobjekt angezeigt werden.

In den vorherigen Kapiteln haben wir die Grundlagen von Mule ESB gelernt. In diesem Kapitel erfahren Sie, wie Sie es installieren und konfigurieren.

Voraussetzungen

Wir müssen die folgenden Voraussetzungen erfüllen, bevor wir Mule auf unserem Computer installieren können:

Java Development Kit (JDK)

Stellen Sie vor der Installation von MULE sicher, dass Sie die Java-Version auf Ihrem System unterstützt haben. JDK 1.8.0 wird empfohlen, um Mule erfolgreich auf Ihrem System zu installieren.

Betriebssystem

Folgende Betriebssysteme werden von Mule unterstützt -

  • MacOS 10.11.x.
  • HP-UX 11iV3
  • AIX 7.2
  • Windows 2016 Server
  • Windows 2012 R2 Server
  • Windows 10
  • Windows 8.1
  • Solaris 11.3
  • RHEL 7
  • Ubuntu Server 18.04
  • Linux Kernel 3.13+

Datenbank

Ein Anwendungsserver oder eine Datenbank ist nicht erforderlich, da die Mule Runtime als eigenständiger Server ausgeführt wird. Wenn wir jedoch auf einen Datenspeicher zugreifen müssen oder einen Anwendungsserver verwenden möchten, können folgende unterstützte Anwendungsserver oder Datenbanken verwendet werden:

  • Oracle 11g
  • Oracle 12c
  • MySQL 5.5+
  • IBM DB2 10
  • PostgreSQL 9
  • Derby 10
  • Microsoft SQL Server 2014

System Anforderungen

Vor der Installation von Mule auf Ihrem System muss es die folgenden Systemanforderungen erfüllen:

  • Mindestens 2 GHz CPU oder 1 virtuelle CPU in virtualisierten Umgebungen
  • Mindestens 1 GB RAM
  • Mindestens 4 GB Speicherplatz

Laden Sie Mule herunter

Klicken Sie auf den Link, um die Mule 4-Binärdatei herunterzuladen https://www.mulesoft.com/lp/dl/mule-esb-enterprise und es wird Sie wie folgt zur offiziellen Webseite von MuleSoft führen -

Wenn Sie die erforderlichen Details angeben, können Sie die Mule 4-Binärdatei im Zip-Format abrufen.

Mule installieren und ausführen

Nachdem Sie die Mule 4-Binärdatei heruntergeladen haben, entpacken Sie sie und legen Sie eine Umgebungsvariable mit dem Namen fest MULE_HOME für das Mule-Verzeichnis im extrahierten Ordner.

Beispielsweise kann die Umgebungsvariable in Windows- und Linux / Unix-Umgebungen für Version 4.1.5 im Verzeichnis Downloads wie folgt festgelegt werden:

Windows-Umgebungen

$ env:MULE_HOME=C:\Downloads\mule-enterprise-standalone-4.1.5\

Unix / Linux-Umgebungen

$ export MULE_HOME=~/Downloads/mule-enterprise-standalone-4.1.5/

Verwenden Sie nun die folgenden Befehle, um zu testen, ob Mule fehlerfrei in Ihrem System ausgeführt wird:

Windows-Umgebungen

$ $MULE_HOME\bin\mule.bat

Unix / Linux-Umgebungen

$ $MULE_HOME/bin/mule

Mit den obigen Befehlen wird Mule im Vordergrundmodus ausgeführt. Wenn Mule ausgeführt wird, können keine anderen Befehle auf dem Terminal ausgegeben werden. Drückenctrl-c Befehl im Terminal, stoppt Mule.

Starten Sie Mule Services

Wir können Mule auch als Windows-Dienst und als Linux / Unix-Daemon starten.

Maultier als Windows-Dienst

Um Mule als Windows-Dienst auszuführen, müssen Sie die folgenden Schritte ausführen:

Step 1 - Installieren Sie es zuerst mit Hilfe des folgenden Befehls -

$ $MULE_HOME\bin\mule.bat install

Step 2 - Nach der Installation können wir mule mit Hilfe des folgenden Befehls als Windows-Dienst ausführen:

$ $MULE_HOME\bin\mule.bat start

Mule als Linux / Unix Daemon

Um Mule als Linux / Unix-Daemon auszuführen, müssen Sie die folgenden Schritte ausführen:

Step 1 - Installieren Sie es mit Hilfe des folgenden Befehls -

$ $MULE_HOME/bin/mule install

Step 2 - Nach der Installation können wir mule als Windows-Dienst mit Hilfe des folgenden Befehls ausführen: -

$ $MULE_HOME/bin/mule start

Example

Das folgende Beispiel startet Mule als Unix-Daemon -

$ $MULE_HOME/bin/mule start
MULE_HOME is set to ~/Downloads/mule-enterprise-standalone-4.1.5
MULE_BASE is set to ~/Downloads/mule-enterprise-standalone-4.1.5
Starting Mule Enterprise Edition...
Waiting for Mule Enterprise Edition.................
running: PID:87329

Stellen Sie Mule Apps bereit

Wir können unsere Mule-Apps mithilfe der folgenden Schritte bereitstellen:

Step 1 - Starten Sie zuerst Mule.

Step 2 - Sobald Mule gestartet ist, können wir unsere Mule-Anwendungen bereitstellen, indem wir unsere JAR-Paketdateien in das Verzeichnis verschieben apps Verzeichnis in $MULE_HOME.

Stoppen Sie die Maultierdienste

Wir können benutzen stopBefehl, Mule zu stoppen. Im folgenden Beispiel wird Mule beispielsweise als Unix-Daemon gestartet.

$ $MULE_HOME/bin/mule stop
MULE_HOME is set to /Applications/mule-enterprise-standalone-4.1.5
MULE_BASE is set to /Applications/mule-enterprise-standalone-4.1.5
Stopping Mule Enterprise Edition...
Stopped Mule Enterprise Edition.

Wir können auch verwenden removeBefehl, um den Mule Service oder Daemon von unserem System zu entfernen. Im folgenden Beispiel wird Mule als Unix-Daemon entfernt.

$ $MULE_HOME/bin/mule remove
MULE_HOME is set to /Applications/mule-enterprise-standalone-4.1.5
MULE_BASE is set to /Applications/mule-enterprise-standalone-4.1.5
Detected Mac OSX:
Mule Enterprise Edition is not running.
Removing Mule Enterprise Edition daemon...

Das Anypoint Studio von MuleSoft ist benutzerfreundlich IDE (integration development environment)wird zum Entwerfen und Testen von Mule-Anwendungen verwendet. Es ist eine Eclipse-basierte IDE. Wir können Connectors einfach aus der Mule-Palette ziehen. Mit anderen Worten, Anypoint Studio ist eine Eclipse-basierte IDE für die Entwicklung von Flüssen usw.

Voraussetzungen

Wir müssen die folgenden Voraussetzungen erfüllen, bevor wir Mule unter allen Betriebssystemen installieren, dh Windows, Mac und Linux / Unix.

Java Development Kit (JDK)- Vergewissern Sie sich vor der Installation von Mule, dass Sie die Java-Version auf Ihrem System unterstützt haben. JDK 1.8.0 wird empfohlen, um Anypoint erfolgreich auf Ihrem System zu installieren.

Herunterladen und Installieren von Anypoint Studio

Das Verfahren zum Herunterladen und Installieren von Anypoint Studio auf verschiedenen Betriebssystemen kann variieren. Als Nächstes müssen die Schritte zum Herunterladen und Installieren von Anypoint Studio auf verschiedenen Betriebssystemen ausgeführt werden.

Unter Windows

Um Anypoint Studio unter Windows herunterzuladen und zu installieren, müssen Sie die folgenden Schritte ausführen:

Step 1 - Klicken Sie zuerst auf den Link https://www.mulesoft.com/lp/dl/studio und wählen Sie das Windows-Betriebssystem aus der Top-Down-Liste aus, um das Studio herunterzuladen.

Step 2 - Jetzt extrahieren Sie es in die ‘C:\’ root-Verzeichnis.

Step 3 - Öffnen Sie das extrahierte Anypoint Studio.

Step 4- Um den Standardarbeitsbereich zu akzeptieren, klicken Sie auf OK. Sie erhalten eine Willkommensnachricht, wenn es zum ersten Mal geladen wird.

Step 5 - Klicken Sie nun auf die Schaltfläche Erste Schritte, um Anypoint Studio zu verwenden.

Unter OS X.

Um Anypoint Studio unter OS X herunterzuladen und zu installieren, müssen Sie die folgenden Schritte ausführen:

Step 1 - Klicken Sie zuerst auf den Link https://www.mulesoft.com/lp/dl/studio und lade das Studio herunter.

Step 2- Jetzt extrahieren Sie es. Wenn Sie die Betriebssystemversion Sierra verwenden, müssen Sie die extrahierte App auf verschieben/Applications folder vor dem Start.

Step 3 - Öffnen Sie das extrahierte Anypoint Studio.

Step 4- Um den Standardarbeitsbereich zu akzeptieren, klicken Sie auf OK. Sie erhalten eine Willkommensnachricht, wenn es zum ersten Mal geladen wird.

Step 5 - Klicken Sie jetzt auf Get Started Schaltfläche zur Verwendung von Anypoint Studio.

Wenn Sie einen benutzerdefinierten Pfad zu Ihrem Arbeitsbereich verwenden möchten, beachten Sie bitte, dass Anypoint Studio die in Linux / Unix-Systemen verwendete ~ Tilde nicht erweitert. Daher wird empfohlen, beim Definieren des Arbeitsbereichs den absoluten Pfad zu verwenden.

Unter Linux

Um Anypoint Studio unter Linux herunterzuladen und zu installieren, müssen Sie die folgenden Schritte ausführen:

Step 1 - Klicken Sie zuerst auf den Link https://www.mulesoft.com/lp/dl/studio und wählen Sie das Linux-Betriebssystem aus der Top-Down-Liste aus, um das Studio herunterzuladen.

Step 2 - Jetzt extrahieren Sie es.

Step 3 - Öffnen Sie als Nächstes das extrahierte Anypoint Studio.

Step 4- Um den Standardarbeitsbereich zu akzeptieren, klicken Sie auf OK. Sie erhalten eine Willkommensnachricht, wenn es zum ersten Mal geladen wird.

Step 5 - Klicken Sie nun auf die Schaltfläche Erste Schritte, um Anypoint Studio zu verwenden.

Wenn Sie einen benutzerdefinierten Pfad zu Ihrem Arbeitsbereich verwenden möchten, beachten Sie bitte, dass Anypoint Studio die in Linux / Unix-Systemen verwendete ~ Tilde nicht erweitert. Daher wird empfohlen, beim Definieren des Arbeitsbereichs den absoluten Pfad zu verwenden.

Es wird außerdem empfohlen, GTK Version 2 zu installieren, um vollständige Studio-Designs unter Linux zu verwenden.

Funktionen von Anypoint Studio

Im Folgenden sind einige Funktionen von Anypoint Studio aufgeführt, die die Produktivität beim Erstellen von Mule-Anwendungen steigern:

  • Es bietet eine sofortige Ausführung der Mule-Anwendung innerhalb einer lokalen Laufzeit.

  • Anypoint Studio bietet uns einen visuellen Editor zum Konfigurieren von API-Definitionsdateien und Mule-Domänen.

  • Es verfügt über ein eingebettetes Framework für Unit-Tests, das die Produktivität erhöht.

  • Anypoint Studio bietet uns den integrierten Support für die Bereitstellung in CloudHub.

  • Es kann in Exchange integriert werden, um Vorlagen, Beispiele, Definitionen und andere Ressourcen aus anderen Anypoint Platform-Organisationen zu importieren.

Anypoint Studio-Editoren helfen uns beim Entwerfen unserer Anwendungen, APIs, Eigenschaften und Konfigurationsdateien. Neben dem Entwerfen hilft es uns auch, sie zu bearbeiten. Zu diesem Zweck haben wir den Mule-Konfigurationsdatei-Editor. Doppelklicken Sie zum Öffnen dieses Editors auf die Anwendungs-XML-Datei in/src/main/mule.

Um mit unserer Anwendung zu arbeiten, haben wir die folgenden drei Registerkarten unter Mule Configuration File Editor.

Die Registerkarte Nachrichtenfluss

Diese Registerkarte bietet eine visuelle Darstellung des Arbeitsablaufs. Es enthält im Grunde eine Leinwand, mit deren Hilfe wir unsere Flüsse visuell überprüfen können. Wenn Sie Ereignisprozessoren aus der Mule-Palette zur Zeichenfläche hinzufügen möchten, ziehen Sie sie einfach per Drag & Drop und sie werden in der Zeichenfläche angezeigt.

Durch Klicken auf einen Ereignisprozessor erhalten Sie die Ansicht Maultiereigenschaften mit den Attributen für den ausgewählten Prozessor. Wir können sie auch bearbeiten.

Die Registerkarte Globale Elemente

Diese Registerkarte enthält die globalen Mule-Konfigurationselemente für die Module. Auf dieser Registerkarte können wir Konfigurationsdateien erstellen, bearbeiten oder löschen.

Die Registerkarte Konfigurations-XML

Wie der Name schon sagt, enthält es das XML, das Ihre Mule-Anwendung definiert. Alle Änderungen, die Sie hier vornehmen, werden sowohl im Arbeitsbereich als auch in der Eigenschaftenansicht des Ereignisprozessors auf der Registerkarte Nachrichtenfluss angezeigt.

Ansichten

Für den aktiven Editor bietet Anypoint Studio die grafische Darstellung unserer Projektmetadaten und Eigenschaften mithilfe von Ansichten. Ein Benutzer kann Ansichten im Mule-Projekt verschieben, schließen und hinzufügen. Im Folgenden finden Sie einige Standardansichten in Anypoint Studio:

Paket-Explorer

Die Hauptaufgabe der Paket-Explorer-Ansicht besteht darin, die Projektordner und -dateien anzuzeigen, die in einem Mule-Projekt enthalten sind. Wir können den Mule-Projektordner erweitern oder verkleinern, indem wir auf den Pfeil daneben klicken. Ein Ordner oder eine Datei kann durch Doppelklicken geöffnet werden. Schauen Sie sich den Screenshot an -

Maultier-Palette

In der Ansicht "Maultierpalette" werden die Ereignisprozessoren wie Bereiche, Filter und Flusssteuerungsrouter sowie Module und die zugehörigen Vorgänge angezeigt. Die Hauptaufgaben der Mule-Palettenansicht lauten wie folgt:

  • Diese Ansicht hilft uns, die Module und Konnektoren in unserem Projekt zu verwalten.
  • Wir können auch neue Elemente aus Exchange hinzufügen.

Schauen Sie sich den Screenshot an -

Maultiereigenschaften

Wie der Name schon sagt, können wir die Eigenschaften des aktuell in unserer Zeichenfläche ausgewählten Moduls bearbeiten. Die Ansicht "Maultiereigenschaften" enthält Folgendes:

  • DataSense Explorer, der Echtzeitinformationen zur Datenstruktur unserer Nutzdaten liefert.

  • Eingehende und ausgehende Eigenschaften, falls verfügbar, oder Variablen.

Unten ist der Screenshot -

Konsole

Immer wenn wir die Mule-Anwendung erstellen oder ausführen, zeigt der eingebettete Mule-Server eine Liste der von Studio gemeldeten Ereignisse und Probleme an. Die Konsolenansicht enthält die Konsole dieses eingebetteten Mule-Servers. Schauen Sie sich den Screenshot an -

Problemansicht

Bei der Arbeit an unserem Mule-Projekt können viele Probleme auftreten. Alle diese Probleme werden in der Problemansicht angezeigt. Unten ist der Screenshot

Perspektiven

In Anypoint Studio handelt es sich um eine Sammlung von Ansichten und Editoren in einer bestimmten Anordnung. In Anypoint Studio gibt es zwei Arten von Perspektiven:

Mule Design Perspective - Dies ist die Standardperspektive, die wir in Studio erhalten.

Mule Debug Perspective - Eine weitere von Anypoint Studio bereitgestellte Perspektive ist die Mule-Debug-Perspektive.

Andererseits können wir auch unsere eigene Perspektive erstellen und eine der Standardansichten hinzufügen oder entfernen.

In diesem Kapitel erstellen wir unsere erste Mule-Anwendung in MuleSofts Anypoint Studio. Um es zu erstellen, müssen wir zuerst Anypoint Studio starten.

Anypoint Studio starten

Klicken Sie auf Anypoint Studio, um es zu starten. Wenn Sie es zum ersten Mal starten, wird das folgende Fenster angezeigt:

Benutzeroberfläche von Anypoint Studio

Sobald Sie auf die Schaltfläche Gehe zu Arbeitsbereich klicken, gelangen Sie wie folgt zur Benutzeroberfläche von Anypoint Studio:

Schritte zum Erstellen einer Maultieranwendung

Führen Sie die folgenden Schritte aus, um Ihre Mule-Anwendung zu erstellen:

Neues Projekt erstellen

Der allererste Schritt zum Erstellen einer Mule-Anwendung besteht darin, ein neues Projekt zu erstellen. Dies kann durch Folgen des Pfades erfolgenFILE → NEW → Mule Project wie unten gezeigt -

Projekt benennen

Nachdem Sie wie oben beschrieben auf das neue Mule-Projekt geklickt haben, wird ein neues Fenster geöffnet, in dem Sie nach dem Projektnamen und anderen Spezifikationen gefragt werden. Geben Sie den Namen des Projekts an. 'TestAPP1'und klicken Sie dann auf die Schaltfläche Fertig stellen.

Sobald Sie auf die Schaltfläche "Fertig stellen" klicken, wird der für Ihr MuleProject erstellte Arbeitsbereich geöffnet ‘TestAPP1’. Sie können alle sehenEditors und Views im vorherigen Kapitel beschrieben.

Connector konfigurieren

Hier erstellen wir eine einfache Mule-Anwendung für den HTTP-Listener. Dazu müssen wir den HTTP-Listener-Connector aus der Mule-Palette ziehen und wie unten gezeigt in den Arbeitsbereich ablegen.

Jetzt müssen wir es konfigurieren. Klicken Sie nach der Connector-Konfiguration unter Grundeinstellungen wie oben gezeigt auf die grüne Farbe + Zeichen.

Wenn Sie auf OK klicken, gelangen Sie zurück zur Eigenschaftsseite des HTTP-Listeners. Jetzt müssen wir den Pfad unter der Registerkarte Allgemein angeben. In diesem speziellen Beispiel haben wir bereitgestellt/FirstAPP als Pfadname.

Set Payload Connector konfigurieren

Jetzt müssen wir einen Set Payload Connector nehmen. Wir müssen den Wert auch auf der Registerkarte "Einstellungen" wie folgt angeben:

This is my first Mule Applicationist der in diesem Beispiel angegebene Name.

Mule-Anwendung ausführen

Speichern Sie es jetzt und klicken Sie auf Run as Mule Application wie unten gezeigt -

Wir können es unter Konsole überprüfen, die die Anwendung wie folgt bereitstellt:

Es zeigt, dass Sie Ihre erste Mule-Anwendung erfolgreich erstellt haben.

Überprüfen der Maultieranwendung

Jetzt müssen wir testen, ob unsere App ausgeführt wird oder nicht. Go to POSTMAN, eine Chrome-App und geben Sie die URL ein: http:/localhost:8081. Es zeigt die Nachricht, die wir beim Erstellen der Mule-Anwendung bereitgestellt haben, wie unten gezeigt -

DataWeave ist im Grunde eine MuleSoft-Ausdruckssprache. Es wird hauptsächlich für den Zugriff auf und die Transformation der über eine Mule-Anwendung empfangenen Daten verwendet. Die Mule-Laufzeit ist für die Ausführung des Skripts und der Ausdrücke in unserer Mule-Anwendung verantwortlich. DataWeave ist stark in die Mule-Laufzeit integriert.

Funktionen der DataWeave-Sprache

Im Folgenden sind einige wichtige Funktionen der DataWeave-Sprache aufgeführt:

Daten können sehr einfach von einem Format in ein anderes umgewandelt werden. Zum Beispiel können wir application / json in application / xml umwandeln. Die Eingangsnutzlast ist wie folgt:

{
   "title": "MuleSoft",
   "author": " tutorialspoint.com ",
   "year": 2019
}

Es folgt der Code in DataWeave für die Transformation -

%dw 2.0
output application/xml
---
{
   order: {
      'type': 'Tutorial', 
      'title': payload.title, 
      'author': upper(payload.author), 
      'year': payload.year
   }
}

Als nächstes die output Nutzlast ist wie folgt -

<?xml version = '1.0' encoding = 'UTF-8'?>
<order>
   <type>Tutorial</type>
   <title>MuleSoft</title>
   <author>tutorialspoint.com</author>
   <year>2019</year>
</order>

Die Transformationskomponente kann zum Erstellen von Skripten verwendet werden, die sowohl einfache als auch komplexe Datentransformationen durchführen.

Wir können auf Teile des Mule-Ereignisses zugreifen und Kernfunktionen von DataWeave verwenden, die wir benötigen, da die meisten Mule-Nachrichtenprozessoren DataWeave-Ausdrücke unterstützen.

Voraussetzungen

Wir müssen die folgenden Voraussetzungen erfüllen, bevor wir DataWeave-Skripte auf unserem Computer verwenden können:

  • Anypoint Studio 7 ist erforderlich, um Dataweave-Skripte zu verwenden.

  • Nach der Installation von Anypoint Studio müssen wir ein Projekt mit einer Transform Message-Komponente einrichten, um DataWeave-Skripts verwenden zu können.

Schritte zur Verwendung von DataWeave Script mit Beispiel

Um DataWeave Scrip verwenden zu können, müssen Sie die folgenden Schritte ausführen:

Step 1

Zuerst müssen wir ein neues Projekt einrichten, wie wir es im vorherigen Kapitel getan haben File → New → Mule Project.

Step 2

Als nächstes müssen wir den Namen des Projekts angeben. In diesem Beispiel geben wir den Namen an:Mule_test_script.

Step 3

Jetzt müssen wir die ziehen Transform Message component von Mule Palette tab in canvas. Es wird wie folgt gezeigt -

Step 4

Als nächstes in der Transform Message componentKlicken Sie auf der Registerkarte auf Vorschau, um den Vorschaufenster zu öffnen. Wir können den Quellcodebereich erweitern, indem wir auf das leere Rechteck neben Vorschau klicken.

Step 5

Jetzt können wir mit der Skripterstellung in der DataWeave-Sprache beginnen.

Beispiel

Es folgt das einfache Beispiel für die Verkettung von zwei Zeichenfolgen zu einer -

Das obige DataWeave-Skript hat ein Schlüssel-Wert-Paar ({ myString: ("hello" ++ "World") }) Dadurch werden zwei Zeichenfolgen zu einer verknüpft.

Die Skriptmodule erleichtern Benutzern die Verwendung der Skriptsprache in Mule. In einfachen Worten kann das Skriptmodul benutzerdefinierte Logik austauschen, die in der Skriptsprache geschrieben ist. Skripte können als Implementierungen oder Transformatoren verwendet werden. Sie können zur Auswertung von Ausdrücken verwendet werden, dh zur Steuerung des Nachrichtenroutings.

Mule unterstützt die folgenden unterstützten Skriptsprachen:

  • Groovy
  • Python
  • JavaScript
  • Ruby

Wie installiere ich Scripting-Module?

Tatsächlich wird Anypoint Studio mit den Skriptmodulen geliefert. Wenn Sie das Modul nicht in der Mule-Palette finden, können Sie es mithilfe von hinzufügen+Add Module. Nach dem Hinzufügen können wir die Operationen des Skriptmoduls in unserer Mule-Anwendung verwenden.

Implementierungsbeispiel

Wie bereits erwähnt, müssen wir das Modul zum Erstellen eines Arbeitsbereichs per Drag & Drop in den Canvas-Bereich ziehen und in unserer Anwendung verwenden. Das Folgende ist ein Beispiel dafür -

Wir wissen bereits, wie die HTTP-Listener-Komponente konfiguriert wird. Daher werden wir uns mit der Konfiguration der Scripting-Module befassen. Wir müssen die folgenden Schritte ausführen, um das Skriptmodul zu konfigurieren -

Step 1

Suchen Sie in der Mule-Palette nach dem Scripting-Modul und ziehen Sie das EXECUTE Bedienung des Skriptmoduls in Ihrem Flow wie oben gezeigt.

Step 2

Öffnen Sie nun die Registerkarte Konfiguration ausführen, indem Sie darauf doppelklicken.

Step 3

Unter dem General Registerkarte müssen wir den Code in der Code text window wie unten gezeigt -

Step 4

Endlich müssen wir die wählen Enginevon der Ausführungskomponente. Die Liste der Motoren ist wie folgt -

  • Groovy
  • Nashorn(javaScript)
  • jython(Python)
  • jRuby(Ruby)

Das XML des obigen Ausführungsbeispiels im Konfigurations-XML-Editor lautet wie folgt:

<scripting:execute engine="jython" doc:name = "Script">
   <scripting:code>
      def factorial(n):
         if n == 0: return 1
      return n * factorial(n-1)
      result = factorial(10)
   </scripting:code>
</scripting:execute>

Nachrichtenquellen

Mule 4 verfügt über ein vereinfachtes Modell als Mule 3-Nachrichten, das es einfacher macht, mit Daten über Konnektoren hinweg konsistent zu arbeiten, ohne Informationen zu überschreiben. Im Mule 4-Nachrichtenmodell besteht jedes Mule-Ereignis aus zwei Dingen:a message and variables associated with it.

Eine Mule-Nachricht hat Nutzdaten und ihre Attribute, wobei das Attribut hauptsächlich aus Metadaten wie der Dateigröße besteht.

Und eine Variable enthält die beliebigen Benutzerinformationen wie Operationsergebnis, Hilfswerte usw.

Eingehende

Die eingehenden Eigenschaften in Mule 3 werden jetzt zu Attributen in Mule 4. Wie wir wissen, speichern eingehende Eigenschaften zusätzliche Informationen über die Nutzdaten, die über eine Nachrichtenquelle abgerufen werden. Dies erfolgt jetzt in Mule 4 mithilfe von Attributen. Attribute haben folgende Vorteile:

  • Mithilfe von Attributen können wir leicht erkennen, welche Daten verfügbar sind, da Attribute stark typisiert sind.

  • Wir können leicht auf Informationen zugreifen, die in Attributen enthalten sind.

Es folgt das Beispiel einer typischen Nachricht in Mule 4 -

Ausgehend

Die ausgehenden Eigenschaften in Mule 3 müssen von Mule-Konnektoren und -Transporten explizit angegeben werden, um zusätzliche Daten zu senden. In Mule 4 kann jeder von ihnen separat festgelegt werden, wobei für jeden ein DataWeave-Ausdruck verwendet wird. Es entsteht keine Nebenwirkung im Hauptstrom.

Im Folgenden führt der DataWeave-Ausdruck beispielsweise eine HTTP-Anforderung aus und generiert Header und Abfrageparameter, ohne dass Nachrichteneigenschaften festgelegt werden müssen. Dies wird im folgenden Code gezeigt -

<http:request path = "M_issue" config-ref="http" method = "GET">
   <http:headers>#[{'path':'input/issues-list.json'}]</http:headers>
   <http:query-params>#[{'provider':'memory-provider'}]</http:query-params>
</http:request>

Nachrichtenprozessor

Sobald Mule eine Nachricht von einer Nachrichtenquelle empfängt, beginnt die Arbeit des Nachrichtenprozessors. Das Maultier verwendet einen oder mehrere Nachrichtenprozessoren, um die Nachricht durch einen Fluss zu verarbeiten. Die Hauptaufgabe des Nachrichtenprozessors besteht darin, die Nachricht beim Durchlaufen des Mule-Flusses zu transformieren, zu filtern, anzureichern und zu verarbeiten.

Kategorisierung des Maultierprozessors

Es folgen die Kategorien von Mule Processor, basierend auf Funktionen -

  • Connectors- Diese Nachrichtenprozessoren senden und empfangen Daten. Sie verbinden Daten auch über Standardprotokolle oder APIs von Drittanbietern mit externen Datenquellen.

  • Components - Diese Nachrichtenprozessoren sind flexibel und führen Geschäftslogik aus, die in verschiedenen Sprachen wie Java, JavaScript, Groovy, Python oder Ruby implementiert ist.

  • Filters - Sie filtern die Nachrichten und ermöglichen, dass nur bestimmte Nachrichten basierend auf bestimmten Kriterien weiterhin in einem Flow verarbeitet werden.

  • Routers - Dieser Nachrichtenprozessor wird verwendet, um den Nachrichtenfluss zum Weiterleiten, erneuten Sequenzieren oder Teilen zu steuern.

  • Scopes - Sie verpacken im Grunde genommen Codefragmente, um ein feinkörniges Verhalten innerhalb eines Flusses zu definieren.

  • Transformers - Die Rolle von Transformatoren besteht darin, den Nachrichtennutzlasttyp und das Datenformat zu konvertieren, um die Kommunikation zwischen Systemen zu erleichtern.

  • Business Events - Sie erfassen im Wesentlichen Daten, die mit Leistungsindikatoren verknüpft sind.

  • Exception strategies - Diese Nachrichtenprozessoren behandeln Fehler jeglicher Art, die während der Nachrichtenverarbeitung auftreten.

Eine der wichtigsten Fähigkeiten von Mule besteht darin, dass es Routing, Transformation und Verarbeitung mit den Komponenten durchführen kann, weshalb die Konfigurationsdatei der Mule-Anwendung, die verschiedene Elemente kombiniert, sehr groß ist.

Im Folgenden sind die von Mule bereitgestellten Arten von Konfigurationsmustern aufgeführt:

  • Einfaches Servicemuster
  • Bridge
  • Validator
  • HTTP-Proxy
  • WS-Proxy

Komponente konfigurieren

In Anypoint Studio können Sie die folgenden Schritte ausführen, um eine Komponente zu konfigurieren:

Step 1

Wir müssen die Komponente ziehen, die wir in unserer Mule-Anwendung verwenden möchten. Zum Beispiel verwenden wir hier die HTTP-Listener-Komponente wie folgt:

Step 2

Doppelklicken Sie anschließend auf die Komponente, um das Konfigurationsfenster aufzurufen. Für den HTTP-Listener wird es unten gezeigt -

Step 3

Wir können die Komponente gemäß den Anforderungen unseres Projekts konfigurieren. Nehmen wir zum Beispiel an, wir haben für die HTTP-Listener-Komponente -

Kernkomponenten sind einer der wichtigen Bausteine ​​des Arbeitsablaufs in der Mule-App. Die Logik zum Verarbeiten eines Mule-Ereignisses wird von diesen Kernkomponenten bereitgestellt. Um in Anypoint Studio auf diese Kernkomponenten zuzugreifen, können Sie wie unten gezeigt auf den Kern der Maultierpalette klicken.

Es folgen verschiedene core components and their working in Mule 4 - -

Benutzerdefinierte Geschäftsereignisse

Diese Kernkomponente wird für die Erfassung von Informationen zu Flows sowie von Nachrichtenprozessoren verwendet, die die Geschäftstransaktionen in der Mule-App verarbeiten. Mit anderen Worten, wir können die benutzerdefinierte Geschäftsereigniskomponente verwenden, um Folgendes in unseren Arbeitsablauf aufzunehmen:

  • Metadata
  • Key Performance Indicators (KPIs)

Wie füge ich KPIs hinzu?

Im Folgenden finden Sie die Schritte zum Hinzufügen von KPIs zu unserem Flow in der Mule-App:

Step 1 - Folgen Sie Mule Palette → Core → Components → Custom Business Event, um einem Arbeitsablauf in Ihrer Mule-App eine benutzerdefinierte Geschäftsereigniskomponente hinzuzufügen.

Step 2 - Klicken Sie auf die Komponente, um sie zu öffnen.

Step 3 - Jetzt müssen wir Werte für Anzeigename und Ereignisname angeben.

Step 4 - Um Informationen aus der Nachrichtennutzlast zu erfassen, fügen Sie KPIs wie folgt hinzu: -

  • Geben Sie einen Namen (Schlüssel) für den KPI ( Tracking: Metadatenelement ) und einen Wert an. Der Name wird in der Suchoberfläche von Runtime Manager verwendet.

  • Geben Sie einen Wert an, der ein beliebiger Mule-Ausdruck sein kann.

Beispiel

Die folgende Tabelle enthält die Liste der KPIs mit Name und Wert -

Name Ausdruck / Wert
Student RollNo # [Nutzlast ['RollNo']]
Name des Studenten # [Nutzlast ['Name']]

Dynamische Auswertung

Diese Kernkomponente wird zum dynamischen Auswählen eines Skripts in der Mule-App verwendet. Wir können auch Hardcore-Skripte über die Transform Message-Komponente verwenden, aber die Verwendung der Dynamic Evaluate-Komponente ist ein besserer Weg. Diese Kernkomponente funktioniert wie folgt:

  • Zunächst wird ein Ausdruck ausgewertet, der zu einem anderen Skript führen soll.
  • Dann wertet es dieses Skript für das Endergebnis aus.

Auf diese Weise können wir das Skript dynamisch auswählen, anstatt es fest zu codieren.

Beispiel

Im Folgenden finden Sie ein Beispiel für die Auswahl eines Skripts aus der Datenbank über einen ID-Abfrageparameter und das Speichern dieses Skripts in einer Variablen namens MyScript . Jetzt greift die Dynamic-Evaluate-Komponente auf die Variable zu, um die Skripte aufzurufen, damit sie eine Namensvariable hinzufügen kannUName Abfrageparameter.

Die XML-Konfiguration des Flusses ist unten angegeben -

<flow name = "DynamicE-example-flow">
   <http:listener config-ref = "HTTP_Listener_Configuration" path = "/"/>
   <db:select config-ref = "dbConfig" target = "myScript">
      <db:sql>#["SELECT script FROM SCRIPTS WHERE ID = 
         $(attributes.queryParams.Id)"]
      </db:sql>
   </db:select>
   <ee:dynamic-evaluate expression = "#[vars.myScript]">
      <ee:parameters>#[{name: attributes.queryParams.UName}]</ee:parameters>
   </ee:dynamic-evaluate>
</flow>

Das Skript kann Kontextvariablen wie Nachricht, Nutzlast, Variablen oder Attribute verwenden. Wenn Sie jedoch eine benutzerdefinierte Kontextvariable hinzufügen möchten, müssen Sie eine Reihe von Schlüssel-Wert-Paaren bereitstellen.

Dynamische Auswertung konfigurieren

Die folgende Tabelle bietet eine Möglichkeit zum Konfigurieren der Dynamic Evaluate-Komponente -

Feld Wert Beschreibung Beispiel
Ausdruck DataWeave-Ausdruck Es gibt den Ausdruck an, der im endgültigen Skript ausgewertet werden soll. expression = "# [vars.generateOrderScript]"
Parameter DataWeave-Ausdruck Es gibt Schlüssel-Wert-Paare an. # [{joiner: 'und', id: payload.user.id}]

Durchflussreferenzkomponente

Wenn Sie das Mule-Ereignis an einen anderen Flow oder Sub-Flow und zurück innerhalb derselben Mule-App weiterleiten möchten, ist die Flow-Referenzkomponente die richtige Option.

Eigenschaften

Im Folgenden sind die Eigenschaften dieser Kernkomponente aufgeführt:

  • Diese Kernkomponente ermöglicht es uns, den gesamten referenzierten Fluss wie eine einzelne Komponente im aktuellen Fluss zu behandeln.

  • Es unterteilt die Mule-Anwendung in diskrete und wiederverwendbare Einheiten. Ein Flow listet beispielsweise regelmäßig Dateien auf. Es kann auf einen anderen Fluss verweisen, der die Ausgabe der Listenoperation verarbeitet.

  • Auf diese Weise können wir nicht die gesamten Verarbeitungsschritte anhängen, sondern Flow-Referenzen anhängen, die auf den Verarbeitungsablauf verweisen. Der folgende Screenshot zeigt, dass die Flow Reference Core-Komponente auf einen Unterfluss mit dem Namen zeigtProcessFiles.

Arbeiten

Die Funktionsweise der Flow Ref-Komponente kann anhand des folgenden Diagramms verstanden werden:

Das Diagramm zeigt die Verarbeitungsreihenfolge in der Mule-Anwendung, wenn ein Flow auf einen anderen Flow in derselben Anwendung verweist. Wenn der Hauptarbeitsablauf in der Mule-Anwendung ausgelöst wird, durchläuft das Mule-Ereignis den gesamten Ablauf und führt den Ablauf aus, bis das Mule-Ereignis die Flussreferenz erreicht.

Nach Erreichen der Flussreferenz führt das Mule-Ereignis den referenzierten Fluss von Anfang bis Ende aus. Sobald das Mule-Ereignis die Ausführung des Ref-Flusses beendet hat, kehrt es zum Hauptfluss zurück.

Beispiel

Zum besseren Verständnis let us use this component in Anypoint Studio. In diesem Beispiel verwenden wir den HTTP-Listener, um eine Nachricht zu erhalten, wie im vorherigen Kapitel. So können wir die Komponente ziehen und ablegen und konfigurieren. In diesem Beispiel müssen wir jedoch eine Subflow-Komponente hinzufügen und die Payload-Komponente darunter festlegen, wie unten gezeigt.

Als nächstes müssen wir konfigurieren Set Payloaddurch Doppelklick darauf. Hier geben wir den Wert "Subflow ausgeführt" an, wie unten gezeigt -

Nach erfolgreicher Konfiguration der Unterflusskomponente muss die Flussreferenzkomponente nach "Nutzlast des Hauptflusses festlegen" festgelegt werden, die wir wie unten gezeigt aus der Maultierpalette ziehen und ablegen können.

Als Nächstes müssen wir beim Konfigurieren der Flow-Referenzkomponente auf der Registerkarte "Allgemein" den Flow-Namen auswählen (siehe unten).

Speichern Sie nun diese Anwendung und führen Sie sie aus. Um dies zu testen, gehen Sie zu POSTMAN und geben Sie einhttp:/localhost:8181/FirstAPP In der URL-Leiste wird die Meldung Subflow ausgeführt.

Logger-Komponente

Die Kernkomponente namens Logger hilft uns beim Überwachen und Debuggen unserer Mule-Anwendung, indem wichtige Informationen wie Fehlermeldungen, Statusbenachrichtigungen, Nutzdaten usw. protokolliert werden. In AnyPoint Studio werden sie in der angezeigt Console.

Vorteile

Im Folgenden sind einige Vorteile der Logger-Komponente aufgeführt:

  • Wir können diese Kernkomponente überall im Arbeitsablauf hinzufügen.
  • Wir können es so konfigurieren, dass eine von uns angegebene Zeichenfolge protokolliert wird.
  • Wir können es für die Ausgabe eines von uns geschriebenen DataWeave-Ausdrucks konfigurieren.
  • Wir können es auch für eine beliebige Kombination von Zeichenfolgen und Ausdrücken konfigurieren.

Beispiel

Das folgende Beispiel zeigt die Meldung "Hello World" in "Set Payload" in einem Browser an und protokolliert die Meldung ebenfalls.

Im Folgenden finden Sie die XML-Konfiguration des Ablaufs im obigen Beispiel:

<http:listener-config name = "HTTP_Listener_Configuration" host = "localhost" port = "8081"/>
<flow name = "mymuleprojectFlow">
   <http:listener config-ref="HTTP_Listener_Configuration" path="/"/>
   <set-payload value="Hello World"/>
   <logger message = "#[payload]" level = "INFO"/>
</flow>

Nachrichtenkomponente übertragen

Mit der Nachrichtenkomponente transformieren, auch Übertragungskomponente genannt, können wir die Eingabedaten in ein neues Ausgabeformat konvertieren.

Methoden zum Erstellen von Transformation

Wir können unsere Transformation mit Hilfe der folgenden zwei Methoden aufbauen:

Drag-and-Drop Editor (Graphical View)- Dies ist die erste und am häufigsten verwendete Methode, um unsere Transformation aufzubauen. Bei dieser Methode können wir den Visual Mapper dieser Komponente verwenden, um die Elemente der eingehenden Datenstruktur per Drag & Drop zu verschieben. Im folgenden Diagramm zeigen beispielsweise zwei Baumansichten die erwarteten Metadatenstrukturen der Eingabe und Ausgabe. Linien, die die Eingabe mit dem Ausgabefeld verbinden, repräsentieren die Zuordnung zwischen zwei Baumansichten.

Script View- Die visuelle Zuordnung von Transformation kann auch mit Hilfe von DataWeave, einer Sprache für Mule-Code, dargestellt werden. Wir können einige erweiterte Transformationen wie Aggregation, Normalisierung, Gruppierung, Verknüpfung, Partitionierung, Schwenken und Filtern codieren. Das Beispiel ist unten angegeben -

Diese Kernkomponente akzeptiert grundsätzlich Eingabe- und Ausgabemetadaten für eine Variable, ein Attribut oder eine Nachrichtennutzlast. Wir können formatspezifische Ressourcen für Folgendes bereitstellen:

  • CSV
  • Schema
  • Flatfile-Schema
  • JSON
  • Objektklasse
  • Einfacher Typ
  • XML-Schema
  • Name und Typ der Excel-Spalte
  • Name und Typ der Spalte mit fester Breite

Zu den Endpunkten gehören im Wesentlichen diejenigen Komponenten, die die Verarbeitung in einem Arbeitsablauf der Mule-Anwendung auslösen oder initiieren. Sie heißenSource in Anypoint Studio und Triggersim Design Center von Mule. Ein wichtiger Endpunkt in Mule 4 istScheduler component.

Scheduler-Endpunkt

Diese Komponente arbeitet mit zeitbasierten Bedingungen. Dies bedeutet, dass wir einen Fluss auslösen können, wenn eine zeitbasierte Bedingung erfüllt ist. Ein Scheduler kann beispielsweise ein Ereignis auslösen, um alle 10 Sekunden einen Mule-Arbeitsablauf zu starten. Wir können auch einen flexiblen Cron-Ausdruck verwenden, um einen Scheduler-Endpunkt auszulösen.

Wichtige Punkte zum Scheduler

Bei der Verwendung des Scheduler-Ereignisses müssen wir uns um einige wichtige Punkte kümmern, wie unten angegeben -

  • Der Scheduler-Endpunkt folgt der Zeitzone des Computers, auf dem die Mule-Laufzeit ausgeführt wird.

  • Angenommen, wenn eine Mule-Anwendung in CloudHub ausgeführt wird, folgt der Scheduler der Zeitzone der Region, in der der CloudHub-Worker ausgeführt wird.

  • Zu jedem Zeitpunkt kann nur ein vom Scheduler-Endpunkt ausgelöster Flow aktiv sein.

  • Im Mule-Laufzeitcluster wird der Scheduler-Endpunkt nur auf dem Primärknoten ausgeführt oder ausgelöst.

Möglichkeiten zum Konfigurieren eines Schedulers

Wie oben erläutert, können wir einen Scheduler-Endpunkt so konfigurieren, dass er in einem festen Intervall ausgelöst wird, oder wir können auch einen Cron-Ausdruck angeben.

Parameter zum Konfigurieren eines Schedulers (für festes Intervall)

Im Folgenden finden Sie die Parameter zum Festlegen eines Schedulers zum Auslösen eines Flusses in regelmäßigen Abständen:

Frequency- Grundsätzlich wird beschrieben, mit welcher Frequenz der Scheduler-Endpunkt den Mule-Flow auslöst. Die Zeiteinheit hierfür kann im Feld Zeiteinheit ausgewählt werden. Wenn Sie hierfür keine Werte angeben, wird der Standardwert 1000 verwendet. Wenn Sie andererseits 0 oder einen negativen Wert angeben, wird auch der Standardwert verwendet.

Start Delay- Dies ist die Zeit, die wir warten müssen, bevor der Mule-Flow zum ersten Mal ausgelöst wird, sobald die Anwendung gestartet wird. Der Wert der Startverzögerung wird in derselben Zeiteinheit wie die Frequenz ausgedrückt. Der Standardwert ist 0.

Time Unit- Es beschreibt die Zeiteinheit für Frequenz und Startverzögerung. Die möglichen Werte der Zeiteinheit sind Millisekunden, Sekunden, Minuten, Stunden, Tage. Der Standardwert ist Millisekunden.

Parameter zum Konfigurieren eines Schedulers (für Cron-Ausdruck)

Tatsächlich ist Cron ein Standard zur Beschreibung von Zeit- und Datumsinformationen. Wenn Sie den flexiblen Cron-Ausdruck verwenden, um den Scheduler auszulösen, verfolgt der Scheduler-Endpunkt jede Sekunde und erstellt ein Mule-Ereignis, wenn der Quartz Cron-Ausdruck mit der Zeit-Datum-Einstellung übereinstimmt. Mit dem Cron-Ausdruck kann das Ereignis nur einmal oder in regelmäßigen Abständen ausgelöst werden.

Die folgende Tabelle gibt den Datums- / Uhrzeitausdruck von sechs erforderlichen Einstellungen an -

Attribut Wert
Sekunden 0-59
Protokoll 0-59
Std 0-23
Monatstag 1-31
Monat 1-12 oder JAN-DEZ
Wochentag 1-7 oder SUN-SAT

Einige Beispiele für Quarz-Cron-Ausdrücke, die vom Scheduler-Endpunkt unterstützt werden, sind nachstehend aufgeführt:

  • ½ * * * * ? - bedeutet, dass der Scheduler jeden Tag alle 2 Sekunden des Tages ausgeführt wird.

  • 0 0/5 16 ** ? - bedeutet, dass der Scheduler alle 5 Minuten täglich ab 16 Uhr und bis 16:55 Uhr ausgeführt wird.

  • 1 1 1 1, 5 * ? - bedeutet, dass der Planer jedes Jahr den ersten Tag im Januar und den ersten Tag im April ausführt.

Beispiel

Der folgende Code protokolliert jede Sekunde die Meldung "hi" -

<flow name = "cronFlow" doc:id = "ae257a5d-6b4f-4006-80c8-e7c76d2f67a0">
   <doc:name = "Scheduler" doc:id = "e7b6scheduler8ccb-c6d8-4567-87af-aa7904a50359">
      <scheduling-strategy>
         <cron expression = "* * * * * ?" timeZone = "America/Los_Angeles"/>
      </scheduling-strategy>
   </scheduler>
   <logger level = "INFO" doc:name = "Logger" 
      doc:id = "e2626dbb-54a9-4791-8ffa-b7c9a23e88a1" message = '"hi"'/>
</flow>

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.

REST-Webdienst

Die vollständige Form von REST ist Representational State Transfer, das an HTTP gebunden ist. Wenn Sie also eine Anwendung entwerfen möchten, die ausschließlich im Web verwendet wird, ist REST die beste Option.

Konsumieren von RESTful Web Services

Im folgenden Beispiel verwenden wir die REST-Komponente und einen öffentlichen RESTful-Service von Mule Soft mit dem Namen American Flights Details. Es hat verschiedene Details, aber wir werden GET verwenden:http://training-american-ws.cloudhub.io/api/flightsdas wird alle Flugdetails zurückgeben. Wie bereits erwähnt, ist REST an HTTP gebunden, daher benötigen wir zwei HTTP-Komponenten - eine ist Listener und eine andere Request, auch für diese Anwendung. Der folgende Screenshot zeigt die Konfiguration für den HTTP-Listener -

Argumente konfigurieren und übergeben

Die Konfiguration für die HTTP-Anfrage ist unten angegeben -

Gemäß unserem Arbeitsbereich haben wir jetzt den Logger verwendet, damit er wie folgt konfiguriert werden kann:

Auf der Registerkarte "Nachricht" schreiben wir Code, um die Nutzdaten in Zeichenfolgen umzuwandeln.

Testen der Anwendung

Speichern und führen Sie nun die Anwendung aus und gehen Sie zu POSTMAN, um die endgültige Ausgabe wie unten gezeigt zu überprüfen.

Sie können sehen, dass die Flugdetails mithilfe der REST-Komponente angezeigt werden.

SOAP-Komponente

Die vollständige Form von SOAP ist Simple Object Access Protocol. Grundsätzlich handelt es sich um eine Messaging-Protokollspezifikation für den Informationsaustausch bei der Implementierung von Webdiensten. Als Nächstes verwenden wir die SOAP-API in Anypoint Studio, um über Webdienste auf die Informationen zuzugreifen.

Konsumieren von SOAP-basierten Webdiensten

In diesem Beispiel verwenden wir einen öffentlichen SOAP-Dienst mit dem Namen Country Info Service, der die Dienste für Länderinformationen beibehält. Die WSDL-Adresse lautet:http://www.oorsprong.org/websamples.countryinfo/countryinfoservice.wso?WSDL

Zuerst müssen wir den SOAP-Verbrauch aus der Mule-Palette in unsere Zeichenfläche ziehen, wie unten gezeigt -

Argumente konfigurieren und übergeben

Als nächstes müssen wir die HTTP-Anforderung wie im obigen Beispiel wie unten angegeben konfigurieren -

Jetzt müssen wir auch den Web Service Consumer wie unten gezeigt konfigurieren -

An der Stelle des WSDL-Speicherorts müssen wir die oben angegebene Webadresse der WSDL angeben (für dieses Beispiel). Sobald Sie die Webadresse angegeben haben, sucht Studio selbst nach Dienst, Port und Adresse. Sie müssen es nicht manuell bereitstellen.

Antwort vom Webdienst übertragen

Dazu müssen wir einen Logger in den Mule-Flow einfügen und ihn so konfigurieren, dass er die Nutzlast wie unten gezeigt liefert.

Testen der Anwendung

Speichern Sie die Anwendung, führen Sie sie aus und rufen Sie Google Chrome auf, um die endgültige Ausgabe zu überprüfen. Arthttp://localhist:8081/helloSOAP (für dieses Beispiel) und es wird der Ländername nach Code angezeigt, wie im folgenden Screenshot gezeigt -

Die neue Mule-Fehlerbehandlung ist eine der größten und wichtigsten Änderungen in Mule 4. Die neue Fehlerbehandlung mag komplex erscheinen, ist jedoch besser und effizienter. In diesem Kapitel werden Komponenten von Mule-Fehlern, Fehlertypen, Kategorien von Mule-Fehlern und Komponenten zur Behandlung von Mule-Fehlern erläutert.

Komponenten des Maultierfehlers

Der Mule-Fehler ist das Ergebnis eines Mule-Ausnahmefehlers mit den folgenden Komponenten:

Beschreibung

Es ist eine wichtige Komponente des Mule-Fehlers, die eine Beschreibung des Problems enthält. Sein Ausdruck ist wie folgt -

#[error.description]

Art

Die Typkomponente des Mule-Fehlers wird verwendet, um das Problem zu charakterisieren. Es ermöglicht auch das Routing innerhalb eines Fehlerbehandlers. Sein Ausdruck ist wie folgt -

#[error.errorType]

Ursache

Die Cause-Komponente des Mule-Fehlers gibt das zugrunde liegende Java-Throwable an, das den Fehler verursacht. Sein Ausdruck ist wie folgt -

#[error.cause]

Botschaft

Die Nachrichtenkomponente des Mule-Fehlers zeigt eine optionale Nachricht bezüglich des Fehlers an. Sein Ausdruck ist wie folgt -

#[error.errorMessage]

Untergeordnete Fehler

Die Child Child- Komponente von Mule error bietet eine optionale Sammlung innerer Fehler. Diese inneren Fehler werden hauptsächlich von Elementen wie Scatter-Gather verwendet, um aggregierte Routenfehler bereitzustellen. Sein Ausdruck ist wie folgt -

#[error.childErrors]

Beispiel

Im Falle eines Fehlers der HTTP-Anforderung mit einem 401-Statuscode lauten die Mule-Fehler wie folgt:

Description: HTTP GET on resource ‘http://localhost:8181/TestApp’ 
failed: unauthorized (401)
Type: HTTP:UNAUTHORIZED
Cause: a ResponseValidatorTypedException instance
Error Message: { "message" : "Could not authorize the user." }
Sr.Nr. Fehlertyp und Beschreibung
1

TRANSFORMATION

Dieser Fehlertyp zeigt an, dass beim Transformieren eines Werts ein Fehler aufgetreten ist. Die Transformation ist eine interne Transformation von Mule Runtime und nicht die DataWeave-Transformationen.

2

EXPRESSION

Diese Art von Fehlertyp zeigt an, dass beim Auswerten eines Ausdrucks ein Fehler aufgetreten ist.

3

VALIDATION

Diese Art von Fehlertyp zeigt an, dass ein Validierungsfehler aufgetreten ist.

4

DUPLICATE_MESSAGE

Eine Art Validierungsfehler, der auftritt, wenn eine Nachricht zweimal verarbeitet wird.

5

REDELIVERY_EXHAUSTED

Diese Art von Fehlertyp tritt auf, wenn die maximalen Versuche, eine Nachricht von einer Quelle erneut zu verarbeiten, erschöpft sind.

6

CONNECTIVITY

Dieser Fehlertyp weist auf ein Problem beim Herstellen einer Verbindung hin.

7

ROUTING

Dieser Fehlertyp zeigt an, dass beim Weiterleiten einer Nachricht ein Fehler aufgetreten ist.

8

SECURITY

Dieser Fehlertyp zeigt an, dass ein Sicherheitsfehler aufgetreten ist. Beispielsweise wurden ungültige Anmeldeinformationen empfangen.

9

STREAM_MAXIMUM_SIZE_EXCEEDED

Dieser Fehlertyp tritt auf, wenn die maximal zulässige Größe für einen Stream erschöpft ist.

10

TIMEOUT

Es zeigt das Zeitlimit während der Verarbeitung einer Nachricht an.

11

UNKNOWN

Dieser Fehlertyp zeigt an, dass ein unerwarteter Fehler aufgetreten ist.

12

SOURCE

Es repräsentiert das Auftreten eines Fehlers in der Quelle des Flusses.

13

SOURCE_RESPONSE

Es repräsentiert das Auftreten eines Fehlers in der Quelle des Flusses während der Verarbeitung einer erfolgreichen Antwort.

Im obigen Beispiel sehen Sie die Nachrichtenkomponente von mule error.

Fehlertypen

Lassen Sie uns die Fehlertypen anhand ihrer Eigenschaften verstehen -

  • Das erste Merkmal von Mule-Fehlertypen ist, dass es aus beiden besteht: a namespace and an identifier. Dies ermöglicht es uns, die Typen nach ihrer Domäne zu unterscheiden. Im obigen Beispiel lautet der FehlertypHTTP: UNAUTHORIZED.

  • Das zweite und wichtige Merkmal ist, dass der Fehlertyp einen übergeordneten Typ haben kann. Zum Beispiel der FehlertypHTTP: UNAUTHORIZED hat MULE:CLIENT_SECURITY als Elternteil, der wiederum auch einen Elternteil namens hat MULE:SECURITY. Dieses Merkmal legt den Fehlertyp als Spezifikation eines globaleren Elements fest.

Arten von Fehlertypen

Es folgen die Kategorien, unter die alle Fehler fallen -

IRGENDEIN

Die Fehler in dieser Kategorie sind die Fehler, die in einem Flow auftreten können. Sie sind nicht so schwer und können leicht gehandhabt werden.

KRITISCH

Die Fehler in dieser Kategorie sind die schwerwiegenden Fehler, die nicht behandelt werden können. Es folgt die Liste der Fehlertypen unter dieser Kategorie -

Sr.Nr. Fehlertyp und Beschreibung
1

OVERLOAD

Dieser Fehlertyp zeigt an, dass ein Fehler aufgrund eines Überlastungsproblems aufgetreten ist. In diesem Fall wird die Ausführung abgelehnt.

2

FATAL_JVM_ERROR

Diese Art von Fehlertyp zeigt das Auftreten eines schwerwiegenden Fehlers an. Zum Beispiel Stapelüberlauf.

CUSTOM-Fehlertyp

Die CUSTOM-Fehlertypen sind die von uns definierten Fehler. Sie können beim Mapping oder beim Auslösen der Fehler definiert werden. Wir müssen diesen Fehlertypen einen bestimmten benutzerdefinierten Namespace zuweisen, um sie von den anderen vorhandenen Fehlertypen in der Mule-Anwendung zu unterscheiden. In einer Mule-Anwendung, die HTTP verwendet, können wir beispielsweise HTTP nicht als benutzerdefinierten Fehlertyp verwenden.

Kategorien von Maultierfehlern

Im weitesten Sinne können die Fehler in Mule in zwei Kategorien unterteilt werden, nämlich Messaging Errors and System Errors.

Messaging-Fehler

Diese Kategorie von Maultierfehlern hängt mit dem Maultierfluss zusammen. Immer wenn ein Problem innerhalb eines Mule-Flusses auftritt, gibt Mule einen Nachrichtenfehler aus. Wir können uns einrichtenOn Error Komponente innerhalb der Fehlerbehandlungskomponente, um diese Mule-Fehler zu behandeln.

Systemfehler

Ein Systemfehler weist auf eine Ausnahme hin, die auf Systemebene auftritt. Wenn kein Mule-Ereignis vorliegt, wird der Systemfehler von einem Systemfehlerbehandler behandelt. Die folgenden Arten von Ausnahmen werden von einem Systemfehlerbehandler behandelt:

  • Ausnahme, die während eines Anwendungsstarts auftritt.
  • Ausnahme, die auftritt, wenn eine Verbindung zu einem externen System fehlschlägt.

Im Falle eines Systemfehlers sendet Mule eine Fehlerbenachrichtigung an die registrierten Listener. Es protokolliert auch den Fehler. Auf der anderen Seite führt Mule eine Wiederverbindungsstrategie aus, wenn der Fehler durch einen Verbindungsfehler verursacht wurde.

Umgang mit Maultierfehlern

Mule hat zwei Fehlerbehandlungsroutinen zur Behandlung der Fehler:

On-Error-Fehlerbehandlungsroutinen

Der erste Mule-Fehlerbehandler ist die On-Error-Komponente, die die Arten von Fehlern definiert, die sie behandeln können. Wie bereits erwähnt, können wir On-Error-Komponenten innerhalb der bereichsähnlichen Error Handler-Komponente konfigurieren. Jeder Mule-Flow enthält nur einen Fehlerhandler, aber dieser Fehlerhandler kann so viele On-Error-Bereiche enthalten, wie wir benötigen. Die Schritte zur Behandlung des Mule-Fehlers innerhalb des Flusses mithilfe der On-Error-Komponente lauten wie folgt:

  • Erstens stoppt die normale Flussausführung, wenn ein Mule-Flow einen Fehler auslöst.

  • Als nächstes wird der Prozess auf die übertragen Error Handler Component das haben schon On Error component um die Fehlertypen und Ausdrücke abzugleichen.

  • Zuletzt leitet die Fehlerbehandlungskomponente den Fehler an die erste weiter On Error scope das entspricht dem Fehler.

Im Folgenden sind die beiden Arten von On-Error-Komponenten aufgeführt, die von Mule unterstützt werden:

On-Error Propagate

On-Error Propagate-Komponente wird ausgeführt, gibt den Fehler jedoch an die nächste Ebene weiter und unterbricht die Ausführung des Besitzers. Die Transaktion wird zurückgesetzt, wenn sie von verarbeitet wirdOn Error Propagate Komponente.

On-Error Weiter

Wie die On-Error Propagate-Komponente führt auch die On-Error Continue-Komponente die Transaktion aus. Die einzige Bedingung ist, dass diese Komponente das Ergebnis der Ausführung als Ergebnis ihres Eigentümers verwendet, wenn der Eigentümer die Ausführung erfolgreich abgeschlossen hat. Die Transaktion wird festgeschrieben, wenn sie von der On-Error Continue-Komponente verarbeitet wird.

Versuchen Sie Scope Component

Try Scope ist eine von vielen neuen Funktionen, die in Mule 4 verfügbar sind. Es funktioniert ähnlich wie der Try-Block von JAVA, in dem wir den Code eingeschlossen haben, der möglicherweise eine Ausnahme darstellt, sodass er behandelt werden kann, ohne den gesamten Code zu beschädigen.

Wir können einen oder mehrere Mule-Ereignisprozessoren in Try Scope einbinden. Anschließend fängt try scope alle von diesen Ereignisprozessoren ausgelösten Ausnahmen ab und behandelt sie. Die Hauptarbeit von try scope dreht sich um eine eigene Fehlerbehandlungsstrategie, die die Fehlerbehandlung für die innere Komponente anstelle des gesamten Ablaufs unterstützt. Deshalb müssen wir den Fluss nicht in einen separaten Fluss extrahieren.

Example

Das Folgende ist ein Beispiel für die Verwendung von try scope -

Konfigurieren des Versuchsbereichs für die Verarbeitung von Transaktionen

Wie wir wissen, besteht eine Transaktion aus einer Reihe von Aktionen, die niemals teilweise ausgeführt werden sollten. Alle Operationen im Rahmen einer Transaktion werden im selben Thread ausgeführt. Wenn ein Fehler auftritt, sollte dies zu einem Rollback oder einem Commit führen. Wir können den try-Bereich folgendermaßen konfigurieren, sodass untergeordnete Operationen als Transaktion behandelt werden.

  • INDIFFERENT [Default]- Wenn wir diese Konfiguration beim Try-Block auswählen, werden die untergeordneten Aktionen nicht als Transaktion behandelt. In diesem Fall verursacht ein Fehler weder ein Rollback noch Commits.

  • ALWAYS_BEGIN - Es zeigt an, dass bei jeder Ausführung des Bereichs eine neue Transaktion gestartet wird.

  • BEGIN_OR_JOIN- Es zeigt an, dass, wenn die aktuelle Verarbeitung des Flusses bereits eine Transaktion gestartet hat, diese beitreten soll. Andernfalls starten Sie eine neue.

Bei jedem Projekt ist die Tatsache, dass die Ausnahmen zwangsläufig eintreten. Aus diesem Grund ist es wichtig, Ausnahmen abzufangen, zu kategorisieren und zu behandeln, damit das System / die Anwendung nicht in einem inkonsistenten Zustand bleibt. Es gibt eine Standardausnahmestrategie, die implizit auf alle Mule-Anwendungen angewendet wird. Das automatische Zurücksetzen einer ausstehenden Transaktion ist die Standardausnahmestrategie.

Ausnahmen bei Mule

Bevor wir uns eingehend mit außergewöhnlichem Umgang befassen, sollten wir verstehen, welche Art von Ausnahmen auftreten können, sowie drei grundlegende Fragen, die ein Entwickler beim Entwerfen von Ausnahmebehandlungsroutinen haben muss.

Welcher Transport ist wichtig?

Diese Frage ist vor dem Entwerfen von Ausnahmebehandlungsroutinen von großer Relevanz, da nicht alle Transporte die Transnationalität unterstützen.

File oder HTTPunterstützt keine Transaktionen. Wenn in diesen Fällen eine Ausnahme auftritt, müssen wir sie daher manuell verwalten.

DatabasesTransaktionen unterstützen. In diesem Fall müssen wir beim Entwerfen von Ausnahmebehandlungsroutinen berücksichtigen, dass Datenbanktransaktionen automatisch zurückgesetzt werden können (falls erforderlich).

Im Falle von REST APIssollten wir bedenken, dass sie die richtigen HTTP-Statuscodes zurückgeben sollten. Zum Beispiel 404 für eine Ressource nicht gefunden.

Welches Nachrichtenaustauschmuster soll verwendet werden?

Beim Entwerfen von Ausnahmebehandlungsroutinen müssen wir uns um das Muster des Nachrichtenaustauschs kümmern. Es kann ein synchrones (Anfrage-Antwort) oder asynchrones (Feuer-Vergessen) Nachrichtenmuster geben.

Synchronous message pattern basiert auf dem Anfrage-Antwort-Format, was bedeutet, dass dieses Muster eine Antwort erwartet und blockiert wird, bis eine Antwort zurückgegeben wird oder eine Zeitüberschreitung auftritt.

Asynchronous message pattern basiert auf dem Fire-Forget-Format, was bedeutet, dass dieses Muster davon ausgeht, dass die Anforderungen letztendlich verarbeitet werden.

Um welche Art von Ausnahme handelt es sich?

Eine sehr einfache Regel ist, dass Sie die Ausnahme basierend auf ihrem Typ behandeln. Es ist sehr wichtig zu wissen, ob die Ausnahme durch ein System- / technisches Problem oder ein geschäftliches Problem verursacht wird.

Eine Ausnahme ist von aufgetreten system/technical issue (z. B. Netzwerkausfall) sollte automatisch von einem Wiederholungsmechanismus behandelt werden.

Andererseits ist eine Ausnahme aufgetreten by a business issue (z. B. ungültige Daten) sollten nicht durch Anwendung eines Wiederholungsmechanismus behoben werden, da es nicht sinnvoll ist, einen erneuten Versuch durchzuführen, ohne die zugrunde liegende Ursache zu beheben.

Warum Ausnahmen kategorisieren?

Da wir wissen, dass nicht alle Ausnahmen gleich sind, ist es sehr wichtig, die Ausnahmen zu kategorisieren. Auf hoher Ebene können die Ausnahmen in die folgenden zwei Typen eingeteilt werden:

Geschäftsausnahmen

Die Hauptgründe für das Auftreten von Geschäftsausnahmen sind falsche Daten oder ein falscher Prozessablauf. Diese Art von Ausnahmen ist normalerweise nicht abrufbar und daher ist es nicht gut, a zu konfigurierenrollback. Sogar bewerbenretryMechanismus würde keinen Sinn ergeben, da es nicht sinnvoll ist, es erneut zu versuchen, ohne die zugrunde liegende Ursache zu beheben. Um solche Ausnahmen zu behandeln, sollte die Verarbeitung sofort gestoppt und die Ausnahme als Antwort auf eine Warteschlange für nicht zustellbare Nachrichten zurückgesendet werden. Eine Benachrichtigung sollte auch an die Operationen gesendet werden.

Nicht geschäftliche Ausnahmen

Die Hauptgründe für das Auftreten nicht geschäftlicher Ausnahmen sind Systemprobleme oder technische Probleme. Diese Art von Ausnahmen ist von Natur aus abrufbar und daher ist es gut, a zu konfigurierenretry Mechanismus, um diese Ausnahmen zu lösen.

Ausnahmehandlungsstrategien

Mule hat die folgenden fünf Ausnahmehandlungsstrategien:

Standardausnahmestrategie

Mule wendet diese Strategie implizit auf die Mule-Flows an. Es kann alle Ausnahmen in unserem Ablauf behandeln, aber es kann auch überschrieben werden, indem eine Fang-, Auswahl- oder Rollback-Ausnahmestrategie hinzugefügt wird. Diese Ausnahmestrategie setzt alle ausstehenden Transaktionen zurück und protokolliert auch die Ausnahmen. Ein wichtiges Merkmal dieser Ausnahmestrategie ist, dass die Ausnahme auch protokolliert wird, wenn keine Transaktion vorhanden ist.

Als Standardstrategie implementiert Mule dies, wenn ein Fehler im Ablauf auftritt. Wir können nicht in AnyPoint Studio konfigurieren.

Rollback-Ausnahmestrategie

Angenommen, wenn es keine mögliche Lösung zur Behebung des Fehlers gibt, was ist dann zu tun? Eine Lösung besteht darin, die Rollback-Ausnahmestrategie zu verwenden, mit der die Transaktion zurückgesetzt und eine Nachricht an den eingehenden Connector des übergeordneten Datenflusses gesendet wird, um die Nachricht erneut zu verarbeiten. Diese Strategie ist auch sehr nützlich, wenn wir eine Nachricht erneut verarbeiten möchten.

Example

Diese Strategie kann auf Bankgeschäfte angewendet werden, bei denen Gelder auf ein Giro- / Sparkonto eingezahlt werden. Wir können hier eine Rollback-Ausnahmestrategie konfigurieren, da diese Strategie im Falle eines Fehlers während der Transaktion die Nachricht an den Anfang des Flusses zurückführt, um die Verarbeitung erneut zu versuchen.

Fangausnahmestrategie

Diese Strategie erfasst alle Ausnahmen, die innerhalb des übergeordneten Ablaufs ausgelöst werden. Es überschreibt die Standardausnahmestrategie von Mule, indem alle vom übergeordneten Flow ausgelösten Ausnahmen verarbeitet werden. Wir können eine Catch-Exception-Strategie verwenden, um zu vermeiden, dass Ausnahmen auch an eingehende Connectors und übergeordnete Flows weitergegeben werden.

Diese Strategie stellt auch sicher, dass eine vom Flow verarbeitete Transaktion nicht zurückgesetzt wird, wenn eine Ausnahme auftritt.

Example

Diese Strategie kann auf Flugbuchungssysteme angewendet werden, bei denen wir einen Ablauf für die Verarbeitung von Nachrichten aus einer Warteschlange haben. Ein Nachrichtenverstärker fügt der Nachricht eine Eigenschaft für die Sitzplatzzuweisung hinzu und sendet die Nachricht dann an eine andere Warteschlange.

Wenn nun ein Fehler in diesem Ablauf auftritt, löst die Nachricht eine Ausnahme aus. Hier kann unsere Fangausnahmestrategie einen Header mit einer entsprechenden Nachricht hinzufügen und diese Nachricht aus dem Fluss in die nächste Warteschlange verschieben.

Choice Exception Strategy

Wenn Sie die Ausnahme basierend auf dem Nachrichteninhalt behandeln möchten, ist die Auswahlausnahmestrategie die beste Wahl. Diese Ausnahmestrategie funktioniert wie folgt:

  • Zunächst werden alle im übergeordneten Flow ausgelösten Ausnahmen abgefangen.
  • Als Nächstes wird nach Nachrichteninhalt und Ausnahmetyp gesucht.
  • Zuletzt wird die Nachricht an die entsprechende Ausnahmestrategie weitergeleitet.

Es würde mehr als eine Ausnahmestrategie wie Catch oder Rollback geben, die in der Auswahlausnahmestrategie definiert ist. Wenn unter dieser Ausnahmestrategie keine Strategie definiert ist, wird die Nachricht an die Standardausnahmestrategie weitergeleitet. Es werden niemals Commit- oder Rollback- oder Konsumaktivitäten ausgeführt.

Referenzausnahmestrategie

Dies bezieht sich auf eine allgemeine Ausnahmestrategie, die in einer separaten Konfigurationsdatei definiert ist. Wenn eine Nachricht eine Ausnahme auslöst, bezieht sich diese Ausnahmestrategie auf die Fehlerbehandlungsparameter, die in einer globalen Fang-, Rollback- oder Auswahlausnahmestrategie definiert sind. Wie bei der Auswahlausnahmestrategie werden niemals Commit- oder Rollback- oder Konsumaktivitäten ausgeführt.

Wir verstehen, dass Unit-Tests eine Methode sind, mit der einzelne Einheiten des Quellcodes getestet werden können, um festzustellen, ob sie für die Verwendung geeignet sind oder nicht. Java-Programmierer können das Junit-Framework verwenden, um Testfälle zu schreiben. In ähnlicher Weise verfügt MuleSoft auch über ein Framework namens MUnit, mit dem wir automatisierte Testfälle für unsere APIs und Integrationen schreiben können. Es eignet sich perfekt für eine kontinuierliche Integrations- / Bereitstellungsumgebung. Einer der größten Vorteile des MUnit-Frameworks besteht darin, dass wir es in Maven und Surefire integrieren können.

Funktionen von MUnit

Im Folgenden sind einige der sehr nützlichen Funktionen des Mule MUnit-Testframeworks aufgeführt:

  • Im MUnit-Framework können wir unseren Mule-Test sowohl mit Mule-Code als auch mit Java-Code erstellen.

  • Wir können unsere Mule-Apps und APIs entweder grafisch oder in XML in Anypoint Studio entwerfen und testen.

  • Mit MUnit können wir die Tests einfach in bestehende CI / CD-Prozesse integrieren.

  • Es bietet automatisch generierte Tests und Abdeckungsberichte. daher ist die manuelle Arbeit minimal.

  • Wir können auch lokale DB / FTP / Mail-Server verwenden, um das Testen durch den CI-Prozess portabler zu machen.

  • Es ermöglicht uns, Tests zu aktivieren oder zu deaktivieren.

  • Wir können das MUnit-Framework auch mit Plugins erweitern.

  • Es ermöglicht uns, Nachrichtenprozessoraufrufe zu überprüfen.

  • Mithilfe des MUnit-Testframeworks können wir Endpunktkonnektoren deaktivieren und eingehende Endpunkte fließen lassen.

  • Wir können Fehlerberichte mit Mule Stack Trace überprüfen.

Neueste Version des Mule MUnit Testing Framework

MUnit 2.1.4 ist die neueste Version des Mule MUnit-Testframeworks. Es erfordert folgende Hardware- und Softwareanforderungen -

  • MS Windows 8+
  • Apple Mac OS X 10.10+
  • Linux
  • Java 8
  • Maven 3.3.3, 3.3.9, 3.5.4, 3.6.0

Es ist kompatibel mit Mule 4.1.4 und Anypoint Studio 7.3.0.

MUnit und Anypoint Studio

Wie bereits erwähnt, ist MUnit vollständig in Anypoint Studio integriert und wir können unsere Mule-Apps und -APIs grafisch oder in XML in Anypoint Studio entwerfen und testen. Mit anderen Worten, wir können die grafische Oberfläche von Anypoint Studio verwenden, um Folgendes zu tun:

  • Zum Erstellen und Entwerfen von MUnit-Tests
  • Für die Durchführung unserer Tests
  • Zum Anzeigen der Testergebnisse sowie des Abdeckungsberichts
  • Zum Debuggen der Tests

Lassen Sie uns also jede Aufgabe einzeln besprechen.

Erstellen und Entwerfen von MUnit-Tests

Sobald Sie ein neues Projekt starten, wird automatisch ein neuer Ordner hinzugefügt src/test/munitzu unserem Projekt. Zum Beispiel haben wir nämlich ein neues Mule-Projekt gestartettest_munitWie Sie im folgenden Bild sehen können, wird der oben genannte Ordner unter unserem Projekt hinzugefügt.

Sobald Sie ein neues Projekt gestartet haben, gibt es zwei grundlegende Möglichkeiten, um einen neuen MUnit-Test in Anypoint Studio zu erstellen:

  • By Right-Clicking the Flow - Bei dieser Methode müssen wir mit der rechten Maustaste auf den spezifischen Ablauf klicken und MUnit aus dem Dropdown-Menü auswählen.

  • By Using the Wizard- Bei dieser Methode müssen wir den Assistenten zum Erstellen eines Tests verwenden. Es ermöglicht uns, einen Test für jeden Fluss im Arbeitsbereich zu erstellen.

Wir werden die Methode "Rechtsklick auf den Fluss" verwenden, um einen Test für einen bestimmten Fluss zu erstellen.

Zunächst müssen wir einen Flow im Arbeitsbereich wie folgt erstellen:

Klicken Sie nun mit der rechten Maustaste auf diesen Fluss und wählen Sie MUnit, um einen Test für diesen Fluss zu erstellen, wie unten gezeigt -

Es wird eine neue Testsuite erstellt, die nach der XML-Datei benannt ist, in der sich der Flow befindet. In diesem Fall,test_munit-test-suite ist der Name der neuen Testsuite wie unten gezeigt -

Es folgt der XML-Editor für den obigen Nachrichtenfluss -

Jetzt können wir eine hinzufügen MUnit Nachrichtenprozessor in die Testsuite, indem Sie ihn aus der Mule-Palette ziehen.

Wenn Sie einen Test über den Assistenten erstellen möchten, folgen Sie den Anweisungen File → New → MUnit und es führt Sie zu der folgenden MUnit-Testsuite -

Test konfigurieren

In Mule 4 haben wir nämlich zwei neue Abschnitte MUnit und MUnit Tools, zusammen mit allen MUnit-Nachrichtenprozessor. Sie können einen beliebigen Nachrichtenprozessor in Ihren MUnit-Testbereich ziehen. Es wird im folgenden Screenshot gezeigt -

Wenn Sie nun die Konfiguration für Ihren Anzug oder Test in Anypoint Studio bearbeiten möchten, müssen Sie die folgenden Schritte ausführen:

Step 1

Gehe zum Package Explorer und klicken Sie mit der rechten Maustaste auf .xml filefür Ihre Suite oder Test. Wählen Sie dann dieProperties.

Step 2

Jetzt müssen wir im Eigenschaftenfenster klicken Run/Debug Settings. Nach diesem KlickNew.

Step 3

Klicken Sie im letzten Schritt auf MUnit unter Select Configuration Type Fenster und klicken Sie dann auf OK.

Test ausführen

Wir können sowohl eine Testsuite als auch einen Test ausführen. Zuerst werden wir sehen, wie eine Testsuite ausgeführt wird.

Ausführen einer Testsuite

Um eine Testsuite auszuführen, klicken Sie mit der rechten Maustaste auf den leeren Teil des Mule-Canvas, in dem sich Ihre Testsuite befindet. Es öffnet sich ein Dropdown-Menü. Klicken Sie nun auf dieRun MUnit suite wie unten gezeigt -

Später können wir die Ausgabe in der Konsole sehen.

Ausführen eines Tests

Um einen bestimmten Test auszuführen, müssen wir den bestimmten Test auswählen und mit der rechten Maustaste darauf klicken. Wir erhalten das gleiche Dropdown-Menü wie beim Ausführen der Testsuite. Klicken Sie nun auf dieRun MUnit Test Option wie unten gezeigt -

Danach ist die Ausgabe in der Konsole zu sehen.

Anzeigen und Analysieren des Testergebnisses

Anypoint Studio zeigt das MUnit-Testergebnis im an MUnit tabdes linken Explorer-Bereichs. Sie können erfolgreiche Tests in grüner Farbe und fehlgeschlagene Tests in roter Farbe finden, wie unten gezeigt -

Wir können unser Testergebnis analysieren, indem wir den Abdeckungsbericht anzeigen. Das Hauptmerkmal des Abdeckungsberichts besteht darin, eine Metrik darüber bereitzustellen, wie viel einer Mule-Anwendung von einer Reihe von MUnit-Tests erfolgreich ausgeführt wurde. Die MUnit-Abdeckung basiert im Wesentlichen auf der Anzahl der ausgeführten MUnit-Nachrichtenprozessoren. Der MUnit-Abdeckungsbericht enthält Metriken für Folgendes:

  • Gesamtabdeckung der Anwendung
  • Ressourcenabdeckung
  • Durchflussabdeckung

Um den Abdeckungsbericht zu erhalten, müssen Sie auf der Registerkarte MUnit auf "Bericht erstellen" klicken (siehe unten).

Debuggen des Tests

Wir können sowohl eine Testsuite als auch einen Test debuggen. Zunächst erfahren Sie, wie Sie eine Testsuite debuggen.

Debuggen einer Testsuite

Klicken Sie zum Debuggen einer Testsuite mit der rechten Maustaste auf den leeren Teil des Mule-Canvas, in dem sich Ihre Testsuite befindet. Es öffnet sich ein Dropdown-Menü. Klicken Sie nun auf dieDebug MUnit Suite wie im folgenden Bild gezeigt -

Dann können wir die Ausgabe in der Konsole sehen.

Debuggen eines Tests

Um einen bestimmten Test zu debuggen, müssen wir den bestimmten Test auswählen und mit der rechten Maustaste darauf klicken. Wir erhalten das gleiche Dropdown-Menü wie beim Debuggen der Testsuite. Klicken Sie nun auf dieDebug MUnit TestMöglichkeit. Es wird im folgenden Screenshot gezeigt.