Beispiel-IT-Architektur einer modernen Low Code Plattform (Für Techniker)

NUR FÜR TECHNIKER!

Eine Beispiel-IT-Architektur einer modernen Low Code Plattform basiert in der Regel auf einem sorgfältig ausgewählten Satz bewährter Technologien.

Der Entwicklungsprozess von Verwaltungsanwendungen steht derzeit vor bedeutenden technologischen Veränderungen. Immer mehr Funktionalität wird auf die Client-Seite verlagert und auf JavaScript und Web-Technologien aufgebaut. Der Trend geht hin zu Single Page Web Applications. Ebenso wichtig sind durchdachte UI/UX-Konzepte und die Unterstützung sowohl von Desktop- als auch von mobilen Geräten. Die Architektur einer modernen Low Code-Plattform stellt sich diesen Herausforderungen und bietet eine Lösung für die Entwicklung webbasierter Verwaltungsanwendungen.

Technologie-Stack

Auf der Client-Seite bildet das Client-Framework die Grundlage für den schnellen Aufbau modularisierter Front-Ends. Es baut auf dem etablierten React/Redux-Ökosystem auf, integriert die UI-Komponenten wie Engines und Widgets und ruft die Plattform-Dienste im Backend über HTTP/REST-Endpunkte auf. Kundenspezifische Backend-Konnektivität ist natürlich möglich, und tatsächlich können die meisten Aspekte des „Clients“ durch Extension-Punkte und Plugins angepasst und sogar außer Kraft gesetzt werden.

Die Plattform-Dienste bestehen aus Datendokumentenpersistenz einschließlich Suche (Solr), Workflow-Engine (BPMN 2), Authentifizierung/Anmeldung (OAuth 2/JWT) und Benutzer-/Rollenmanagement. Die Dienste bauen auf Spring Boot auf und können out-of-the-box verwendet, aber auch mit kundenspezifischem Code erweitert werden.

Der Validierungskernel ist ein wichtiger Teil sowohl auf der Client- als auch auf der Server-Seite und validiert Daten und berechnet abgeleitete Daten auf der Grundlage von Regeln und Feldtypen, die in Datendokumentenschemata (wir nennen sie Dokumentmodelle) beschrieben sind. Die Codegenerierung gewährleistet nativen Code für Client und Server. Im Front-End werden die Regeln und Berechnungen als natives JavaScript ausgeführt und ermöglichen eine sofortige Rückmeldung an den Benutzer während der Formularbearbeitung. Und der Server validiert mit den gleichen Regeln wie reiner Java-Code, um die Datenintegrität vor der Speicherung von Dokumenten sicherzustellen.

Dokumentbasierter Datenzugriff

Die Architektur basiert auf dem Konzept von Datendokumenten als hierarchische Sammlungen von Feldwerten. Auf diese Dokumente kann vom Client aus zugegriffen und gespeichert werden. Die Suchergebnisse werden vom Suchdienst unter Verwendung von Solr-Suchindizes bereitgestellt. Es gibt jedoch zwei Unterscheidungsmerkmale, die nirgendwo zu finden sind:

1) Dokumentenmodelle spezifizieren nicht nur Feldtypen, sondern auch Validierungs-/Integritätsregeln und Berechnung in einer sehr leistungsfähigen Sprache.

2) volle Unterstützung für verwaltete Beziehungen; Dokumente können verknüpft werden, und die Beziehungseigenschaften und -beschränkungen können modelliert werden und werden vom Datendokument-Speicherdienst durchgesetzt. Um noch einen Schritt weiter zu gehen, bietet der BAP-Client vorgefertigte UI-Komponenten für die Front-End-Liste und die Bearbeitung von Beziehungsverknüpfungen.

Die Plattform-Architektur legt einen starken Schwerpunkt auf die Vereinfachung der clientseitigen Anwendungsentwicklung. Sie bietet ein vorkonfiguriertes Build-Setup, Engines für die Arbeit mit Modellen und Widgets für wiederverwendbare UI-Komponenten.

Standards wo möglich – Individuelle Lösungen wo nötig

Alle Teile der Low Code Plattform sind auf Erweiterbarkeit und Anpassbarkeit ausgelegt. Ziel ist es, stabile Lösungen für wiederkehrende Probleme bereitzustellen und gleichzeitig individuelle anwendungsspezifische Ergänzungen zu ermöglichen, wo dies erforderlich ist:

Anwendungsspezifische UI-Komponenten können direkt verwenden

Anwendungsspezifische Komponenten können koexistieren und mit Widgets und Engines auf demselben Bildschirm interagieren. Widgets und Engines stellen Strukturen und Konventionen zur Verfügung, die für projektspezifische Komponenten und Code verwendet und angewendet werden können.

