Lade...
 

CX_OBJECT_MANAGER

CX_OBJECT_MANAGER

Klassenhierarchie
Beschreibung:

Der Objektmanager ist eine Abstraktion, welche die physischen Besonderheiten der Speicherung der Objekte von der übrigen ClassiX®-Architektur trennt. Der Objektmanager steuert

  • in welchem Segment / Cluster ein Objekt gespeichert wird
  • in welche RootEP-Collections es eingefügt wird
  • wie die Datenbank in physische Teildatenbanken, Layer und Domains aufgeteilt wird

 

Der Objektmanager erzeugt, löscht und kopiert persistente Objekte.

Code-Beispiel:
...

 

Methodenverzeichnis (MDI)
Funktion MA* Parameter Rückgabe Kurzbeschreibung
AnalyzeSegmentLayout
212705
  INTEGER,INTEGER CX_JSON_OBJECT Liefert eine Speicherauswertung des angegebenen Segments nach Slots, Slotwerten, und Objekten.
ChangePseudoClass
202338
  OBJECT, INTEGER    
CheckOStoreVersion   STRING   Prüft, ob auf dem Client und dem Server die gewünschte ObjectStore-Version installiert ist, z.B. "ObjectStore Release 6.0 Service Pack 8". Wenn nicht, wird ein Fehler gemeldet. Im Startup-Window bewirkt diese Fehlermeldung ein Abbruch des Programmes, so dass der Zugriff auf eine unerwünschte Datenbankversion verhindert wird.
ClearClientCache       Client-Cache "leer" machen, um für Performance-Tests vergleichbare Bedingungen herzustellen
CloseDatabase   INTEGER   Datenbank schließen. Der Parameter bezieht sich auf die Nummer der Datenbank in classix.ini
ClusterInfo   ein (in der Datenbank gespeichertes) Objekt CXS_CLUSTER_INFO Information über Segment und Cluster, in dem das Objekt gespeichert ist
CollectInSegment   INTEGER, INTEGER, STRING COLLECTION Sammle alle Objekte einer bestimmten Klasse in einem Segment. Objekte von abgeleiteten Klassen werden mit einbezogen
CollectObjects   INTEGER, INTEGER COLLECTION deprecated - Behandlung AS Overflow ist unzureichend
fasst alle Objekte der mit dem ersten Parameter angegeben Klasse in einer Collection zusammen -
... weitere Hinweise und Unterschiede
CollectObjects2   INTEGER, INTEGER COLLECTION
CollectObjects3   INTEGER, INTEGER, INTEGER, INTEGER COLLECTION
CollectOrphans   INTEGER, STRING COLLECTION Objekte für das physische Löschen aufsammeln -
... weitere Hinweise und Unterschiede
CollectOrphans2   COLLECTION, STRING COLLECTION
CopyPersObject   OBJECT, INTEGER, INTEGER, VECTOR OBJECT verhält sich wie der gleichnamige InstantView®-Befehl; zusätzlich können Datenfelder von der Übernahme in das kopierte Objekt ausgeschlossen werden (Beispiele)  
CopyREPCollection   STRING, STRING, INTEGER   erzeugt eine Kopie der Collection, die mit REP 'Name(alt)' verbunden ist und bindet sie an REP 'Name(neu)'
GetREP   INTEGER, INTEGER, INTEGER COLLECTION Bietet Zugriff auf eine REP unter Umgehung des aktuell gesetzten Layers und der aktuell gesetzten Domain.
CreateReserveSegments   INTEGER    
DataFields     COLLECTION man erhält alle im ClassiX®-System vergebenen Datenfeld-Namen und ihre Verwendung, d.h. Member welcher Klasse(n) / dynamisches Datenfeld / Specifier 
DebugShowReloptQueue       Interne Datenstrukturen ausgeben
DestroyAllSegTables        
EnableDeadlockPrevention
214458
  INTEGER   Mechanismus zum Verhindern von Deadlocks deaktivieren
