Wie werden Zugriffs-Konflikte beim Editieren gelöst?
<2019-03-10>
Um Konsistenz-Probleme zu verhindern, die beim zeitgleichen Bearbeiten von Objekten entstehen können, werden im openWIM-System Änderungssperren eingesetzt. Beim Beginn der Bearbeitung einer Eigenschaft wird dafür eine exklusive Bearbeitungserlaubnis (= Reservierung) für die betroffene Obj-Eigenschaft angefordert.

Zielsetzungen:

  • => Für einen Editor kann die exklusive Bearbeitungsberechtigung (= Reservierung) für Eigenschaften von openWIM-Objekten ("Obj") angefordert und eingetragen werden.
  • => Mit Beenden des Editierens wird die exklusive Bearbeitungsberechtigung wieder gelöscht.
  • => Die Editier-Blockade von Objekten soll möglichst gut - aber auch benutzerfreundlich - verhindert werden.
    • => Bei "verlassenen" Editoren wird nach einer Warnung und Wartezeit die Reservierung entzogen, falls andere Reservierungswünsche vorliegen.

Typische Verläufe beim Editieren:

  • Mit Starten des Editors wird für die zu bearbeitenden Eigenschaften eines Objektes (ggf. alle) eine exklusive Änderungsberechtigung ("Reservierung") angefordert ('setWriteLock').
  • Beim Server wird geprüft, ob der (zuvor eingeloggte) Autor die zum Editieren angemeldeten Daten überhaupt ändern darf.
    • Ggf. wird die Reservierung verweigert ('lackOfAuthorization')
  • Dann wird überprüft, ob alle angeforderten Daten nicht bereits von jemand anderem zum Ändern reserviert wurden.
    • Ggf. wird die Reservierung verweigert ('alreadyLocked')
    • Ansonsten wird die Reservierung bestätigt und bei der initialen Reservierung eine frisch generierte Zufallszahl als Reservierungscode übergeben ('writeLocked').
      Der Reservierungscode wird benötigt, wenn Änderungsaktionen an den reservierten Daten durchgeführt werden sollen - also beim Speichern der bearbeiteten Daten.
  • Vom Editor ist anzugeben, für welchen Zeitraum die Reservierung gelten soll. Dieser Zeitraum wird ggf. auf einen minimalen bzw. maximalen Wert eingegrenzt.
  • Mit etwas Reserve zum Ablauf des Reservierungszeitraums wird vom Service eine Nachricht zum bevorstehenden Ablauf des Reservierungszeitraums an den Client geschickt
    • Wenn der Editiervorgang beim Client als aktiv erscheint (Mausbewegungen etc. in den vergangenen 10(?) Minuten) wird postwendend eine erneute Reservierung, die die vorangegangene Reservierung ablöst, unter Angabe des bisherigen Reservierungscodes gesendet.
    • Wird vom Client keine fristgerechte Reservierungsanforderung geschickt, wird die Reservierung vom Service beendet und alle Reservierungsdaten dazu werden gelöscht. Dem Client wird davon informiert ('writeLockClosed'). Andere Clients können dann die zuvor reservierten Daten für sich reservieren.
      (tbd: Hier gäbe es die Möglichkeit, zuvor abgewiesene Reservierungen nun nachträglich zu bestätigen. Zumindest aber eine Nachricht über eine nunmehr mögliche Reservierung zu schicken.)
  • Vom Service kann bei einem Reservierungskonflikt vom Client eine explizite Reservierungsbestätigung angefordert werden:
    • Wird der Editor noch aktiv genutzt (Mausbewegungen etc. in den vergangenen 5(?) Minuten), wird die Reservierungsanforderung postwendend automatisch wiederholt. 
    • Falls noch keine Warnung (mit Countdown-Zähler?) zum Abbruch der Reservierung dargestellt ist, wird dieses jetzt veranlasst.
    • Ansonsten wird bei abgelaufenem Countdown KEINE Verlängerung der Reservierung angefordert.
      • (tbd: Falls beim Editor eine automatische Speicherung eingestellt ist, wird eine Speicherung der geänderten Daten [und dann eine Beendigung der Reservierung?] veranlasst.)
         
  • Wird die Bearbeitung von Obj-Daten beendet, wird vom Editor eine Reservierung mit dem zugeteilten Reservierungscode aber einer "leeren" Angabe ( [] )für die zu reservierenden Daten an den Service gesendet.
    • Vom Service wird eine Bestätigung zur Beendigung der Reservierung gesendet (writeLockClosed)
       
  • Bei der Bearbeitung eines Objektes können auch Änderungen an Daten verknüpfter Objekte notwendig werden. Soll beispielsweise eine neue Themenverknüpfung hinzugefügt werden, müssen vor der Änderung der Daten zur Verknüpfung eine Reservierung für das verknüpfte Obj durchgeführt werden. Das bedeutet, dass im Editor neben der Bearbeitungs-Reservierung der eigenen Daten auch noch eine oder mehrere Reservierungen für weitere Obj-Daten erfolgen muss /müssen.
     

