Anhand eines Anwendungsbeispiels werden beide Varianten der "konsistente Versionierung" erläutert. Im Statusschema ist der Status "Freigegeben" (IZQFR) vorhanden. Es wird ein Objekt mit Kindern und Kindeskindern angelegt. Alle Knoten besitzen die Versionierungsart "konsistente Versionierung". Nach dem Anlegen ist der Status aller Knoten "In Erstellung" (IZQER). Zu sehen auf dem folgenden Bild.

image-20240604-080952.png

Der Knoten "B" wird freigegeben. Danach wird versucht eine Version des Knotens B anzulegen. → Dies funktioniert nicht, weil bei der konsistenten Versionierung nur eine Version eines Knotens unter dem gleichen Objekt existieren darf.

image-20240604-081005.pngimage-20240604-081012.pngimage-20240604-081025.png

Es werden alle Knoten bis auf der Kopf und Knoten A freigegeben. Es wird erneut versucht Knoten B zu versionieren. → Dies funktioniert nicht, weil bei der konsistenten Versionierung nur eine Version eines Knotens unter dem gleichen Objekt existieren darf.

image-20240604-081035.pngimage-20240604-081043.pngimage-20240604-081053.png

Es wird der Knoten A freigegeben (alle Knoten bis auf der Kopf wurden freigegeben). Es wird versucht Knoten B zu versionieren. → Dies funktioniert nicht, weil bei der konsistenten Versionierung nur eine Version eines Knotens unter dem gleichen Objekt existieren darf.

image-20240604-081102.pngimage-20240604-081109.pngimage-20240604-081121.png

Objekt versionieren

Der Kopf wird freigegeben. Es wird versucht Knoten B zu versionieren. → Dies ist möglich und es wird mit der Variante 1 eine neue Version des Kopfes angelegt.

image-20240604-081130.pngimage-20240604-081137.pngimage-20240604-081149.png

Die wesentlichen Gemeinsamkeiten und Unterschiede zwischen den zwei Versionen des Kopfes sind dem folgenden Text und den Abbildungen zu entnehmen. Die Nachfolgeversion des Kopfes besitzt die gleiche VNR wie die Vorgängerversion. Die Versionsnummer wurde um eins erhöht. Die OGUID ist die GUID des neuen Kopfes und die PREVOGUID ist die OGUID des alten Kopfes. Der Gültigkeitsbereich der Nachfolgeversion in Form des VALIDFR wurde auf die aktuelle Zeit angepasst. Der Gültigkeitsbereich der Vorgängerversion in Form des VALIDTO wurde auf die aktuelle Zeit minus 1 Sekunde gesetzt.

Vorgängerversion:

image-20240604-081157.png

Nachfolgeversion:

image-20240604-081206.png

Alle Kinder des alten Objektes werden an das neue Objekt umgezogen. Es gibt daher weder eine Vorgänger- noch eine Nachfolgeversion des Kindes. Es handelt sich in beiden Objekten um den gleichen Knoten. Dementsprechend gibt es keine Veränderung des Gültigkeitsbereichs, der VNR oder der Versionsnummer. Die OGUID ist die GUID des neuen Elternknotens und die PREVOGUID ist die OGUID des alten Elternknotens. Der Knoten besitzt am alten und am neuen Objekt den RELATTYP = O. In der Folgenden Abbildung ist dies exemplarisch für einen Knoten des Objektes dargestellt.

image-20240604-081217.pngimage-20240604-081229.png

Im nächsten Schritt wird versucht unter dem Knoten A Version 1 den Knoten B Version 1 auf modifiziert zu ändern. →  Das ist nicht möglich weil, weil der Knoten B Version 1 an den ROOT A Version 2 umgezogen wurde.. 

image-20240604-081240.pngimage-20240604-081302.png

Es wird versucht den Kopf A Version 1 zu versionieren. → Das ist nicht möglich, weil es bereits eine Nachfolgeversion des Kopfes A Version 1, Kopf A Version 2, gibt.

image-20240604-081313.pngimage-20240604-081323.png

Knoten C versionieren

In einem nächsten Schritt wird Kind C Version 1 unter dem ROOT A Version 2 versioniert. → Dies ist möglich. Dieses Beispiel wurde bereits unter Variante 2 und Knoten umziehen beschrieben. Das Ergebnis ist, dass die Knoten A Version 1, Knoten B Version 1 und Knoten C Version 1, alle unter ROOT A Version 2, versioniert werden. Alle anderen Knoten D Version, E Version 1, F Version 1, G Version 1 und H Version 1 werden umgezogen.

Die nachfolgende Abbildung zeigt das Ergebnis:

image-20240604-081336.png

Nachfolgeversion von Knoten A                                                                  Vorgängerversion von A

image-20240604-081350.pngimage-20240604-081411.png

Nachfolgeversion von Knoten B                                                                  Vorgängerversion von B

image-20240604-081421.pngimage-20240604-081431.png

Nachfolgeversion von Knoten C                                                                 Vorgängerversion von C

