CX_OBJECT_MANAGER::ChangePseudoClass
202338
Beschreibung:
Mit dieser Methode lässt sich die Klassen-ID eines Pseudoklassen-Objekts zur Laufzeit verändern.
Ab Dll-Version 202338 loggt ClassiX beim Start eine Warnung für jede Pseudoklasse, deren Klassen-ID außerhalb des erlaubten Bereichs ist (10000 ≤ x ≤ 29999). Pseudoklassen, deren Klassen-ID außerhalb dieses Bereichs liegt, werden in Zukunft nicht mehr unterstützt und zu einem Fehler beim Start von ClassiX führen.
Diese Methode wurde eingeführt, damit die Klassen-IDs bereits angelegter persistenter Objekte korrigiert werden können. Hierzu geht man wie folgt vor:
- Die bestehende Pseudoklasse (mit der ungültigen ID) wird muss umbenannt werden (Präfix: _OLD).
- Es muss eine neue Pseudoklasse mit den gleichen Angaben der alten Klasse (storage & co.) angelegt werden, nur mit einer anderen (gültigen) Klassen-ID.
- Die Klassen-ID aller alten Objekte ändern. (siehe Code-Beispiel)
Die Methode ändert die Klassen-ID nur dann, wenn:
- Es sowohl für die aktuelle Klassen-ID des Objekts, als auch für die neue Klassen-ID eine Klassendefinition gibt.
- Beide Klassendefinitionen Pseudoklassen sind.
- Beide Pseudoklassen von der gleichen Klasse abgeleitet sind.
- Beide Pseudoklassen das gleiche Persistenzfile verwenden.
- Beide Pseudoklassen das gleiche REP-Pattern verwenden.
- Die neue Klassen-ID im zulässigen Bereich für Pseudoklassen-IDs liegt.
Code-Beispiel:
PseudoClass(CX_USER_ITEM_OLD, 30150, ...) PseudoClass(CX_USER_ITEM, 28500, ...) FindAll(CX_USER_ITEM_OLD) iterate { CX_USER_ITEM GetManager(OBJECT) Call(ChangePseudoClass) }
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_OBJECT_MANAGER | |
Top-1 | INTEGER | Die neue Klassen-ID | |
Top-2 | OBJECT | Das zu ändernde Objekt | |
Stack(Out) | Top | - |