ppp

Themen hierzuAssciated topics:

Module (WIM)

Das könnte Sie auch interessierenFurther readings:
➖ Nächste Schritte zur Ablösung des Legacy-Servers
<2019-05-06>
Die schnelle Ablösung des veralteten Servers ist momentan das vordringliche Ziel. In diesem Artikel werden die jeweils nächsten Aktionen aufgelistet.    Mehr »
### tbd: Welche Aufgaben haben die verschiedenen Modul-Arten?
<2019-02-01>
Die WIM-App ist mit verschiedenartigen Modulen implementiert. Hier werden die verschiedenen Aufgabenstellungen erläutert.   Mehr »
Was ist die Rolle der "Dialoge" (einschließlich "Meldungen") im openWIM-System?
<2015-04-05>
Bei Darstellungen von Dokumenten, Themen usw. sowie zur Gesamtdarstellung können bei bestimmten Anlässen "Dialoge" (im einfachsten Fall "Meldungen") überlagernd dargestellt werden.   Mehr »
Wie geschieht die Koordination zwischen den Modulen im Client?
Von: @VB <2015-04-18>
Die Module zur Darstellung der Informationen sind zwar in einer hierarchischen Struktur miteinander verknüpft, doch die Aufgabenteilung ist sehr kooperativ geregelt. Jedes Modul agiert möglichst autonom in seinen eigenen Aufgabenbereich, stimmt jedoch alle Aktionen, die andere Module betreffen, mit denen ab.   Mehr »
Anordnung von WIM-App-Modulen
<2013-03-28>
Innerhalb eines (BOX-)Moduls können Module in verschiedener Art und Weise angeordnet werden. Dieser Beitrag geht näher darauf ein.   Mehr »
Was ist die Aufgabe der RENDER-Methoden der Client-Module?
<2014-08-03>
Die RENDER-Methode stellt "das Rückgrat" der Aktionen zur Erstellung oder Aktualisierung der Darstellungen in den Client-Modulen dar. Es besteht aus einer Reihe von Abschnitten, die - meist mit Unterbrechungen - Schritt für Schritt abgearbeitet werden.   Mehr »
Grundlegendes zum Message-Handling
Von: @VoBee <2020-03-28>
Das openWIM-System besteht aus mehreren "Instanzen", die zusammenwirken und ihre Informationen (meist über ein Netzwerk) austauschen müssen. Die Grundlagen dazu sollen hier dargestellt werden.   Mehr »
App-BACKEND-Service "objList":
Wie können Objekte-Listen vom Server abgerufen werden?
<2013-11-14>
In verschiedensten Situationen werden in der WIM-App Listen von Objekten benötigt, für deren Zusammenstellung viele Objekte in Frage kommen. Die Auswahl übernimmt der Server auf Basis der von der WIM-App angegebenen Parameter, damit die Menge der zu übertragenden Daten in Grenzen bleibt.   Mehr »
Die Bildrechte werden in der Online-Version angegeben.For copyright notice look at the online version.

Bildrechte zu den in diese Datei eingebundenen Bild-Dateien:

Hinweise:
1. Die Bilder sind in der Reihenfolge ihres ersten Auftretens (im Quelltext dieser Seite) angeordnet.
2. Beim Anklicken eines der nachfolgenden Bezeichnungen, wird das zugehörige Bild angezeigt.
3, Die Bildrechte-Liste wird normalerweise nicht mitgedruckt,
4. Bildname und Rechteinhaber sind jeweils im Dateinamen des Bildes enthalten.