Anfang August habe ich über die Ausrichtung von ModuleStudio 0.7.0 berichtet. In der Zwischenzeit haben wir einige Kernpunkte bereits umgesetzt. Dieser Beitrag soll einen kurzen Eindruck geben als Vorgeschmack auf die nächste Hauptversion.
Alle grundsätzlichen DSL-Änderungen haben wir bereits vorgenommen und dabei eine ganze Reihe unnötiger Sprachelemente entfernt. In diesem Zuge wurden auch ein paar kleinere Funktionen hinzugefügt: so kann man nun bei Feldern direkt die Sichtbarkeit und die CSS-Klassen des jeweiligen Formularelemnetes im Modell beeinflussen. Die größte Umwälzung in Bezug auf Validierung und Generator war jedoch, dass Entitäten nun auch als Controller agieren und damit Aktionen beinhalten.
Nachdem die Überarbeitung der DSL abgeschlossen war, haben wir angefangen, einen Prototyp für den neuen Editor aufzubauen. Dieser neue Editor ist mittlerweile strukturell soweit fertig und bietet einige interessante Neuerungen!
Funktionen im neuen Editor
Zunächst einmal ist man zukünftig nicht mehr auf die graphische Modellierung eingeschränkt. Neben dem graphischen Editor stehen auch Tabellen- und Baumeditoren zur Verfügung, die bei Bedarf alternativ verwendet werden können. Die einzelnen Editoren werden miteinander synchronisiert: sobald man etwas verändert, aktualisieren sich alle Ansichten automatisch. Gegenwärtig ist allerdings noch nicht sichergestellt, ob alle Notationsformen auch tatsächlich am Ende im finalen Release von MOST 0.7.0 enthalten sein werden.
Der graphische Editor besteht aus mehreren Schichten. Man kann dynamisch zum Beispiel Controller, Indexe, Felder oder Variablen aktivieren und deaktivieren. Dies blendet sowohl die betroffenen Elemente als auch die entsprechenden Werkzeuge in der Palette entsprechend aus oder ein. Zusätzlich zu den Schichten gibt es Filter, mit denen man beispielsweise alle Entitäten ausblenden könnte, die nicht kategorisierbar sind.
Interessant für die Verständlichkeit und Bedienbarkeit sind Stile, die an Bedingungen geknüpft werden: damit lässt sich das Aussehen von Elementen dynamisch basierend auf den Eigenschaften verändern. Die Tabelle unit in den Screenshots hat testweise solch einen Stil zugeordnet, daher wird sie blau dargestellt. Mit dieser Funktion haben wir zum Beispiel definiert, dass die Anzeige von unidirektionalen und bidirektionalen Relationen nun automatisch die Pfeile entsprechend anpasst. Ein anderer Anwendungsfall wäre es etwa, Entitäten mit mehr als zehn Feldern automatisch mit einem roten Hintergrund zu rendern.
Bei größeren Modellen hilft eine weitere Funktion dabei, die Übersicht zu behalten: man kann nun Hierarchien aus- und einklappen! Wenn eine Person mehrere Adressen hat, kann man durch Klick auf das Minussymbol oben links bei Person die Adressen (und alles darunter) ausblenden. Ein Screenshot zeigt einen eingeklappten Zustand für die Tabelle recipe.
Nützlich wird voraussichtlich auch der Einsatz von Dekoratoren: dies sind kleine graphische Annotationen (Icons), die bestimmte Zustände reflektieren. So könnten beispielsweise bestimmte Features einer Entität, wie etwa eine Baumstruktur (nested set), geographische Funktionen, Metadaten etc. visualisiert werden.
Auch einige kleinere Detailverbesserungen haben wir integriert: zum Beispiel werden nun beim Anlegen von Relationen die Aliase passend mit Singular- und Pluralnamen der Entitäten vorbelegt. Das Umordnen von Feldern wurde mit Aktionen zum Verschieben im Kontextmenü vereinfacht (an den Anfang, nach oben, nach unten, an das Ende).
Was fehlt noch?
Trotz der vielen neuen Funktionen bleibt noch Einiges zu tun, damit eine erste Vorabversion von ModuleStudio 0.7.0 veröffentlicht werden kann. Hier eine Liste der wichtigsten Punkte:
- Das Rahmenprogramm muss erneuert und mit den neuen Editoren integriert werden; auch hier ist eine Reduktion auf die wesentlichen Punkte forciert. Dieser Punkt ist komplexer als er sich liest und stellt daher zur Zeit den größten Blocker dar.
- Wie auf den Screenshots unschwer erkennbar, ist die Gestaltung derzeit größtenteils noch ein Entwicklungsstand zu Testzwecken. Die UI soll für 0.7.0 insgesamt schöner und ansprechender gestaltet werden. Zwar kein Blocker für die erste Vorabversion, wohl aber für ein Final Release.
- Die kontextbasierte Integration des textuellen Editors für Entitäten steht noch aus. Dies könnte man notfalls aber ausklammern und entweder nach der ersten Vorabversion oder sogar erst nach 0.7 angehen.
- Die Property Views sollen verschönert und funktional verbessert werden. Das ist zwar kein Blocker, wäre aber wünschenswert für die neue Hauptversion.