Aktuell wählen Formulare ihre Formularvorlage immer anhand des konkret dargestellten Objekttyps. Dabei wird immer die "beste" Formularvorlage genommen, die für das dargestellte Objekt gefunden werden kann.
Szenario
Im Modell sind unterschiedliche fachliche Aspekte in unterschiedlichen Obertypen realisiert: Typ "Finanzobjekt" hat Finanzattribute, Typ "Bewertbares Objekt" hat Statusattribute usw.
Für jeden dieser Obertypen ist im Modell eine Formulardefinition hinterlegt: Z.B. ein Formular zur Anzeige der Finanzattribute am "Finanzobjekt", ein Formular zur Anzeige der Statusinformationen an "Bewertbares Objekt".
Ein konkreter Modelltyp "Projekt" erbt von beiden Oberklassen und erweitert diese um spezifische Attribute.
Es soll nun neben einer Liste (Auswahlkomponente) solcher "Projekte" eine Reihe von Formularen realisiert werden, die jeweils unterschiedliche Aspekte des gewählten Modellelements anzeigen.
Problem
Wird nun ein neues Formular erstellt und als "Typ" explizit eine der Oberklassen (z.B. "Finanzobjekt") gewählt, wird das neue Formular trotzdem für den konkreten Modelltyp initialisiert und nicht die im Modell hinterlegte Formularvorlage für den gewählten Typ verwendet. Man muss nun in einem separaten Schritt über die Funktion "Formular gestalten" die im Modell hinterlegte Formularvorlage für "Finanzobjekt" explizit auswählen. Wenn die Auswahlkomponente neben "Projekt" noch weitere Subklassen von "Finanzobjekt" beinhaltet, muss diese Anpassung für jeden konkreten Modelltyp wiederholt werden, damit überall das Formular "Finanzobjekt" angezeigt wird.
Lösung
Am Formular soll nicht nur für einen konkreten Objekttyp (Typ des dargestellten Modells - am Beispiel) eine Formularvorlage definiert werden können, sondern auch eine Formularvorlage für einen abstakten Typ. Erstellt man ein Formular mit genau einer Formularvorlage für einen abstrakten Typ, wird diese Vorlage für die Darstellung verwendet - unabhängig davon welche Formularvorlagen am Modell für einen konkreten (oder abstrakten) Modelltyp definiert sind. Damit kann man erreichen, dass in einer bestimmten Sicht nur ganz gewisse Attribute dargestellt werden unabhängig davon welchen konkreten Typ das dargestellte Objekt hat.
Im Unterschied zu der Problembeschreibung muss hierfür das spezielle Formular in der Sicht "Finanzattribute" statt im Modell am abstrakten Obertyp "Finanzobjekt" konfiguriert werden.
Test
In tl-demo in der Sicht "Technisches Demo:Komponenten:Polymorphe Formulare" hat das Formular "Angepasstes Formular" eine fixe Formularvorlage, die für alle angezeigten Typen verwendet wird. In den Einstellungen dieser Sicht kann das Formular bearbeitet werden.