| Generator |
|
|
| Komponenten
|
| Architektur |
| Das gewünschte Endergebnis eines Generierungsvorgangs wird, wie bei modernen Generatoren üblich, original übernommen, lesbar mit Platzhaltern versehen zu einem sogenannten Template aufgearbeitet.
|
| Dieses Template wird gelesen und in ein Hilfsprogramm umgewandelt, das die eigentliche Generierung durchführt.
|
|
| Besonders ist bei unserem Generator schon dieser erste Schritt: das Leseprogramm (Parser) wird sehr detailliert mit XML-Objektbauplänen beschrieben und ist daher in hohem Maße anzupassen. So können zum Beispiel unterschiedliche Syntaxvarianten dafür sorgen, dass die Templates lesbar bleiben, etwa mit unserer übersichtlichen Unicode-Syntax. Auch als "Tag Library" bekannte Syntax-Erweiterungen werden auf diese Weise eingebunden.
|
| Das Leseprogramm erzeugt einen sogenannten TOM-Baum - eine weitere Besonderheit -, der den Lesevorgang von der Template-Struktur logisch abkoppelt. Schließlich wird das Hilfsprogramm als sogenannter GOM-Baum erzeugt, der die eigentliche Generierungsarbeit erledigt.
|
| Die innovative Architektur ist Grundlage für verschiedene Caches und Erweiterungsmöglichkeiten, so werden die einzelnen Bäume nur bedarfsweise und teilweise neu aufgebaut, womit ein überragend hoher Durchsatz erzielt wird: der Generator ist tauglich für die Erzeugung komplexer Ergebnisse in Anwendungen mit hoher Last.
|
| Die Templates können architekturbedingt wie Objekte überladen werden und somit sehr kompakt und wartungsfreundlich ausfallen - ein großer Vorteil gegenüber herkömmlichen Verfahren.
|
| Trotz der Vielzahl dieser Möglichkeiten ist die Handhabung denkbar einfach: ähnlich wie JSP-Seiten müssen die Templates lediglich erstellt und am rechten Ort abgelegt werden - alles weitere erfolgt automatisch.
|
|
Model Driven Architecture MDA
|
|
| In MDA-Projekten findet die Spezifikation auf einer hohen fachlichen Ebene statt, die passende Implementierung wird automatisch generiert. Dies geschieht unter Zuhilfenahme von technischen Hilfsmodellen, aus deren Information schließlich ein Generator den gewünschten Endcode erzeugt. Die Umwandlung des fachlichen in das technische Modell wird auch als Model-To-Model-Transformation bezeichnet.
|
|
Generator
|
| Generator Template Cartridge UML/VUI |
| Templates, die aus einem fachlichen UML-Modell die zugehörigen VUI-Adapter erzeugen.
|
| VUI-Adapter verbinden die fachlichen Objekte mit dem VUI, der virtuellen Oberfläche von SirFace. Die Adapter arbeiten nach einem Prinzip, das unter den Stichwörtern Inversion of Control bzw. Dependency Injection populär geworden ist: Die Geschäftsobjekte sind unabhängig von den Adaptern, nur diese verfügen umgekehrt über Informationen über die Objekte.
|
| Damit bleibt die Geschäftslogik frei von proprietärem Code und kann auch völlig isoliert von den Adaptern verwendet werden.
|
| Das UML-Modell liegt im XMI- oder besser UXF-Format vor, Formate, die von gängigen UML-Modellierungswerkzeugen erzeugt werden können. Es werden Informationen aus Klassen- und aus Zustands-Diagrammen ausgewertet.
|
| Zur Verwendung mit SirFace werden die Modelle mit Meta- Informationen zur Darstellung ausgestattet: Namen, Texte, Bildnamen, abstrakte Steuerparameter, abstrakte Layout-Vorgaben und weiteres.
|
Das Format dieser Meta-Daten heißt XIDL (Extended Interface Description Language) .
|
|
Generator
|
| Generator Template Cartridge UML/BL |
| Templates für Java-POJO-Klassen, die entsprechende UML-Klassen verkörpern. Diese Templates sind schlank gehalten, die eigentliche Logik wird in Form von markiertem Java-Code als Meta-Information aus dem UML-Modell geliefert.
|
| Die Verwendung von Java-Code geschieht in voller Absicht. Wir sehen es zum gegenwärtigen Zeitpunkt als wenig praktikabel an, Geschäftslogik-Code in größerem Umfang in abstrakter, in XML-Form oder gar graphisch zu beschreiben, auf Wunsch kann die Cartridge jedoch ohne weiteres in dieser Hinsicht ausgebaut werden.
|
| Im Übrigen weist diese Cartridge keine großen Besonderheiten auf, und das muß auch so sein. Denn: sie besteht nahezu vollständig aus der reinen, fachlichen Logik der Anwendung, und wir sind stolz darauf, dass das mit SirFace möglich wurde.
|
|
Generator
|
| Generator Template Cartridge UML/DB |
Templates zur Erzeugung von Mapping-Deskriptoren für das objektrelationale Datenbankwerkzeug Hibernate. Hibernate bildet Objekt-Daten in relationale Datenbanken ab. Die Beschreibung der Abbildung erfolgt gut abstrahiert mit Hilfe von sogenannten XML-Mapping-Deskriptoren.
|
| Die Cartridge aggregiert diese Beschreibungen geringfügig und steuert Standard-Werte bei, erlaubt jedoch im wesentlichen die Spezifikation als Meta-Daten an einem UML-Modell.
|
|
Generator
|
| Generator Data Cartridge Pathes |
| Vereinfacht den Zugriff auf Datenquellen mit Pfad-Ausdrücken wie XPath für XML-Datenquellen.
|
| Gerade in Templates kommt es darauf an, die Zugriffe auf die Datenquellen kompakt und übersichtlich auszudrücken, damit der Template-Code lesbar und verständlich bleibt. Die Cartridge "Pathes" enthält ein Syntaxpaket (eine Art "Tag Library"), das eine solche kompakte Schreibweise von Pfadausdrücken in Templates ermöglicht.
|
| Darauf aufbauend können entsprechende TOM- und GOM- Komponenten eingekoppelt werden, die den Zugriff auf Datenquellen über folgende Formate ermöglichen: URI, URL, XPath, JXPath, SQL, OQL, HQL, CTN und ähnliche.
|
|
Generator
|