
035: Recycling-Heroes - New entity (Document)
Nach der Generierung der App geht es in die eigentliche Entwicklung. Die App muss für unsere Nutzung angepasst und ausgebaut werden, um unsere spezifischen Anforderungen zu erfüllen. Daher erweitern wir das Datenmodell um eine neue Entität.
Inhaltsverzeichnis
Einleitung
In der letzten Folge hatten wir mit relativ wenig Aufwand unsere App generiert. Dabei haben wir verschiedene Generatoren für das Datenmodell und den RAP Stack verwendet, was die Entwicklungszeit unheimlich erhöht. Die eigentliche Arbeit beginnt aber erst dann mit der Anpassung der Anwendung und der Ausprägung unseres eigenen Use-Cases.
Entität
Der Standard RAP Generator kann nur eine einzelne Entität generieren. In unserem Datenmodell haben wir allerdings auch eine Child Entität im Datenmodell. Daher erweitern wir unser Datenmodell um eine weitere Entität für die Tags. Da wir bereits die Tabelle mit dem Generator angelegt haben, können wir direkt mit der Definition des Core Data Service beginnen. Per Rechtklick auf der Tabelle können wir den Wizard starten und die Tabelle ist direkt auch als Referenzobjekt definiert. Nach der Eingabe des Namens und der Beschreibung solltest du immer darauf achten, dass du auch den richtigen Typen für die Generierung verwendest, hier möchten wir eigentlich immer eine VIEW ENTITY definieren. Nach der Generierung räumen wir noch den View auf und aktivieren das Objekt.
Als nächstes müssen wir die Beziehung im Datenmodell herstellen, dazu verwenden wir kleinere Code Snippets, die uns dabei helfen sollen die Beziehung zwischen den Objekten zu dfinieren. Von Root zu Child benötigen wir eine Composition und geben den anderen View in der Definition an. Dann vergeben wir einen sprechenden Alias und propagieren die Assoziation auch nach außen. Auf Ebene von Child definieren wir eine "Association to parent" auf unsere Root Entität. Nachdem wir den Alias und die Verknüpfung umgestellt haben, geben wir noch die Assoziation in der Feldliste mit. Danach können wir beide Views aktivieren und haben damit die Beziehung auf der untersten Ebene definiert.
Nun können wir mit der Anlage des Core Data Service für die Projektion beginnen. Hier kannst du direkt auf dem Interface View starten und per Rechtsklick den neuen Core Data Service anlegen. Nachdem wir auch hier einen Namen und eine Beschreibung vergeben haben, wählen wir noch den richtigen Typen aus den Templates und legen den View an. Auf dieser Ebene überschreiben wir die Assoziation aus dem Interface und leiten auf den passenden Core Data Service auf der Projektionsebene um. Den Schritt machen wir jeweils auf beiden Ebenen und aktivieren dann die beiden Views, womit wir die Projektion miteinander verbunden haben.
Verhalten
Da wir nun das Datenmodell erweitert haben, müssen wir noch das Verhalten anpassen, damit die Objekte untereinander interagieren können und auch wissen, welche Beziehungen existieren. Dazu findest du ebenfalls einen Eintrag im RAP Generator, wie entsprechend die Beziehungen definiert sind. Dazu kopieren wir den Code Snippet, um eine weitere Entität im Verhalten zu definieren. Nun müssen wir noch die Bestandteile auf unser aktuelles Datenmodell anpassen. Wir tauschen den Core Data Service aus und vergeben einen sprechenden Alias. Ebenfalls haben wir unsere eigene Tabelle im Datenmodell, sowie eine neue Draft Tabelle. Hier vergeben wir den Namen, müssen die Tabelle später aber noch generieren. Das Sperren und die Berechtigungen erhalten wir in diesem Fall über die Assoziation aus unserer Root Entität. Die Schlüsselfelder sollten wir auf Readonly setzen, da diese im Fall einer Anpassung nicht mehr änderbar sein sollten. Dann definieren wir noch das Mapping von Core Data Service zu Tabelle, damit später beim Schreiben auch die Datenbank befüllt wird. Bevor wir das Verhalten aktivieren können, generieren wir per Quick Fix die Draft Tabelle, die automatisch im System angelegt wird und als Grundlage unsere Datentabelle verwendet. Damit wir später auch neue Tags anlegen können, müssen wir auf Root Ebene noch die Assoziation mit Create definieren und können das Objekt aktivieren.
Die Erweiterung müssen wir ebenfalls auf Projection Ebene durchführen. Dazu definieren wir uns die neue Entität und die Assoziation in der Root Entity. Zum Abschluss tauschen wir die Platzhalter durch die aktuellen Objekte und Beziehungen aus und können das Objekt aktivieren.
Service
Aktuell befindet sich nur eine Entität im Service und die Beziehung ist im Service Binding nicht sichtbar. Daher müssen wir auch die neue Entität im Service nach außen freigeben. Dazu erweitern wir die Service Definition und geben unsere Entität an und aktivieren zum Abschluss den Service.
Zusammenfassung
In der heutigen Folge haben wir uns um die Erweiterung eines bestehenden Datenmodells gekümmert. Der Generator hatte uns beim letzten Mal eine einfache App zur Verfügung gestellt, aber nicht das vollständige Datenmodell. Eine automatische Anpassung oder einen Wizard gibt es zum heutigen Tag noch nicht, weshalb wir die Anpassung manuell durchführen müssen.
YouTube
Video