My Life with Isis (so far). Teil 2:

„My Life with Isis (so far).“

Hab ich es endlich geschafft und eine von diesen „catchy“ Überschriften produziert? (*)

Wenn es sich hier um ein GUI driven product handelt, kann ich mir darüber hinaus gut vorstellen, dass Isis auch in der Produktion gute Dienste leistet. Zugleich bedingt dieser Fokus naturgemäß Abstriche andernorts – die eierlegende Wollmilchsau, soviel sei gespoilert, hat man auch mit Apache Isis noch nicht ge- bzw. erfunden.

Ein Nachteil von Orchideen-Frameworks ist die oftmals nur spärlich vorhandene Dokumentation. Findet man für Giganten wie Spring neben den offiziellen Quellen, Myriaden an Blog-Artikeln, bis hin zu YouTube-Videos und eine Unmenge an Fragen auf Stackoverflow und Konsorten, so kann ein vergleichsweise unbekanntes Framework damit nicht mithalten.

Leider stellt Apache Isis hier meiner Erfahrung nach keine rühmliche Ausnahme dar. Mehr als einmal biss ich – nicht alleine – hart auf die Tischkante, als ich bei einem Problem die unerschöpfliche Weisheit des Internets zu Rate zu ziehen suchte und letztlich wiederum nur auf die mittlerweile fast auswendig bekannte „Beyond the Basics“ Seite (https://isis.apache.org/guides/ugbtb/ugbtb.html) verwiesen wurde, die keine Antwort auf mein Problem lieferte.

Apache Isis verwendet als Schnittstelle zur Persistenz-Ebene DataNucleus (datanucleus.com), dessen Dokumentation ebenfalls nicht mit Platzhirschen wie Hibernate mithalten kann.

Kopfschmerzen bereitete uns etwa die Tatsache, dass kein Mechanismus für innere Transaktionen bereitgestellt wird, wie sie aus Hibernate bekannt sind. Ausgesprochen positiv zu erwähnen sei hier die Reaktionszeit auf der offiziellen Mailingliste von Apache Isis. Ein von uns erdachter Lösungsansatz für eben dieses Problem, wurde binnen weniger Stunden zufriedenstellend beantwortet.

Ein weiteres Problem, dass erst in der Produktion auftrat, stellte einen Kollegen auf die Probe: Ein besonders großer CLOB, der so in keiner Test-Umgebung auftrat, konnte nicht persistiert werden. Die Dokumentation ist schwierig zu diesem Thema. Ein Workaround ließ sich auf die Schnelle nicht finden, weshalb ein Feature kurzerhand umgebaut wurde, um am mittlerweile gefürchteten DataNucleus vorbei zu operieren. (Anm: Da es sich hier nicht um ein Business-Objekt handelte, war dies auch fachlich in Ordnung)

Im Testing war die GUI oft Gold wert. Insbesondere durch die Integration in eine große Systemlandschaft konnten einzelne Button-Klicks einen langwierigen Retest erleichtern oder gar ersparen. Auch das Überprüfen von Resultaten gestaltet sich angenehm und einfach.

Bevor ich begann, war mir die Idee der Naked Objects fremd und, wie es in der Natur des Menschen liegt, war ich skeptisch – insbesondere da ich den letzten Jahren eher in Richtung funktionaler Programmierung unterwegs bin, wo Daten strikt von den Funktionen getrennt werden.

Ob es wirklich Sinn macht, wieder „Fat Objects“ zu bauen? Wo zieht man die (fachliche) Grenze? (Kunden kaufen Produkte, baut man nun eine buysProduct(Product product) Funktion im Kunden oder dich lieber eine buys(Customer customer) im Produkt)? Wenn es (streng genommen) keine – oder zumindest wenige Services gibt – wie setzt man bei einem nicht trivialen Domänenmodell Single Responsibility um oder wird es verwässert als „Alles was irgendwie mit dem Domänenobjekt X zu tun hat“?

Doch ich schob die Vorurteile so gut es eben ging beiseite, und kann heute sagen, dass die Erfahrung es wert war und meine Skepsis zwar nicht vollends verschwunden ist, aber auch nicht vollumfänglich bestätigt wurde.

Wie jedes Werkzeug sollte man auch Apache Isis vor jene Aufgaben stellen, für die es gemacht wurde. Spielt die GUI eine sehr untergeordnete Rolle, würde ich Isis nicht einsetzen, denn das wäre, als würde ich mit Rollerblades durch den Wald stapfen. Natürlich geht es, aber es bringt mich unnötig ins Schwitzen und ob es Sinn macht (und daneben gut für die Umwelt ist), sei dahingestellt.

Um hingegen ein Gefühl für die Domäne zu bekommen, schnelle Iterationen beim Rapid Prototyping zu ermöglichen, käme Apache Isis in die engere Auswahl. Wichtig dabei wäre mir, zu wissen, dass der Prototyp auch tatsächlich ein solcher ist, d.h. am Ende durch einen Neuimplementierung abgelöst wird, *oder* das Endprodukt tatsächlich GUI-driven ist.

(*) Falls Sie Mitarbeiter eines Geheimdienstes sind: Bitte nicht schießen!

Top