Lade...
 

CX_OBJECT_MANAGER::ChangePseudoClass

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:

  1. Die bestehende Pseudoklasse (mit der ungültigen ID) wird muss umbenannt werden (Präfix: _OLD).
  2. Es muss eine neue Pseudoklasse mit den gleichen Angaben der alten Klasse (storage & co.) angelegt werden, nur mit einer anderen (gültigen) Klassen-ID.
  3. 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
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 -  
Funktionsaufruf: Call(ChangePseudoClass)