FreeAddressSpace       Address-Space freigeben durch Transaktions-Wechsel
FreeVirtualMemory   INTEGER   out of virtual memory Exception verhindern
GetAddressSpaceSize     CX_VALUE Liefert die tatsächliche Größe des Adressraumes
GetCacheSize     INTEGER Liefert die Größe des Datenbank-Caches zurück
GetCacheSizeFactor     CX_PERCENT Liefert den Cache-Size-Factor zurück
GetClusteringMode     CX_BIT_PATTERN Liefert den Clustering-Mode
GetClusteringObject     OBJECT  
GetDatabases     COLLECTION alle Datenbanken
GetDBUtility     CX_DB_UTILITY liefert das Database Utility Objekt
GetGlobalFetchPolicy     INTEGER Parameter für SetGlobalFetchPolicy
GetLayers     COLLECTION Layers und Domains, repräsentiert durch CXS_LAYER, CXS_DOMAIN
GetLoggedClasses     Int Vector Liefert die aktuelle Klassen-Whitelist des Change-Loggers
GetNotLoggedClasses     Int Vector Liefert die aktuelle Klassen-Blacklist des Change-Loggers
GetMemoryReservedForApps     CX_VALUE Liefert Größe des für ClassiX reservierten Speichers
GetMetaClass   INTEGER OBJECT Metaklasse für Klasse 'classID'
GetMetaClasses    
COLLECTION<CX_META_CLASS>
alle Metaklassen
GetObjectsInSegment   STRING, INTEGER, INTEGER COLLECTION liefert alle Objekte in einem bestimmten Abschnitt eines Segments, vergleiche auch CXS_SEGMENT::GetObjects
GetObjectsReferringTo   OBJECT, STRING COLLECTION die Cross-Referenz der Objekte muss vorher mit dem Utility-Programm cxxosr.exe aufgebaut werden
GetOStoreVersion   INTEGER STRING Ermittelt die ObjectStore-Version des lokalen Rechners (Parameter = 1) oder des Datenbankservers (Parameter = 0). Bei einem Fehler (ObjectStore nicht gestartet, Datenbankserver nicht erreichbar) liefert die Funktion einen Leerstring zurück, ansonsten die Version, z.B. "ObjectStore Release 6.0 Service Pack 8"
GetPageSize     CX_VALUE Liefert die aktuell eingestellte Größe einer Page zurück.
GetReadLockTimeout     INTEGER Default ist 1 min
GetRootClass     CX_META_CLASS Metaklasse für CX_CLASS
GetSegments     COLLECTION alle Segmente
GetServers     VECTORject> Information über alle ObjectStore-Server
GetSessions     INTEGER  
GetStartDirectory     STRING  
GetTerminalServerCacheSize     CX_VALUE Liefert die Cache-Size im Fall einer Remote-Desktop-Verbindung
GetUnassignedAddressSpace     INTEGER  
GetWriteLockTimeout     INTEGER Default ist 1 min
Instantiate   OBJECT,OBJECT OBJECT Instanziiert ein Objekt, das noch als "lazy creator" existiert, in der Nähe eines anderen. Bsp.: obj masterObj GetManager(OBJECT) Call(Instantiate) -> obj
Wichtig ist die anschließende Zuweisung an die Variable, die das Objekt ursprünglich hielt, denn die Lazy-Creator-Hülle hat nun keine Bedeutung mehr
IsRegistered   OBJECT INTEGER  
LinkAtPosition   OBJECT, STRING, STRING, OBJECT, OBJECT, INTEGER   Wie Link, aber Eintrag in Collection an eine bestimmte Position
LookUpMetaInfo   STRING, INTEGER OBJECT Sind Metadaten in der Datenbank gespeichert?
flag = 4 - Enumerationstabellen
flag = 8 - Locales

Der Eingabeparameter gibt an, für welche Metadaten man sich interessiert; das Ausgabeflag zeigt durch belegte Bits in der oben angegebenen Codierung, welche der abgefragten Metadaten in der Datenbank gefunden wurden.
LookUpMetaInfo zeigt die Existenz der Metadaten für Datenbanklayout und/oder System-Dictionary auch dann, wenn diese Daten beim Systemstart nicht benutzt wurden (wenn SystemDB nicht entsprechend gesetzt war)

