Locking

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen

Mit Locking wird ein Mechanismus beschrieben, mit dem exklusiver Zugriff auf ein Element realisiert wird. Hierbei handelt es sich um eine serverseitige Funktionalität, die das Verändern eines gelockten Elemets verhindert. Der IES unterstützt das Locking von Elementen jeden Typs. Gesteuert wird der Locking-Service über entsprechende HandlerKeys. Der Applikationsentwickler kann entscheiden, ob und wann ein Lock gesetzt bzw. entfernt wird. Es können parallel mehrere Locks pro Nutzer angelegt werden. Der Locking-Status eines Elementes lässt sich über SPML abfragen und auswerten. Je nach Umsetzung kann so auch der lesende Zugriff auf Elemente innerhalb einer Applikation verhindert werden.

Praktische Verwendung findet das Locking i.d.R. bei Artikeln um paralelles Bearbeiten der selben Informationen zu verhindern. In InfoSite5 wird ein solcher Artikel grau hervorgehoben und mit einem Tooltip, der Informationen zum aktuellen Bearbeiter angibt, versehen. Außerdem sind die Buttons zum Speichern deaktiviert.

Der Locking-Dienst steuert über einen Timeout-Mechanismus, daß Locks auf Elemente automatisch, nach einer konfigurierten Zeit in der keine Aktionen vorgenommen wurden (Standardwert ist 2 Min.), wieder zurückgesetzt werden. So kann sichergestellt werden, daß die Arbeiten am System in jedem Fall irgendwann fortgesetzt werden können.

Setzen und Freigeben von Locks

Um ein Lock auf ein Element (z.B. Artikel oder Template) zu setzen, wird beim Aufruf eines Handlers bzw. des SpmlServlets (beliebige URL des IES) lediglich ein weiterer Parameter via POST oder GET übergeben. Der Parameter heißt je nach Aktion

  • SYS_lock
Mit SYS_lock=${elementID} wird versucht das Element ${elementID} durch den aktuellen Benutzer zu locken. Ist das Element bereits durch einen anderen Nutzer gelockt worden, wird ein Fehler (LockException) zurückgegeben, der abgefangen werden sollte.
ERROR-Code: SYS-ERROR-010
  • SYS_unlock
Mit SYS_unlock=${elementID} wird veruscht das Element vom aktuellen Benutzer wieder freizugeben. Ist das Lock von einem anderen Benutzer angelegt worden, so wird ein Fehler (AccessDeniedException) zurückgegeben, der entsprechend abgefangen werden sollte.
ERROR-Code: SYS-ERROR-010

Sollen mehre Elemente auf einmal gelockt werden, so kann auch eine kommaseparierte Liste von ID's übergeben werden. Tritt beim Locken bzw. Freigeben ein Fehler mit den übergebenen ID's auf, so wird ein Fehler mit dem ERROR-Code: SYS-FATAL-012 zurückgegeben.

Ist ein Lock gesetzt, ist der Wert von ".isReadOnly" des entsprechenden Elementes automatisch für die Dauer des Locks auf "true" gesetzt worden.

Ein Beispiel für das Setzen und Freigeben von Locks:

<a href="<sp:url uri="/"/>SYS_lock=<sp:print name="currentElement"/>">lock setzen</a>
<a href="<sp:url uri="/"/>SYS_unlock=<sp:print name="currentElement"/>">lock freigeben</a>