Der Mendix Mikroströmungsmotor: Wie funktioniert er? | Siemens | Mendix

Direkt zum Inhalt

Der Mendix Mikroströmungsmotor: Wie funktioniert er?

  • Mendix

  • 7. Oktober 2013
  • Minute gelesen

In diesem Blogbeitrag möchte ich erklären, wie die Microflow-Engine ihre Aufgabe erfüllt, komplexe Logik in Ihrem Mendix Anwendung. Zuerst gebe ich eine kurze Einführung, was Mikroflüsse sind und wie sie Ihnen beim Modellieren Ihrer Anwendung helfen, und dann erkläre ich die Technologie dahinter.

Eine Einführung

Im Mendix Plattform erstellen Sie ein Modell Ihrer Anwendung mit dem Mendix Business Modeler. Wir generieren keinen Code, sondern interpretieren dieses Modell beim Starten der Anwendung in unserer Server-Laufzeit. Dieser Ansatz hat viele Vorteile, wie zum Beispiel die Möglichkeit visuelles Debuggen, auch in Remote-Umgebungen.

Um diesen Artikel zu verstehen, ist es sehr hilfreich, wenn Sie bereits Mikroflüsse erstellt haben, aber ich werde auch erklären, was sie sind. Wenn Sie bereits wissen, wie man Mikroflüsse verwendet, können Sie direkt zu Aktion.

Um unsere Dokumentation zu zitieren, „Mit Microflows können Sie die Logik Ihrer Anwendung ausdrücken“ und „Es ist eine visuelle Möglichkeit, das auszudrücken, was traditionell in textuellem Programmcode endet.“Mit anderen Worten: Mit Microflows können Sie den Prozessen in Ihrer Anwendung problemlos komplexe Geschäftslogik hinzufügen, ohne Code schreiben zu müssen. Mendix dreht sich alles um die Zusammenarbeit zwischen Business und IT, und Microflows sind eine große Hilfe, da sie geschäftsorientierten Personen Einblick in die Konzeption der Anwendung geben.

Mikroabläufe definieren übergeordnete Aktivitäten. Ein sehr einfaches Beispiel könnte so aussehen:

 

Screenshot

In Java-Code könnte dies wie folgt aussehen. Die 'else'-Anweisung ist nicht unbedingt notwendig, entspricht aber eher der Darstellung im Mikroablauf.

Screenshot des Codes

Ein konkreteres Beispiel folgt:

Screenshot

Weiterführende Informationen zur Verwendung von Mikroflüssen finden Sie unter https://world.mendix.com/display/refguide4/Microflows.

Aber wie funktioniert das alles? Nun, lassen Sie uns jetzt darauf eingehen.

Aktion

Ein Mikrofluss ist eine Art Aktion. Aktionen im Server werden durch eine Schnittstelle definiert, die die grundlegende Eigenschaft hat, dass sie ausgeführt werden kann. Dies geschieht durch die Aktionsmanager; diese Klasse ist für die Ausführung von Aktionen auf verschiedene Arten verantwortlich. Sie kann sie synchron oder asynchron ausführen oder für die Ausführung in der Zukunft planen und kümmert sich um die gesamte Threading-Komplexität.

Auf dem Server sind verschiedene Arten von Aktionen definiert. Einige davon sind für den internen Gebrauch bestimmt, z. B. eine Aktion, die abgelaufene Sitzungen entfernt. Andere können von Entwicklern verwendet oder sogar implementiert werden, indem Mendix. Beispiele sind Objekt löschen or XPath-Abfrage Aktionen. Wenn Sie jemals Ihre eigene Java-Aktion erstellt haben, ist Ihnen vielleicht aufgefallen, dass sie UserAction und dass es die Methode implementieren muss executeAction.

Wir wissen jetzt also, dass Mikroflüsse Aktionen sind, die ausgeführt werden können, aber wie erhalten wir (Instanzen von) dieser Klasse?

Aufbau der Mikroflussstrukturen

Wenn der Server startet, liest er zuerst die Datei, die Ihr Anwendungsmodell enthält. Das Modell enthält alle Dokumente in Ihrem Projekt, einschließlich der Mikroflüsse. Der Server erstellt Strukturen dieser Mikroflussdokumente, die einfacher und schneller zum Instanziieren tatsächlicher Mikroflüsse verwendet werden können als die flachen Modellinformationen. Um Ihnen einige Beispiele zu geben: Nach dem Erstellen dieser Strukturen zeigt ein Mikrofluss, der einen anderen Mikrofluss aufruft, direkt auf die Struktur dieses Mikroflusses und nicht auf einen Bezeichner im Modell, und der Inhalt einer verschachtelten Schleife wird als separate Mikroflussstruktur gerendert.

