Anfang des Inhaltsbereichs

Hintergrunddokumentation Verwaltungszustände eines Objekts  Dokument im Navigationsbaum lokalisieren

Ein vom Persistenzdienst verwaltetes Objekt einer persistenten Klasse kann sieben verschiedene Verwaltungszustände haben. Der Zustand hat Einfluß auf die Ausführbarkeit der Methoden des Persistenzdiensts. Informationen zum Zustand verwalteter Objekte liefern die Methoden des Interfaces IF_OS_CA_INSTANCE.

Die Zustände werden durch folgende Konstanten der Typgruppe OSCON wiedergegeben:

Konstante

Wert

Zustand

OSCON_OSTATUS_NOT_LOADED

0

Das Objekt existiert als Hülle für ein persistentes Objekt. Es wurden noch keine Daten von der Datenbank geladen.

OSCON_OSTATUS_NEW

1

Das Objekt ist persistent und neu erzeugt.

OSCON_OSTATUS_LOADED

2

Das Objekt ist persistent und vollständig geladen.

OSCON_OSTATUS_CHANGED

3

Das Objekt ist persistent und wurde geändert.

OSCON_OSTATUS_DELETED

4

Das Objekt ist persistent und gelöscht.

OSCON_OSTATUS_TRANSIENT

10

Das Objekt ist transient.

OSCON_OSTATUS_LOADING

12

Das Objekt wird momentan geladen.

Die Zustände 0 bis 4 beschreiben persistente Objekte mit Verbindung zur Datenbank. Ein Objekt im Zustand 10 unterliegt zwar der Verwaltung des Persistenzdiensts, hat aber keinen Anschluß zur Datenbank.

Ein Objekt im Zustand 12 befindet sich im Übergang nach OSCON_OSTATUS_LOADED. Dieser Zustand ist nur in der Methode INIT des Interfaces IF_OS_STATE beobachtbar und daher im folgenden nicht mehr aufgeführt.

Die folgende Tabelle zeigt, welche Methoden des Persistenzdiensts auf welche Zustände anwendbar sind und welchen Einfluß sie auf den Zustand eines verwalteten Objekts haben. In der letzten Zeile wird die Auswirkung der Anweisung COMMIT WORK gezeigt.

 

-

0

1

2

3

4

10

CREATE_PERSISTENT

1

3

exc

exc

exc

3

exc

DELETE_PERSISTENT

-

4

0

4

4

4

exc

GET_PERSISTENT

2

2

1

2

3

exc

exc

GET_attribute

exc

2

1

3

3

exc

10

SET_attribute

exc

3

1

3

3

exc

10

REFRESH_PERSISTENT

exc

0

exc

0

exc

exc

exc

RELEASE

exc

-

exc

-

exc

exc

exc

CREATE_TRANSIENT

10

exc

exc

exc

exc

exc

exc

GET_TRANSIENT

exc

exc

exc

exc

exc

exc

10

COMMIT WORK

-

0

0

0

0

-

10

 

Alle Methoden bis auf GET_attribute und SET_attribute sind Methoden des Klassenakteurs (siehe Komponenten des Persistenzdiensts). Der Einfachheit halber sind Klassen- und Interfacemethoden hier unter ihrem typischen Namen zusammengefasst. GET_attribute und SET_attribute sind Methoden der persistenten Klasse selbst.

Die Zahlen geben die Verwaltungszustände wieder. Beispielsweise überführt die Methode DELETE_PERSISTENT ein persistentes Objekt aus den Zuständen 0, 2, 3 und 4 in den Zustand 4.

Der Strich (-) steht hier für ein Objekt der persistenten Klasse, das zwar vorhanden sein kann aber nicht verwaltet wird. Eine solche Situation kann beispielsweise auftreten, wenn ein persistentes Objekt gelöscht wird, indem der Methode DELETE_PERSISTENT eine Referenz übergeben wird. Nach der Anweisung COMMIT WORK ist das Objekt auf der Datenbank gelöscht und wird nicht mehr verwaltet, besteht aber weiterhin im internen Modus, solange nicht sämtliche Referenzen darauf gelöscht werden.

Aus den Tabellen ist ersichtlich, dass die Methoden DELETE_PERSISTENT, GET_PERSISTENT und REFRESH_PERSISTENT nur mit persistenten Objekten im Zustand 0 bis 4 arbeiten können, während GET_TRANSIENT nur mit transienten Objekten im Zustand 10 arbeiten kann.

Jeder Versuch, eine Methode auf einen Verwaltungszustand anzuwenden, für den sie nicht geeignet ist, führt zu einer Ausnahme exc.

 

 

Ende des Inhaltsbereichs