Replikation und Synchronisation sind wichtige Funktionen in Notes-Datenbanken. Im Rahmen eines unserer Projekte ist nun aufgefallen, dass in einer Notes-Anwendung Replikationskonflikte aufgetreten sind. Die Ursache fand man darin, dass Dokumente zeitgleich doppelt geöffnet und bearbeitet wurden. Auf diese Weise kam es zu Versionskonflikten.
Dieses Verhalten gilt standardmäßig in allen Notes-Datenbanken. Wenn ein bereits geöffnetes Dokument in einer Ansicht markiert ist und direkt in den Bearbeitungs-Modus gesetzt wird (z.B. durch das Tastaturkürzel "STRG + B"), so wird es erneut in einem weiteren Tab/Fenster geöffnet. Ein Anwender kann nun also mehrfach dasselbe Dokumente bearbeiten und würde beim Speichern einen solchen Replikationskonflikt verursachen. Beim Öffnen des Dokumentes im Lese-Modus (z.B. durch Doppelklick in einer Ansicht) tritt dieses Verhalten übrigens nicht auf.
Um diese Problematik zu unterbinden, bietet sich folgende Lösung an, die über ein View-Event funktioniert:
Es wird im "Queryopencocument"-View-Event jeder Ansicht (aus der heraus sich das Dokument öffnen lässt) folgender Code eingefügt:
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set collection = Source.Documents
Set doc = collection.GetFirstDocument
If Not doc Is Nothing Then
If doc.IsUIDocOpen Then
MessageBox "Das Dokument wurde bereits von Ihnen geöffnet.", 64, "Dokument bereits geöffnet"
Continue = False
End If
End If
Im IBM Domino Designer sieht das Ganze dann so aus:
In diesem Zusammenhang sei auch die Möglichkeit erwähnt, die View-Events von Ansichten in Skriptbibliotheken auszulagern, um hier die Vorteile der objektorientierten Programmierung zu nutzen. Der Code wird so viel übersichtlicher und wartbarer.
Sprechen Sie uns gerne an, wenn Sie hierzu weitere Details wissen möchten.