Wenn dies erledigt ist, haben wir eine Reihe von Mikroflussstrukturen. Diese stellen einen Mikrofluss dar, wie er im Modeller gezeichnet wurde, und enthalten Mikroflussobjekte, die entweder ein Startereignis, ein Endereignis, ein Unterbrechungsereignis oder, nicht zuletzt, ein Aktivität.

Screenshot

Diese Microflow-Objekte sind miteinander verbunden durch fließt: die Linien, die die verschiedenen Blöcke verbinden, wenn Sie einen Mikrofluss zeichnen. Ein Mikroflussobjekt kann eingehende und ausgehende Flüsse haben.

Wenn Sie Erfahrung mit Mikroflüssen haben und sich jetzt fragen: „Hey, aber was ist mit Schleifen oder Gateways?“, werden diese ebenfalls als Aktivitäten dargestellt. In diesem Zusammenhang kann das Fehlerereignis, das wir kürzlich eingeführt haben, als eine spezielle Art von Endereignis betrachtet werden.

Wie bereits erwähnt, wird der Inhalt einer verschachtelten Schleife ebenfalls als Mikroflussstruktur gerendert. Für jede Iteration einer Schleife wird ein weiterer Mikrofluss instanziiert. Instanziiert, sagen Sie? Werfen wir einen Blick darauf …

Instanziieren und Ausführen von Mikroflows

Bevor ein bestimmter Mikrofluss ausgeführt wird, wird er mithilfe der zuvor erstellten Struktur sehr schnell instanziiert. Für eine bestimmte Instanz eines Mikroflusses benötigen wir Dinge wie den tatsächlichen Wert des Eingabevariablen und der Kontext des Microflows. Der Kontext enthält verschiedene Informationen, einschließlich des Benutzers, der diesen Microflow ausführt.

Das Gesamtbild sieht also folgendermaßen aus:

Screenshot

Wenn die Instanz erstellt wird, führt der Aktionsmanager den Mikrofluss aus. Er wird schließlich auf einen Aktivität...

Microflow-Aktivitäten

Wie ich bereits sagte, sind einige (oder eigentlich die meisten) Microflow-Objekte AktivitätenEinige Beispiele für Microflow-Aktivitäten sind das Ändern eines Objekts, das Geben von Anweisungen zum Öffnen eines Formulars, das Generieren eines Dokuments auf Grundlage einer Vorlage oder das Importieren von XML.

Eine Aktivität definiert eine execute Methode. Die Microflow-Instanz wird an diese Methode übergeben, damit wir beispielsweise Variablen nachschlagen können, die sich in der kann dieses Mikroflusses.

Hier ist ein Beispiel für eine Microflow-Aktivität: XML exportieren. Wenn Sie selbst programmieren können, werden Sie erkennen, was diese Aktivität bewirkt.

Screenshot des Codes

Es ruft die Kontext- und Mikroflussvariablen aus dem Bereich des Mikroflusses ab, erhält die Kennung der XML-Zuordnung, holt das Parameterobjekt und entscheidet dann, ob eine Zeichenfolge exportiert und dieser Wert zurückgegeben oder in eine Datei geschrieben wird. Wir werden nicht auf die Funktionsweise der Methoden eingehen, die diese Aufgabe tatsächlich ausführen, aber Sie verstehen, was ich meine.

Da Mendix 5, wir verwenden OSGi als Modulsystem. Verschiedene Komponenten können nun ihre Aktivitäten in die Microflow-Engine einbinden. Beispielsweise fügt die Komponente „Dokumentgenerator“ eine Aktivität „Dokument generieren“ ein und die Komponente „Web-UI“ fügt Aktivitäten wie „Nachricht anzeigen“ ein.