MakeAllSegmentsVisible       Der Objektmanager "kennt" nach dem Systemstart alle aktiven Segmente, d.h. Segmente, in denen neue Objekte erzeugt werden können. Inaktive Segmente (in denen keinen neuen Objekte mehr angelegt werden) entstehen durch Segment-Splitting. Nach Aufruf dieser Funktion enthält die Segmentliste des Objektmanagers alle in der Datenbank existierenden Segmente.
MaxLayers     INTEGER liefert die Anzahl der Layers
MoveREPCollection   INTEGER, STRING   REP-Collection nach dem angegebenen Segment verschieben
NewDatabase     CXS_DATABASE Datenbank interaktiv erzeugen (Beispiel)
NewMetaClass     CX_META_CLASS Pseudoklasse interaktiv erzeugen (Beispiel)
NewREPCollection     CXS_REP_COLLECTION REP-Collection interaktiv erzeugen (Beispiel)
NewSegment     CXS_SEGMENT Segment interaktiv erzeugen (Beispiel)
NumberOfReserveSegments     INTEGER  
OpenDatabase   STRING, INTEGER INTEGER Öffne die n-te logische Datenbank (siehe classix.ini) mit neuem Pfad zu einer anderen physischen Datenbank
QueryDomain   OBJECT INTEGER alle von CX_EXPANDABLE abgeleiteten Objekte kennen ihre Domain
QueryLayer   OBJECT INTEGER Das Datenbank-Layer, in dem ein Objekt gespeichert ist, wird ermittelt. Das ist nur für Master-Objekte (im Sinne der Clustering-Strategie) möglich. Andernfalls ist das Resultat - 1
QuerySegment   OBJECT CXS_SEGMENT liefert das Segment, in dem das Objekt gespeichert ist
ReleaseAddressSpace       Der ab dem letzten Aufruf von SetAddressSpaceMarker verbrauchte Address-Space wird freigegeben. Die Funktion tut nichts (No-Operation) wenn
- SetAddressSpaceMarker nie vorher aufgerufen wurde
- bei Aufruf auf einem InstantView®-Level > 0
ReleaseAddressSpace2   INTEGER    
RenameREP   STRING   Root-Entry-Point umbenennen: legt REP 'Name(neu)' an und verbindet mit den Wert von REP 'Name(alt)'. Dies geschieht in allen physischen Datenbanken - passend zu AutoLayer 
RenameREP2   STRING, STRING, STRING   wie RenameREP, aber nur in der als Parameter angegebenen physische Datenbank. 
Wenn der Pfad zur Datenbank über eine Umgebungsvariable angegeben wird (siehe CLASSIX.INI) ), kann als Parameter statt des Pfades auch der Name der Variablen übergeben werden. 
RepairREPCollection   INTEGER, STRING, INTEGER   Repariert die REP-Collection der Klasse classID. Die neue REP-Collection wird im Segment seg erzeugt. Bei garb=0 wird die existierende REP-Collection als Vorlage benutzt, bei garb=1 die REP-Garbage-Collection. Die Reparatur ist nichts anderes als ein Kopieren aller Zeiger von der alten in die neue REP-Collection, wobei Zeiger auf Nicht-Objekte übersprungen werden.
ResetFetchPolicy   INTEGER   Fetch-Policy für ein Segment auf Standard zurücksetzen
ResetFetchPolicy2   STRING   Fetch-Policy für ein Segment auf Standard zurücksetzen
ResetGlobalFetchPolicy       Globale Fetch-Policy auf Standard zurücksetzen
ReturnMemory   OBJECT    
RestoreCollection   COLLECTION, STRING COLLECTION kopiert eine mit SaveCollection gerettete Collection in die im 1. Parameter übergebene Collection. Wird NULL übergeben, erhält man die persistente Collection (aus dem ScratchPad-Segment)
SaveCollection   COLLECTION, STRING COLLECTION erzeugt eine persistente Collection in der Datenbank (im ScratchPad-Segment) und kopiert die im Parameter übergebene Collection in diese. Dabei wird ein Name vergeben (2. Parameter)
SaveEnumTables   STRING   Enumerationstabellen aus einem File als Objekte der Klasse CX_ENUM_TABLE in der Datenbank speichern,

Leerstring als Filename heißt: alle dem System bekannten Enumerationstabellen werden gespeichert

SessionSwitching     INTEGER  
SetAccessHook   Filename, Typnamen(Vector)   Performance-Daten pro Objektzugriff erfassen
ab ObjectStore 6.0 nicht mehr unterstützt!
SetAddressSpaceMarker       Der ab jetzt weiter verbrauchte Address-Space kann mit einem folgenden Aufruf der Funktion ReleaseAddressSpace wieder freigegeben werden.
Die Funktion arbeitet nur beim Aufruf aus InstantView®-Level 0, andernfalls wie No-Operation.
SetClusteringObject   OBJECT OBJECT  
SetDefaultClusterSizeLimit
213694
  INTEGER   Setzt das Cluster-Größenlimit für die Default-Allokation.
SetFetchPolicy   INTEGER, INTEGER   Fetch-Policy für ein Segment einstellen
SetFetchPolicy2   STRING, INTEGER   Fetch-Policy für ein Segment einstellen
SetGlobalFetchPolicy   INTEGER   Globale Fetch-Policy einstellen
SetLockTimeout   INTEGER, INTEGER   wie lange auf eine Page gewartet werden soll, Intervalle in ms
SetLoggedClasses   Int Vector   Setzt die Klassen-Whitelist des Change-Loggers
SetNotLoggedClasses   Int Vector   Setzt die Klassen-Blacklist des Change-Loggers
SetSessions   INTEGER    
SetTXNPriority   INTEGER   bei Dead-Lock wird immer die TXN mit kleinerer Priorität abgebrochen, Default-Wert ist 0x8000
SlotXref       Nicht mehr verwenden! Durch Utility cxxosr.exe ersetzt.
erzeugt eine Cross-Referenz aller in der Datenbank verwendeten dynamischen Datenfelder (Beispiel)
TestDatabaseServer   INTEGER INTEGER Testet die Erreichbarkeit des für eine logischen Datenbank zuständigen Servers
UpdateDatabase
172299
    STRING aktualisiert das Datenbanklayout wie cxgoso mit Flag  /U
Where   ein (in der Datenbank gespeichertes) Objekt CXS_SEGMENT Information über das Segment, in dem das Objekt gespeichert ist

* MA = Member-Access-Funktion,
grau unterlegt = geerbte Funktion

 

Datenverzeichnis (DDI)
Datenfeld Typ Referenz-Klasse I* Kurzbeschreibung
internalName STRING      
superClass POINTER CX_META_CLASS    
realWorldClassID SHORT      
docu SHORT      

* I = Indizierbares Datenfeld,
grau unterlegt = geerbtes Datenfeld

 

Verwendung in AppsWH
Modul Kurzbeschreibung
   

InstantView Scriptsprache