CX_OVERWRITING_REF
Klassenhierarchie
- CX_CLASS
- CX_SIMPLE
- CX_TERMED
- CX_EXPANDABLE
- CX_DESCRIPTIVE_REF
- CX_OVERWRITING_REF
- CX_DESCRIPTIVE_REF
- CX_EXPANDABLE
- CX_TERMED
- CX_SIMPLE
Beschreibung: (Business Pattern)
Diese Klasse ist ein Overwriting Wrapper. In der Regel wird die Klasse nicht direkt angesprochen, sondern es wird der InstantView®-Befehl WrapObject eingesetzt. Die überschriebenen Zugriffsausdrücke werden mittels einer Instanz der Klasse CX_ATOM_TBL verwaltet (uniqueID = "Anonymous Slot").
Achtung: Die Atom-Table wird aktuell beim erstmaligen Überschreiben eines Slots (bei der ersten Verwendung dieses Überschreibungspfads) in einem persistenten CX_OVERWRITING_REF in der Datenbank aktualisiert. Die Atom-Table wird jedoch nur beim Öffnen der Datenbank und beim Erweitern der Atom-Table neu geladen, sodass es sein kann, dass ein zweiter Client, der früher gestartet wurde, die neu angelegten Slots noch nicht kennt und damit nicht korrekt lesen kann. Das Problem lässt sich aktuell durch einen Neustart des Clients oder durch erneutes Öffnen der Datenbank gelöst werden.
Achtung: Für die Indizierung von CX_OVERWRITING_REFs gelten zusätzliche Einschränkungen.
Code-Beispiel:
// assuming target is filled with a persistent object
"target" target Put(uniqueID)
target WrapObject(OVERWRITING) -> wrapper
/* this is equivalent:
CreatePersObject(CX_OVERWRITING_REF) -> wrapper
target wrapper Call(SetContents)
*/
wrapper Copy(uniqueID) Attention // => "target"
"wrapper" wrapper Put(uniqueID)
// now wrapper Copy(uniqueID) <> target Copy(uniqueID)
wrapper Copy(uniqueID) Attention // => "wrapper"
target Copy(uniqueID) Attention // => "target"
Um einen transienten Wrapper auf ein persistentes Objekt zu erzeugen muss CreateTransObject verwendet werden. Der Befehl WrapObject erzeugt immer ein Objekt in derselben Datenbank wie das Target-Objekt.
// assuming target is filled with a persistent object
target CreateTransObject(CX_OVERWRITING_REF) -> wrapper
target wrapper Call(SetContents)
Funktion | MA* | Parameter | Rückgabe | Kurzbeschreibung |
---|---|---|---|---|
Overwritten | VECTOR〈OBJECT〉 | Namen der überschriebenen Slots und Datenfelder | ||
Contents | OBJECT | Fragt das gewrappte Objekt ab | ||
Deleted | INTEGER | Prüft, ob der Wrapper in der Datenbank logisch gelöscht wurde | ||
GetSiblings | COLLECTION | Alle Siblings dieses Objektes | ||
GetSiblings2 | COLLECTION | Alle Siblings dieses Objektes | ||
GetSlotEntries | VECTOR |
Rückgabe von internen Informationen zu Slots | ||
LastUpdate | OBJECT | Liefert das Datum des letzten Schreibzugriffs auf den Wrapper | ||
Link | OBJECT | Dieses Objekt in die Liste der Objekte mit Gültigkeit einfügen | ||
NextValidObject | OBJECT | Liefert das zu dem Wrapper nachfolgende, gültige Austauschobjekt. | ||
PreviousValidObject | OBJECT | Liefert das zu dem Wrapper vorherige, gültige Austauschobjekt. | ||
ReferenceCount | INTEGER | Anzahl Referenzierungen | ||
RestrictedValidity | * | Gültigkeitsbereich eingeschränkt? | ||
SanityCheck | INTEGER | Prüfung auf Konsistenz des Wrappers | ||
SetContents | OBJECT | Setzt das gewrappte Objekt | ||
Siblings | * | Objekte mit Gültigkeit | ||
SpanDateValidity | * | STRING | Gültigkeitszeitraum lesen/schreiben | |
string | INTEGER | CX_STRING | Liefert die String-Darstellung des Objektes | |
Unlink | Dieses Objekt aus der Liste der Objekte mit Gültigkeit entfernen | |||
Unlink2 | Dieses Objekt aus der Liste der Objekte mit Gültigkeit entfernen | |||
Valid | CX_DATE | INTEGER | Prüft, ob Wrapper und Objekt zu dem Zeitpunkt gültig sind | |
VerifySiblings | INTEGER | Ring der Austauschobjekte prüfen | ||
ValidSince | CX_TERM | Liefert den Beginn der Gültigkeitszeitspanne für Objekt und Wrapper. | ||
ValidToday | INTEGER | Prüft, ob Wrapper und Objekt zum aktuellen Gültigkeitsdatum gültig sind. (siehe: Valid) | ||
ValidUntil | CX_TERM | Liefert das Ende der Gültigkeitszeitspanne für Objekt und Wrapper. |
* MA = Member-Access-Funktion,
grau unterlegt = geerbte Funktion
Datenfeld | Typ | Referenz-Klasse | I* | Kurzbeschreibung |
---|---|---|---|---|
_uniqueID | STRING | * | Eindeutiger Schlüssel | |
_validity | POINTER | CX_VALIDITY | Gültigkeitszeitraum des Objektes | |
_object | POINTER | CX_CLASS | Das gewrappte Objekt |
* I = Indizierbares Datenfeld,
grau unterlegt = geerbtes Datenfeld
Modul | Kurzbeschreibung |
---|---|