Es existiert eine hierarchische Rollenstruktur bestehend aus 4 Rollen O1, O2, O3 und O4. Die Person X ist den Rollen O1, O4 und O3 zugeordnet. Nachfolgend wird die Zuweisung von Software an die Rollen betrachtet.
Abbildung 30: Abbildung der Rollenstruktur laut Beispiel
Zwischen zwei Ausführungen des DBQueue Prozessor laufen drei Prozesse mit jeweils eigener GenProcID an der Oberfläche ab:
-
P1: Zuweisung Software A1 an die Rolle O1
-
P2: Zuweisung Software A2 an die Rolle O1
-
P3: Zuweisung Software A3 an die Rolle O2
Im Ergebnis stehen folgende Operationen in der DBQueue (Tabelle DialogDBQueue) und der Prozessinformation:
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O1 |
P1 |
OrgHasApp |
O1 |
P2 |
OrgHasApp |
O2 |
P3 |
Die Operation OrgHasApp bezüglich O1 kann nicht aufgeteilt werden, da für O1 die Vereinigungsmenge der Software errechnet wird. Zu diesem Zeitpunkt ist auch keine Information mehr verfügbar, welche GenProcID durch die Zuordnung welcher Software eingetragen wurde.
Um Eindeutigkeit bezüglich der Kombination Operation und Objekt zu erreichen, wird eine neue GenProcID P4 eingeführt und die beiden Operationen bezüglich O1 auf diese verdichtet. In der Tabelle DialogProcessSubstitute wird vermerkt, dass P4 die möglichen (aber in der Einzelaktion nicht eindeutigen) Vorgänger P1 und P2 hat.
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O1 |
P4 |
OrgHasApp |
O2 |
P3 |
Abhängig, ob OrgHasApp eine Operation ist, die im Einzelschritt- oder im Bulkverfahren abgearbeitet wird, kann es jetzt zu folgenden Konstellationen kommen:
- Fall 1) Die Berechnung für O1 wird ausgeführt, dann die Operation für O2.
- Fall 2) Die Berechnung für O2 wird ausgeführt, dann die Operation für O1.
- Fall 3) Die Berechnungen für O1 und O2 werden in einer Bulkoperation gleichzeitig ausgeführt.
Nach Ausführung dieser Operationen und unter der Annahme, dass sie alle zu Änderungen an den betroffenen totalen Mengen führen, ergeben sich folgende Zustände:
Fall 1) Die Berechnung für O1 wird ausgeführt, dann die Operation für O2.
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O2 |
P3 |
OrgHasApp |
O4 |
P4 |
OrgHasApp |
O2 |
P4 |
OrgHasApp |
O3 |
P4 |
PersonHasApp |
X |
P4 |
Vor dem nächsten Lauf des DBQueue Prozessors muss wieder eine Verdichtung der GenProcID’s vorgenommen werden, da für die Operation OrgHasApp für Objekt O2 keine Eindeutigkeit gegeben ist. P5 wird eingeführt, mit den möglichen Vorgängern P4 und P3.
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O2 |
P5 |
OrgHasApp |
O4 |
P4 |
OrgHasApp |
O3 |
P4 |
PersonHasApp |
X |
P4 |
Jetzt wird die Berechnung für O2 ausgeführt:
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O3 |
P5 |
PersonHasApp |
X |
P5 |
OrgHasApp |
O4 |
P4 |
OrgHasApp |
O3 |
P4 |
PersonHasApp |
X |
P4 |
Da für O3 keine Eindeutigkeit gegeben ist, wird P6 eingeführt mit den möglichen Vorgängern P4 und P5.
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O3 |
P6 |
PersonHasApp |
X |
P5 |
OrgHasApp |
O4 |
P4 |
PersonHasApp |
X |
P4 |
Nach den Berechnungen für O3 und O4 liegt folgende Situation vor:
Operation | Objekt | GenProcID |
---|---|---|
PersonHasApp |
X |
P6 |
PersonHasApp |
X |
P5 |
PersonHasApp |
X |
P4 |
Für das Objekt X ist keine Eindeutigkeit gegeben, so dass P7 mit den möglichen Vorgängern P4, P5 und P6 eingeführt wird.
Fall 2) Die Berechnung für O2 wird ausgeführt, dann die Operation für O1.
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O1 |
P4 |
OrgHasApp |
O2 |
P3 |
Nach der Ausführung stehen folgende Einträge in der DBQueue:
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O1 |
P4 |
OrgHasApp |
O3 |
P3 |
Nach dem nächsten Ausführungsschritt liegt folgende Situation vor:
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O3 |
P3 |
OrgHasApp |
O4 |
P4 |
OrgHasApp |
O2 |
P4 |
OrgHasApp |
O3 |
P4 |
PersonHasApp |
X |
P4 |
Für die Eindeutigkeit von O3 muss ein Prozess P5 mit den möglichen Vorgängern P3 und P4 erzeugt werden:
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O3 |
P5 |
OrgHasApp |
O4 |
P4 |
OrgHasApp |
O2 |
P4 |
PersonHasApp |
X |
P4 |
Nach den Berechnungen liegt folgende Situation vor:
Operation | Objekt | GenProcID |
---|---|---|
PersonHasApp |
X |
P5 |
PersonHasApp |
X |
P4 |
Für das Objekt X ist keine Eindeutigkeit gegeben, so dass P6 mit den möglichen Vorgängern P4 und P5 eingeführt wird.
Fall 3) Die Berechnungen für O1 und O2 werden in einer Bulkoperation gleichzeitig ausgeführt.
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O1 |
P4 |
OrgHasApp |
O2 |
P3 |
Nach dem ersten Berechnungsschritt stehen folgende Informationen in der DBQueue:
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O4 |
P4 |
OrgHasApp |
O2 |
P4 |
OrgHasApp |
O3 |
P4 |
OrgHasApp |
O3 |
P3 |
PersonHasApp |
X |
P4 |
Für O3 wird durch Prozess P5 mit den möglichen Vorgängern P3 und P4 Eindeutigkeit hergestellt:
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O4 |
P4 |
OrgHasApp |
O2 |
P4 |
OrgHasApp |
O3 |
P5 |
PersonHasApp |
X |
P4 |
Nach dem nächsten Berechnungsschritt ist folgender Inhalt zu finden:
Operation | Objekt | GenProcID |
---|---|---|
OrgHasApp |
O3 |
P4 |
PersonHasApp |
X |
P4 |
PersonHasApp |
X |
P5 |
Nachdem im nächsten Durchlauf O3 errechnet wurde und dieser keinen neuen PersonHasApp-Eintrag erzeugt hat, da X mit P4 schon existiert, steht zum Schluss nur X mit P4 und P5.
Operation | Objekt | GenProcID |
---|---|---|
PersonHasApp |
X |
P4 |
PersonHasApp |
X |
P5 |
Für das Objekt X ist keine Eindeutigkeit gegeben, so dass P6 mit den möglichen Vorgängern P4 und P5 eingeführt wird.