Architekturzentrierte, modellgetriebene Softwareentwicklung für das Zikula Application Framework

PHP braucht keinen Code
Kommentare

Bereits an dieser Stelle sollte das Modell einmal gespeichert werden. In der rechten oberen Ecke des Editorfensters befindet sich ein kleines rotes Icon, falls Fehler im Modell existieren. Fährt der Benutzer

Bereits an dieser Stelle sollte das Modell einmal gespeichert werden. In der rechten oberen Ecke des Editorfensters befindet sich ein kleines rotes Icon, falls Fehler im Modell existieren. Fährt der Benutzer mit der Maus über dieses Symbol, werden entsprechende Hinweise angezeigt, die Aufschluss darüber geben, was zu tun ist. Als Erstes wird ein Containerelement von jedem Typ benötigt. Diese Elemente können über Mausklicks in der Palette ausgewählt und auf der Zeichenfläche abgelegt werden. Alternativ können Popups benutzt werden, die in der Zeichenfläche erscheinen, sobald die Maus auf ihr zum Ruhen kommt. Jedem Container muss ein beliebiger Name zugewiesen werden. Abbildung 5 zeigt, wie das Modell jetzt in etwa aussieht – Programmieren in bunten Farben.

Abb. 5: Containerelemente für die technischen Schichten

Auch an den einzelnen Elementen erscheinen nun kontextsensitive Hinweise auf nicht erfüllte Validierungsregeln. Der Anwender sieht somit jederzeit, an welchen Stellen er noch nachbessern muss. Das Containerelement für die Geschäftslogik muss beispielsweise von einer Datenquelle, sprich einem Persistenzcontainer, abhängig sein. Die Spezifikation solcher Abhängigkeiten zwischen den Containern wird über die Kantenelemente vorgenommen. Auch hier kann die Palette zur Erstellung verwendet werden. Eine schnellere und intuitivere Variante besteht darin, mit der Maus über ein Element zu fahren und die erscheinenden Pfeile als Startpunkte für Drag-and-Drop zu gebrauchen. Abbildung 6 zeigt das Modell nach Hinzufügen der notwendigen Abhängigkeiten.

Abb. 6: Container mit Abhängigkeiten

Die Fehlermeldung des Elementes dataLayer besagt, dass der Persistenzcontainer mindestens eine Tabelle beinhalten muss. Um nun die Datenschicht zu definieren, lässt sich durch einen Doppelklick auf das Element der entsprechende Untereditor öffnen. Die Palette des Persistenzeditors verfügt über eine Menge verschiedener Einträge. Das Hauptelement ist die Tabelle, die in der Lage ist, unterschiedliche Felder und Indexe in sich aufzunehmen. Sobald eine Tabelle auf der Zeichenfläche existiert, erscheint ein tabellenspezifisches Popup, um leicht neue Unterelemente hinzuzufügen. Sowohl Tabellen als auch Felder verfügen über mehrere Attribute, die im gegenwärtigen Stand am einfachsten in der Properties View verwaltet werden. Zukünftig sind individuelle Dialoge zur Änderung von Eigenschaften geplant. Nachdem mehrere Tabellen spezifiziert wurden, müssen noch die Relationen zwischen ihnen definiert werden. Dies erfolgt wie im Haupteditor mithilfe von Kantenelementen. Abbildung 7 zeigt eine mögliche Struktur für eine rudimentäre Kundenverwaltung.

Abb. 7: Persistenzelemente

Sowohl Tabellen als auch Felder haben ein Attribut namens isLeading, das definiert, ob das jeweilige Element führend ist. Dies trifft in diesem Modell auf die Kundentabelle sowie auf die Felder company, date, amount, title und lastName zu. Neben der Modellierung von Tabellenschemata unterstützt der Persistenzeditor ferner ein Containerelement für Konfigurationsvariablen. Deren Definition verläuft analog zu der von Tabellenfeldern, für ein Standardmodul ist dies meist nicht notwendig. Nach Speichern und Schließen des Untereditors wird der Haupteditor neu geladen, um die vorgenommenen Änderungen zu synchronisieren. Nun enthält nur noch der Prozesscontainer einen Fehler: es wird mindestens ein Prozessor benötigt. Wieder wird per Doppelklick auf das Element ein Untereditor mit dem jeweiligen Kontext geöffnet.

Abb. 8: Prozesselemente

In Abbildung 8 wurde ein Prozessor für einen Admin-Bereich angelegt und in ihm verschiedene Zustände erstellt, die unterschiedlichen Anwendungsfällen entsprechen. Normalerweise kommen auch zwischen den Zuständen relationale Verbindungen zum Einsatz, um zum Beispiel Weiterleitungen zu definieren. Da der Generator diese Transitionen jedoch noch nicht auswertet, können sie entfallen. Das Gleiche gilt derzeit für Controller-Elemente. Auch der Prozesseditor wird gespeichert und wieder geschlossen. Nach der Synchronisation sollten nun im gesamten Modell keine Fehler mehr vorhanden sein. In diesem Fall wird der Menüpunkt File > Generate module aktiviert, der die Ausführung des Generator-Workflows übernimmt. Der Benutzer wählt das gewünschte Ausgabeverzeichnis und erhält anschließend eine Bestätigung über den Verlauf der Generierung. Damit ist die Generierung abgeschlossen, und im Erfolgsfall kann das erzeugte Modul nun direkt eingesetzt werden. Die folgenden Screenshots zeigen einige typische Darstellungsformen. Sie sind einem anderen Beispielmodul entnommen: AutoExchange soll zu einer Börse für Projekte und Dienstleistungen reifen. Abbildung 9 zeigt den Anwendungsfall view, der eine Liste von Datensätzen anzeigt.

Abb. 9: Listendarstellung
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -