Alle Beiträge, jStage Platform, Technologien & Entwicklung

jStage PIM – Client – Architekturüberblick

jStage PIM - Client - Architekturüberblick

Schichtentrennung, Modularisierung, Kapselung, Don’t repeat yourself (DRY), … es gibt viele grundlegende Prinzipien, mit denen sich gute Softwarearchitektur beschreiben lässt. In jedem (größeren) Softwareprojekt spielt eine klare Architektur eine wichtige Rolle. Die Gründe hierfür sind beispielsweise Performance, Übersichtlichkeit und Wartbarkeit. Je klarer die Architektur, desto leichter kann neue Funktionalität implementiert werden. Auch die Einarbeitung neuer Mitarbeiter fällt mit einer klaren, strukturierten und nachvollziehbaren Architektur deutlich leichter.  Auch der jStage PIM – Client verfügt über eine solche Architektur, die in dieser Beitragsserie näher betrachtet wird.

Systemarchitektur

Überblick

jStagePIM_Architektur_Ueberblick

Abb 1: jStage PIM – Client – Architekturüberblick

Abbildung 1 zeigt überblicksartig die Architektur des jStage PIM. Es basiert auf einer klassischen Mehr-Schichten-Architektur mit einer relationalen Datenbank. In den nachfolgenden Kapiteln wird näher auf die einzelnen Schichten sowie auf die verwendeten Technologien eingegangen.

Oberfläche / Client

Der jStage PIM – Client basiert auf der Eclipse Rich Client Platform (RCP). Hierbei handelt es sich um ein Open Source (Eclipse Public License (EPL)) Framework zum Bau eigener Applikationen. Das RCP-Framework stellt dabei eine große und stabile Grundlage dar, auf Basis derer komplexe Desktop-Anwendungen entwickelt werden können. Die bekannteste RCP-Applikation – und gleichzeitig Namensgeber –  ist vermutlich die Entwicklungsumgebung “Eclipse”.

Die RCP – Platform lässt sich mit Modulen, sog. “Plugins”, erweitern. Hierbei wird Equinox, eine OSGi – Implementierung, verwendet. Der jStage PIM – Client besteht aktuell aus einer Vielzahl von Plugins, die nach Fachlichkeit gegliedert sind (z. B. Artikel-Plugin, Vertrags-Plugin, Kontakt-Plugin). Die Plugins sind untereinander unabhängig und haben untereinander im Regelfall keinen Zugriff. Somit lassen sich einzelne Plugins leicht hinzufügen oder entfernen. Gegenseitiger Zugriff ist über den “Extension Mechanismus” erlaubt, sodass ein Plugin ein anderes Plugin auch erweitern kann. Hierzu kann ein Plugin einen “Extension Point” zur Verfügung stellen, an dem andere Plugins “Extensions” registrieren können.
Jedes Plugin stellt unterschiedliche GUI-Bestandteile, aus denen sich der jStage PIM – Client zusammensetzt, zur Verfügung. Diese werden im RCP – Framework über bereitgestellte Extension Points als Extensions registriert. Die wichtigsten Bestandteile sind:

  • Perspektiven
    Eine Perspektive ist die oberste Ebene und gliedert fachlich zusammengehörende Views.
  • Views
    Eine View dient zur Massendatendarstellung sowie -bearbeitung. Im jStage – Client sind dies beispielsweise Suchen, Arbeitslisten oder Übersichten.
  • Wizards
    Mittels Wizards werden im jStage PIM neue Objekte angelegt. Die einzelnen Wizards sind von unterschiedlicher Komplexität, jenachdem wie viele Informationen bereits bei der Neuanlage eines Objekts hinterlegt werden sollen.
  • Editoren
    Ein Editor dient zur Ansicht und Bearbeitung eines Objekts (z. B. ein Artikel). Dabei können alle Eigenschaften, aufgegliedert nach Reitern oder Tabs, dargestellt sein.
  • Systemeinstellungen
    Systemweite Daten (z. B. Länder, Währungen, Sprachen) können im jStage PIM unter den Systemeisntellungen gepflegt werden. Daneben können dies auch spezielle Einstellungen für einzelne Module sein.