image-20240604-081441.pngimage-20240604-081454.png

Es wird der Knoten C Version 2 unter dem Kopf A Version 2 freigegeben. Der Knoten C Version 1 unter dem Kopf Version 1 erhält den Status "Alte Version" (IZQAL).

image-20240604-081505.pngimage-20240604-081514.png

Nach der Freigabe wird der Knoten C Version 2 unter Kopf A Version 2 versucht zu versionieren. → Dies ist nicht möglich, weil ein Knoten nicht zweimal im gleichen Objekt vorkommen darf.

image-20240604-081542.pngimage-20240604-081602.png

Knoten G versionieren

Es wird der Knoten G Version 1 unter dem ROOT A Version 2 versioniert. → Dies ist möglich. Dieses Beispiel wurde bereits unter Variante 2 und Knoten umziehen beschrieben. Das Ergebnis ist, dass die Knoten F Version 1 und Knoten G Version 1 versioniert wurden. Der Knoten H Version 1 wurde umgezogen.

image-20240604-081613.pngimage-20240604-081620.png

Nachfolgeversion von Knoten F                                                                 Vorgängerversion von F

image-20240604-081629.pngimage-20240604-081642.png

Nachfolgeversion von Knoten G                                                                 Vorgängerversion von G

image-20240604-081656.pngimage-20240604-081707.png

Der ROOT A Version 2 wird freigegeben und es wird versucht Knoten C Version 2 unter dem Kopf Version 2 zu versionieren. → Dies ist nicht möglich. Sobald der Kopf freigegeben ist, wird versucht die Variante 1 durchzuführen. Dazu müssen alle Kinder ebenfalls freigegeben werden, ansonsten ist die Versionierung nicht durchführbar. Sobald der Kopf A Version 2 freigegeben ist, bekommt der Kopf A Version 1 den Status "Alte Version" (IZQAL).

image-20240604-081721.pngimage-20240604-081730.pngimage-20240604-081810.png

In einem nächsten Schritt wird versucht den Kopf A Version 2 direkt zu versionieren. →  Dies ist nicht möglich. Sobald der Kopf freigegeben ist, müssen alle Kinder ebenfalls freigegeben werden, ansonsten ist die Versionierung nicht durchführbar.

image-20240604-081832.pngimage-20240604-081843.png

Der Status des Kopfes A Version 2 wird zu nächst auf modifiziert geändert. Danach wird eine Sammelfreigabe durchgeführt.

image-20240604-081859.pngimage-20240604-081911.png

Das Objekt ist nun komplett freigegeben. Alle Vorgängerversionen von Knoten, welche versioniert wurden, haben unter dem Kopf A Version 1 den Status "Alte Version" (IZQAL) bekommen.  Die anderen Knoten wurden umgezogen und sind unter beiden Objekten mit dem Status "Freigegeben" (IZQFR) verfügbar. Alle Knoten haben den Relationstypen = Original (O).

image-20240604-081924.png

Knoten H versionieren

Als Nächstes wird der Knoten H Version 1 unter dem Kopf A Version 2 versioniert. →  Dies ist möglich und es wird mit der Variante 1 eine neue Version des Objektes angelegt. Der Kopf wird versioniert und die restlichen Knoten an die neue Version umgezogen. 

Nachfolgeversion Kopf A                                                                    Vorgängerversion Kopf A

image-20240604-081940.pngimage-20240604-081950.pngimage-20240604-082006.png

Der Knoten H Version 1 unter dem Kopf A Version 3 wird versioniert. → Dies ist möglich. Es wird die Variante 2 ausgeführt. Es wird keine neue Version des Kopfes angelegt, deswegen liegt dieser unverändert vor. Die Eltern des Knotens H, Knoten A Version 2, Knoten B Version 2 und Knoten F Version 2, sowie der Knoten selbst werden versioniert.

image-20240604-082017.pngimage-20240604-082026.png

Nachfolgeversion von Knoten A                                                                Vorgängerversion von A

image-20240604-082035.pngimage-20240604-082046.png

Nachfolgeversion von Knoten B                                                                Vorgängerversion von B

image-20240604-082057.pngimage-20240604-082107.png

Nachfolgeversion von Knoten F                                                                Vorgängerversion von F

image-20240604-082117.pngimage-20240604-082127.png

Nachfolgeversion von Knoten H                                                                Vorgängerversion von H

image-20240604-082140.pngimage-20240604-082151.png

Auf den Kopf A Version 3 wird eine Sammelfreigabe ausgeführt. Die Knoten D und E wurden nur umgezogen, deshalb sind sie unter Kopf A Version 1, Kopf A Version 2 und Kopf A Version 3 mit dem Status "Freigegeben" (IZQFR) vorhanden. Alle Vorgängerversionen der Knoten welche im Nachfolgeobjekt versioniert und freigegeben wurden, haben den Status "Alte Version" (IZQAL). Die restlichen Knoten besitzen den Status "Freigegeben" (IZQFR).

image-20240604-082202.pngimage-20240604-082211.png