Gateways sind eine spezielle Art von Aktivität und werden bei der Modellierung anders dargestellt. Ein Gateway stellt eine Teilung im Fluss eines Mikroflusses dar. Es kann entweder ein Exklusive Aufteilung oder Erbteilung. Die Standardoption einer exklusiven Aufteilung besteht darin, einen Ausdruck zu analysieren. Basierend auf diesem Ausdruck kann der Mikrofluss anschließend aufgeteilt werden. Der einfachste Fall ist ein Boolescher Ausdruck (true oder false), aber Sie können auch anhand von Aufzählungswerten aufteilen. Wie funktioniert das also? Nun, wir müssen uns Mikroflussausdrücke ansehen.

Microflow-Ausdrücke

In Mendix Wir haben unsere eigene Ausdruckssprache definiert. Eine Definition finden Sie auf Wikipedia : „Ein Ausdruck in einer Programmiersprache ist eine Kombination aus expliziten Werten, Konstanten, Variablen, Operatoren und Funktionen, die gemäß den besonderen Vorrang- und Assoziationsregeln einer bestimmten Programmiersprache interpretiert werden, die einen anderen Wert berechnet und dann erzeugt (in einer zustandsbehafteten Umgebung zurückgibt). Dieser Prozess wird, wie bei mathematischen Ausdrücken, als Auswertung bezeichnet. Der Wert kann verschiedene Typen haben, z. B. numerisch, Zeichenfolge und logisch.“

Wir haben die Grammatik der Ausdruckssprache geschrieben in ANTLR und verwenden es auch zur Generierung des Parsers und der Abstrakte Syntaxbäume. Um ihre Website zu zitieren: „ANTLR (ANother Tool for Language Recognition) ist ein leistungsstarker Parser-Generator zum Lesen, Verarbeiten, Ausführen oder Übersetzen von strukturiertem Text oder Binärdateien.“

Über die Möglichkeiten unserer Microflow-Ausdrücke können Sie in unserem Dokumentation.

Ausdrücke können an verschiedenen Stellen verwendet werden, um nur einige zu nennen: beim Zuweisen eines Werts zu einem Attribut innerhalb einer Aktivität zum Ändern von Objekten, in einem Endereignis beim Zurückgeben einer Variablen oder innerhalb einer exklusiven Aufteilung, wie ich bereits erwähnt habe. Sehen wir uns ein Beispiel an. Angenommen, Sie haben eine Anwendung mit einer Filmdatenbank, in der Benutzer nach verschiedenen Eigenschaften eines Films suchen können.

Screenshot

Der Ausdruck in diesem Gateway lautet „Film/Länge > 180“. Im Pfad des Mikroflusses, der dem „wahren“ Wert folgt, können Sie diesen bestimmten Film als lang qualifizieren.

Wie würde also ein solcher Ausdruck letztendlich ausgewertet werden?

Sobald die Gateway-Aktion ausgelöst wird, gibt sie den Befehl zur Auswertung des Ausdrucks aus. Dies ist ein sehr einfacher binärer Ausdruck. Sie gibt die Klasse des binären Ausdrucks ein und findet den verwendeten Operator, in diesem Fall das „Größer als“-Zeichen. Wenn dieser Operator gefunden wird, gibt sie die Methode für arithmetische oder Vergleichsausdrücke ein. Nachdem die Typen der linken und rechten Seite des Ausdrucks ermittelt und sichergestellt wurden, dass die Werte nicht null sind, gibt sie den Code für den entsprechenden Operator ein und führt den Vergleich durch. Der endgültige Code ist einfach value = longExpr1 > longExpr2.

Als nächstes wird der Wert an die Gateway-Aktion zurückgegeben, die bestimmt, welcher Pfad des Mikroflusses als nächstes ausgeführt werden soll. Dieser bestimmte Film kann als lang markiert werden, und Ihre Benutzer, die an einem regnerischen Abend zu Hause bleiben möchten, können die perfekte Beschäftigung finden.

Fazit

Damit sind die Grundlagen der Funktionsweise unserer Microflow-Engine im Wesentlichen abgeschlossen. Wenn Sie Microflows verwenden, müssen Sie sich keine Gedanken darüber machen, wie Sie beispielsweise einen Webdienst aufrufen, eine SQL-Abfrage in einer Datenbank mit allen relevanten Sicherheitseinschränkungen durchführen oder ein Formular auf dem Client öffnen. Die Microflow-Engine stellt diese Funktionen in Form einfacher Aktivitäten bereit, die Sie Ihrer Anwendung hinzufügen können.

Ich hoffe, Ihnen hat dieser Einblick gefallen.

Wählen Sie Ihre Sprache