Die Sichtbarkeit bzw. die Möglichkeit zur Bearbeitung kann für alle oben genannten Bestandteile über Lese- und Pflegerechte gesteuert werden. Durch den Plugin-Mechanismus ist es ebenfalls möglich, ein Modul komplett aus dem Build zu entfernen und so einen kundenspezifischen Client zu bauen.

Neben den fachlichen Modulen gibt es noch ein sogenanntes “Core Modul”. Dieses kann von allen Modulen zugegriffen werden und enthält Querschnittsfunktionalität. In diesem Modul sind beispielsweise (abstrakte) Basisklassen abgelegt, für die konkrete Implementierungen in den fachlichen Modulen existieren.

Zwischenschicht

Die “Zwischenschicht”, stellt die Verbindung zwischen dem jStage PIM – Client und dem Applikationsserver dar. Hier sind beispielsweise die Entitäten hinterlegt, die gleichermaßen von Client und Server verwendet werden können. Daneben gibt es auch Util-Klassen, die Querschnittsfunktionalität für Client und Server beinhalten.

Application Server

Im jStage PIM – Umfeld wird als Applikationsserver “Wildfly 9” eingesetzt. Die Server-Schicht baut auf “Java Enterprise (Java EE) 7” auf. Daher sind die Serverkomponenten mit “Enterprise Java Beans (EJB)” umgesetzt, die sich untereinander beliebig aufrufen können, nach außen jedoch über klare Schnittstellen verfügen.
Der Zugriff auf die Datenbank – dem MySQL Fork “MariaDB” – ist mit “Java Persistence API (JPA)” realisiert. Als Persistenz-Provider wird “Hibernate” eingesetzt. Neben MariaDB kann auch eine Oracle-Datenbank verwendet werden.

Batch Jobs

In einem PIM – System gibt es viele wiederkehrende Prozesse bzw. Datenmengen, die periodisch weiter verarbeitet werden müssen. Ein Beispiel im jStage – Umfeld ist die sog. “Filterauflösung” zur Befüllung von Kategorien im eShop.  Diese Jobs sind im jStage PIM – Umfeld in einem eigenen Modul implementiert. Als Technologie wird hier auf “Spring Batch” gesetzt. Bei der Abarbeitung der Jobs ist dabei sowohl Zugriff auf den Application Server, als auch direkt auf die Datenbank möglich.

Vorteile / Kundennutzen

Die Modularisierung des jStage PIM – Client ist ein großer Vorteil für die Entwicklung. Mit RCP ist es leicht möglich, Module auszutauschen, hinzuzufügen oder wegzulassen. So kann ein Kunde auch eigene Module entwickeln und den Client selbst erweitern. Auch die Wartbarkeit wird durch die klare Trennung erhöht.
Bei RCP handelt es sich um ein Framework, das ständig weiterentwickelt wird und eine große, aktive Community hat. Bugfixes, Performance-Verbesserungen und neue Funktionen sind somit garantiert. Bei Problemen kann man sich auch jederzeit an die Community richten. Daneben gibt es eine Vialzahl hilfreicher Blogbeiträge, Tutorials sowie eine gute Dokumentation. Durch die Komplexität und Größe des RCP-Frameworks ist die technische Einstiegshürde jedoch etwas höher.

Ein weiterer Vorteil ist der konsequente Einsatz von OpenSource – Software (siehe hierzu auch “jStage & Open Source“). jStage setzt hier bewusst nicht auf proprietäre Lösungen. So wird neben der Vermeidung von Lizenzkosten auch sichergestellt, dass bei Problemen kostenloser Support (durch die Community) existiert, oder Probleme durch Einblick in den Quellcode selbst gelöst werden können.

Ausblick

Dieser Beitrag hat einen grundlegenden Überblick über die Architektur des jStage PIM – Clients gegeben.  Im nächsten Beitrag der Serie wird der Application Server und das Umfeld im Detail vorgestellt. Daneben wird es in einem weiteren Beitrag um den jStage PIM – Client im Detail gehen.

Haben Sie Fragen, Anregeungen oder Themenvorschäge? Bitte treten Sie mit mir gern in Kontakt oder hinterlassen einen Kommentar.