Das Experiment
31. Januar 2020Best Practice durch Einsatz von Generatoren
26. März 2020Wie bereits 2012 erstmalig berichtet, betreibt die Generative Software GmbH eine Fahrservice Management Lösung für Dienstleister in der geschäftlichen Personen- und VIP-Beförderung. Die Lösung wurde von Anfang an als sog. Cloud-Lösung für unsere Kunden bereitgestellt, also als Rundum-sorglos-Paket.
2019 wurde dann gemeinsam mit unseren größten Kunden eine neue Lösung entwickelt. Die zu Beginn des Projektes im Jahre 2011 benutzten Technologien wurden teilweise nicht mehr weiterentwickelt oder stehen uns heute in komplett neuen – nicht kompatiblen – Versionen zur Verfügung. Ebenfalls war es natürlich unser Wunsch, die neue Lösung mittels unseres neuen Generatorflaggschiff Virtual Developer für Webanwendungen zu erstellen. Bei der Entwicklung der bisherigen Lösung stand uns damals nur ein Generator für die Persistenzschicht zur Verfügung, so dass die komplette GUI „händisch“ entwickelt wurde.
Die neue Lösung sollte aber nicht nur ein Facelift werden, sondern auf neuesten uns zur Verfügung stehenden Technologien aufbauen und viele neue Funktionen bekommen. Wir haben uns entschieden die gesamte Benutzerverwaltung auf das Open Source Identity and Access Management keycloak auszulagern. Dabei musste die Multimandantenfähigkeit des Systems in Kombination mit keycloak umgesetzt werden.
Für die grafische Darstellung der einzelnen Seiten kommt jetzt das Java Server Faces Framework primefaces zum Einsatz. Passend dazu nutzen wir auch eine spezielle Bibliothek, um die UI-Komponenten in den automatisierten Tests ansprechen zu können.
Als Jakarta EE Container nutzen wir aktuell die Open Source Implementierung Wildfly 18 in einem speziell von uns angepassten Docker-Image.
Wie bei uns üblich, wurde zu Beginn der Neuentwicklung mit der Modellierung der gesamten Anwendung begonnen. Das bisherige Modell der Persistenz konnte für die neue Lösung zu großen Teilen übernommen werden und musste noch für die Einbindung von keycloak angepasst werden. Ebenfalls wurden neue Funktionen, welche schön länger mit unseren Kunden entwickelt wurden, in die Modelle aufgenommen.
Die bestehenden Seiten der alten Anwendung wurden jetzt als neues Modell erstellt. Auch hier wurden die neuen Funktionen gleich berücksichtigt. Somit wurden auch komplett neue Seiten modelliert, die es in der bisherigen Anwendung so nicht gab.
Mittels unseres Generators Virtual Developer für Webanwendungen waren wir dann in der Lage in kürzester Zeit eine lauffähige erste Version der neuen Anwendung zu erstellen, um erstes Feedback zu erhalten. Parallel entwickelten wir die noch fehlende Businesslogik und bereiteten die Datenmigration vor. Für letzteres hat liquibase wertvolle Hilfe geleistet und wird auch weiterhin für zukünftige Versionen eingesetzt.
Dank unseres Generators konnten wir auch eine Vielzahl von automatisierten Tests erstellen, die uns während der Entwicklung und für die Abnahmetests wertvolle Dienste leisteten.
Anfang 2020 war es dann soweit. Die neue Fahrservice Management Cloud-Lösung stand für all unsere Kunden in neuer Version zur Verfügung. Die Datenmigration wurde ebenfalls erfolgreich durchgeführt, so dass alle Kunden gleich mit der Arbeit beginnen konnten. Kleiner Wermutstropfen war allerdings die Inkompatibilität der alten Paßwort-Hashes zu keycloak. Somit musste jeder Benutzer einmalig sein Passwort über die Wiederherstellungsfunktion neu setzten 🙁
Aus knapp 40 Modelldateien sind somit ca. 1.000 Java-Dateien sowie 340 Java Server Faces Dateien entstanden.
Ebenfalls stehen uns dank des Generators knappe 400 Testfälle zur Verfügung.
Viel wichtiger für uns waren allerdings die vielen kleinen und großen Verbesserungen, welche während der Entwicklungszeit in den neuen Generator Virtual Developer für Webanwendungen eingeflossen sind. Diese können wir bald in einem neuen Release all unseren Kunden aus der Softwareindustrie zur Verfügung stellen.