Open j3nsch opened 2 years ago
In den ersten Schritten definieren die Modelklassen, wie Opus\Common\UserRole
, ihre Beschreibung als Array. Es wäre denkbar, dass das in Zukunft in JSON-Dateien ausgelagert wird.
Es ist auch denkbar Erweiterungen zu erlauben, wenn es die darunter liegende Datenbank-Implementation erlaubt. Das heißt das Datenmodell kann um Felder, auch komplexe, erweitert werden. Das Problem dabei sind potentielle Konflikt mit existierenden Funktionen in den Modellklassen, wenn Get/Set/Add-Funktionen dynamisch generiert werden. Es ist einfacher, wenn erweiterte Felder (Enrichments 3.0?) über spezielle Funktionen gehandhabt werden. Die Vor- und Nachteile müssen noch abgewogen werden. Es müssen auch erst einmal noch weitere Erfahrungen mit der auf Doctrine basierenden Implementation gesammelt werden.
Dokumentation zum ModelDescriptor im Wiki von opus4-model angefangen.
Als nächstes sollten die Descriptor-Klassen mit Tests für alle Varianten der Nutzung und Erweiterung implementiert werden. Es macht Sinn an dieser Stelle sämtliche Datenmodell so komplett wie möglich in die Beschreibungen aufzunehmen und dabei die verbleibenden Problemfälle zu identifizieren.
Mit den Klassen
ModelDescriptor
undFieldDescriptor
soll das Datenmodell beschrieben werden. Das soll die Beschreibung des Datenmodells unabhängig von den Instanzen einer Model-Klasse machen.In der alten Framework-Implementation wurden Field-Objekte für jedes Feld eines Model-Objekt erzeugt. Für ein Dokument mit 900 Autoren (bekannter Extremfall) heißt das etwa 9000 Field-Objekte für die Autoren allein. In der neuen Implementation sollen die beschreibenden Objekte nur noch einmal existieren. Das senkt den Speicherverbrauch, erhöht die Performanz und vereinfacht die Modellklassen.