Der Client zeichnet sich durch eine gut durchdachte Schichtenarchitektur aus. Der gesamte Code ist in Typescript (populäre typsichere Variante von JavaScript) geschrieben und umfasst vollständig React, Redux und nützliche Erweiterungen wie Redux Sagas für die Handhabung asynchroner Arbeit und Kommunikation. Clientdienste wie Lokalisierung, Validierung und Protokollierung bauen auf diesem Fundament auf. Die Widgets sind reine React-UI-Komponenten und bilden die Bausteine für die Engines, die die Widgets nach einem Formularmodell zusammensetzen.

Der Plattform-Kern und die Extensions stellen alle Mittel zur Entwicklung von Anwendungen zur Verfügung. Der Kern ist zentral für eine funktionierende Anwendung und erweitert Redux mit einigen nützlichen Abstraktionen:

Das Anwendungsmodell spezifiziert UI-Interaktionen, Menüs, Routing und die Auflösung von UI-Komponenten. Es kann in einem UI-Tool-Editor definiert werden.

Aktivitäten als Abstraktion für Arbeitseinheiten im Client. Aktivitäten können voneinander abhängen, aber auch parallel laufen. Diese Abstraktion bildet die Grundlage für Master/Detail, Multitasking usw.

Anwendungsrahmen und eine flexible UI-Architektur um Layouts, Regionen und Views. Regionen können verschachtelt werden und ein Layout verwenden, um seine Unterregionen und Ansichten anzuzeigen. Engines, Widgets und beliebige UI-Container werden in den Ansichten gerendert. Die UI can wird durch das Anwendungsmodell gesteuert, auf dessen Grundlage die Aktivitäten derzeit ausgeführt werden. Aktivitäten steuern die Views.

Der Data Hub ist für das Laden von Daten für die Aktivitäten verantwortlich, wie z.B. ein zu bearbeitendes Datendokument in einem Formular oder die Liste der Suchergebnisse in einer Listenansicht. Er ist vollständig von der Benutzungsoberfläche entkoppelt und läuft im Hintergrund. Das eigentliche Laden/Speichern der Daten wird an registrierte Data-Loader-Komponenten delegiert.

Der Kern unterstützt die Modularisierung (Bottom-Up-Konstruktion einer App aus Modulen).

Die Client-Extensions sind eine Sammlung von Funktionen, die die Kernfunktionalität erweitern, einschließlich Dirty Handling, Anzeige statischer Seiten (wie FAQ, Hilfe), Deep Linking, Benachrichtigungen, den Konnektor für die A12-Services, vollautomatische Präsentation von Listen, Formularen und Beziehungen zwischen Datendokumenten einschließlich Laden, Validierung und Speichern.

Komponente, die in TypeScript und React/Redux geschrieben wurde. Sie ist für die optimale Integration in Client basierte Anwendungen konzipiert, kann aber auch als eigenständige Komponente in jeder Redux-, React- oder sogar Nicht-React-Anwendung verwendet werden.

Die Form Engine ist vollständig in die Client Activities and Views-Mechanismen integriert. Das gesamte Laden, Manipulieren und Persistieren von Daten erfolgt über Client APIs. Die Form Engine kann innerhalb von Client Layouts plaziert werden.

Wie der Client unterstützt sie gängige APIs wie Lokalisierung, Validierung und Protokollierung.

Die Form Engine bietet eine große Auswahl an Customizing-APIs für Rendering und Verhalten.

Das Rendering erfolgt standardmäßig mit Widgets und kann auf Widget- und Formularmodell-Ebene sehr feingranular angepasst werden. Dies ermöglicht es, Teile der Benutzeroberfläche leicht zu optimieren oder vollständig zu ersetzen, von einem einzelnen Eingabefeld bis hin zu einem kompletten Abschnitt.

Alle Verhaltensweisen wie Werte ändern, Validierung/Berechnung oder Navigation sind als Redux-Middleware implementiert und strikt von der UI getrennt. Das eingebaute Verhalten kann daher geändert oder vollständig ersetzt werden – völlig unabhängig vom UI-Customizing.

Die Plattform bietet serverseitige Anwendungen, die mit den Tools und Client-Anwendungen kommunizieren. Die Backend-Dienste sind mit Spring Boot in Java geschrieben. Die Persistenz der Datendokumente nutzt eine Reihe zuverlässiger Technologien wie Apache Solr – eine der weltweit beliebtesten Enterprise-Suchplattformen. Sie unterstützt XML und JSON als Ein- und Ausgabeformat für Datendokumente. Die Kernfunktionalität ist über eine REST-API zugänglich.

Weiterführende Infos findet Ihr auf den Webseiten von mgm technology partners.