Datensperre
Unica Plan verwendet ein pessimistisches Bearbeitungssperrschema, das bedeutet, es erhält immer nur ein Benutzer den Aktualisierungszugriff auf eine Komponenteninstanz. Für den Benutzer der grafischen Benutzeroberfläche erfolgt diese Sperre auf der sichtbaren Benutzeroberfläche auf den Registerkarten. In manchen Fällen sind Daten eines Subsets einer Instanz gesperrt, beispielsweise eine Registerkarte mit Projektübersicht. In anderen Fällen sind Daten instanzenübergreifend gesperrt, beispielsweise die Registerkarte „Workflow“. Nachdem ein Benutzer eine Sperre angefordert hat, besteht für alle anderen Benutzer lediglich Lesezugriff auf die betreffenden Daten.
Um sicherzustellen, dass die von einer Prozedur an einer Komponenteninstanz oder einer Gruppe von Instanzen vorgenommenen Änderungen nicht versehentlich von einem anderen Benutzer überschrieben werden, muss eine Prozedur vor dem Aktualisieren von Komponentendaten die geeigneten Sperren anfordern. Zur Sperrung der Daten wird das an die execute()-Methode der Prozedur übergebene Ausführungskontextobjekt verwendet.
Bevor die Prozedur Daten aktualisiert, muss sie die acquireLock()-Methode des Kontexts für alle erforderlichen Sperren aufrufen. Wenn beispielsweise eine Prozedur ein Projekt und den zugehörigen Workflow aktualisiert, muss sie für beide eine Sperre anfordern.
Wenn ein anderer Benutzer bereits eine Sperre angefordert hat, löst die acquireLock()-Methode unverzüglich die Ausnahme LockInUseException aus. Um die Anzahl an Kollisionen zu minimieren, muss die Prozedur die Sperre aufheben, sobald alle Aktualisierungen vorgenommen wurden.
Der Ausführungsmanager hebt automatisch alle ausstehenden Sperren auf, nachdem die execute-Methode zurückgegeben wurde. Sperren bleiben grundsätzlich nur für die Lebensdauer der Datenbanktransaktion bestehen. Folglich verfallen Sperren, wenn das datenbankspezifische Transaktionszeitlimit überschritten ist.