Wichtig
Kleinigkeit
Fehlerbehebung
Wichtig
Detail
#23406
Die TLClass "Tag" soll eine Referenz auf das getaggte Objekt haben
Die TLClass Tag soll um eine Referenz auf das getaggte Objekt erweitert werden. Das wurde schon mal in #21498 gefordert. Allerdings wurde das Ursprüngliche Problem letztlich anders gelöst:
Dies Ticket wurde umgesetzt um in #21402 diese Tags im Versionsvergleich zu benutzen. Dies ist aber später geändert worden, so dass direkt Revision's benutzt werden.
Daher wurde das Ticket geschlossen. Allerdings wird das mittlerweile auch für das Kafka-Schema-Management in Codim verwendet. Und in POS gibt es auch ein derartiges Attribut. Daher soll es dieses Attribut direkt in der Basis geben.
Situation in POS
- Die Datei Tag.model.xml ist überschrieben. (Im Sinne von: Unter gleichem Namen nach POS kopiert.)
- Es sind zwei zusätzliche Typen definiert:
- Tag.projectArchive
- ProjectArchiveTag
- Tag.projectArchive erweitert Tag.all um das Attribut taggedObj sowie ein halbes Dutzend weiterer fachlicher Attribute.
- taggedObj ist definiert als:
{{{#!xml <reference name="taggedObj" kind="forwards" mandatory="true" type="tl.tables:ObjectTableInterface" > <annotations> <delete-protected/> <storage-algorithm> <historic-storage/> </storage-algorithm> </annotations> </reference> }}}
Situation in Codim
- Die Tag.model.xml in der Basis ist um das Attribut Tag.all#businessObject erweitert:
{{{#!xml <reference name="businessObject" kind="forwards" type="tl.tables:ObjectTableInterface" > <annotations> <delete-protected/> <storage-algorithm> <historic-storage/> </storage-algorithm> </annotations> </reference> }}}
Vorgeschlagene Umsetzung
- Das Attribut soll aus Rücksicht auf POS taggedObj heißen. Das erspart POS eine Migration. Die Migration im Kafka-Schema-Management ist vermutlich deutlich einfacher, da das ganze Projekt sehr viel kleiner ist.
- Das Attribut soll nicht mandatory sein, damit man auch einen Tag anlegen kann, wenn man kein konkretes Objekt taggen möchte, sondern einen ganzen Datenstand.
- In allem anderen sind die beiden Varianten gleich. Daher soll auch das Attribut in der Basis genau so definiert werden.
Daten Migration
Es gibt für dieses Ticket keine automatische Migration, da beim Daily Scrum entschieden wurde, dass es derzeit keinen Bedarf dafür gibt, aber dafür wichtigere Themen und zu wenig Zeit.
Projekte die nicht von com.top_logic.project.pos abhängen, müssen folgende Migration ausführen:
- Es wurde das MetaAttribut Tag:Tag.all#taggedObj eingeführt.
- Siehe: eines MetaAttributs]
- Es wurde das KO-Attribute Tag#taggedObj eingeführt.
- Siehe: eines KO-Attributs]
Projekte die von com.top_logic.project.pos abhängen, müssen zusätzlich folgende Migration ausführen:
- Das TLModel-Attribut Tag:Tag.projectArchive#taggedObj wurde nach Rücksprache mit POS an die Klasse Tag.all verschoben, damit es analog zur Definition in der Basis ist.
- Siehe: eines MetaAttributs]
- Des weiteren wurde das Attribute nicht-mandatory gemacht.
- Die MO-Referenz taggedObj wird jetzt aus der MOClass Tag geerbt. Bisher wurde diese Referenz in der ProjectTagMeta.xml mittels folgender vier MO-Attribute abgebildet: taggedObj_BRC, taggedObj_REV, taggedObj_ID und taggedObj_TYPE. Statt dessen gibt es jetzt nur noch die geerbte MO-Referenz. An der Datenbank-Tabellen-Definition ändert sich dadurch nichts. Aber da die Definition des MetaObjects in der Datenbank selber gespeichert wird, muss diese dort entsprechend aktualisiert werden.
Im Rahmen dieses Tickets ist #23639 entstanden. Es ist der Überrest des Versuchs hierfür eine automatische Datenmigration zu erstellen.
Test
Kein Test, da das Ticket fertig werden soll und für einen Test zum Beispiel neue Funktionen im Demo eingebaut werden müssten, um das Taggen von Objekten zu demonstrieren und test.