Definition
Die Builder
definieren das Modell (-> Metadaten-Modell). Es gibt unterschiedliche Builder, je nach Zweck, der in das Modell integriert werden soll.
In dieser Hierarchie ist das Modell und damit auch die Builder aufgebaut:
Modell
Application-Layouts (Menü, Dashboard)
Class
Parameter
Pfade = Relationen
Class-Layouts (Liste, Detail, Titel, Graph, …)
Der Ursprung ist das MetaModel das auch selbst einen Builder bestitzt, den MetaModelBuilder
.
Unterhalb dieser Hierarchie gibt es noch weitere detaillierte Builder. Das Pattern setzt sich fort.
Granularität
Der grundsätzliche MetaModelBuilder
wird vom Quino Framework zur Verfügung gestellt. Ein Applikations-Entwickler erstellt dann eigene Builder auf der ersten Ebene darunter. Typischer weise für Klassen und Layouts je einen Builder.
Aufbau Builder
TODO Insert Code ClassBuilder
Abfolge
Das Modell wird in einer bestimmten Abfolge zu einer Applikation erstellt. Diese Abfolge ist hier in den Methoden zu sehen:
Add Classes
Add Paths
Add Properties
Kontext/Elements
Die Builder verwenden einen Kontext, der alle bisher definierten Elemente des Modells enthält. Es ist eine Hilfestellung um auf bereits definiertes zuzugreifen. Das hilft in der Abfolge der Erstellung und auch bei Klassen-Übergreifenden Definitionen, wie z.B. Relationen.
Code Pattern
Der Code ist als Fluent-API aufgebaut. Allgemein kann man sagen:
Alle Methoden direkt auf dem Builder reichern das Modell auf der Hierarchiestufe des aktuellen Typ an.
.Add()
fügt eine Hierarchiestufe detaillierter hinzu und gib den detaillierten Builder zurück.
Einbinden
Im Bootstrapping der Applikation werden die Builder hinzugefügt mit
.UseBuilder<>
Hier wird dann die Referenz zum MetaModelBuilder
gesetzt.
Generieren
Um in der Applikations-Logik oder in den Buildern selbst mit dem Modell arbeiten zu können, erstellt der Generator konkrete C# Klassen. Alle Klassen des Modells sind dann auch als C# äquivalente verfügbar.
Siehe: Modell Generieren
Checkliste
Die Checkliste Modellierung hilft dabei einen einheitlichen Aufbau einzuhalten und wichtige Elemente nicht zu vergessen.
Details siehe