Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: CarstenS72 am 12.01.07 - 13:18:21

Titel: [gelöst] Frage zu Konfliktdokumenten
Beitrag von: CarstenS72 am 12.01.07 - 13:18:21
Hat von Euch noch jemand einen Tip => http://www.dominoforum.de/modules/newbb/viewtopic.php?topic_id=14381&forum=47

Vielen Dank!

Carsten
Titel: Re: Frage zu Konfliktdokumenten
Beitrag von: koehlerbv am 12.01.07 - 17:26:56
Schwierig, vor allem, wenn das parallel in zwei Foren debattiert wird.

So, wie ich es verstanden habe, willst Du Speicherkonflikte vermeiden.
Erste Frage: Kommt Document Locking für Dich nicht in Frage? Okay, das ist auch nicht ohne Risiken und Nebenwirkungen.

Zweite Frage: Replizierkonflikte würden Dich nicht stören ("gleichzeitige" Änderungen an beispielsweise lokalen Repliken)?

Wenn ein Document erst einmal ein In-Memory-Document wird, wird es eh schwierig. Da hilft eigentlich nur ein komplettes Re-Open, wenn aus dem Lesemodus in den Edit-Modus gewechselt wird.

Dritte Frage: Wie verhinderst Du denn derzeit die "einfachen" Speicherkonflikte (User A öffnet Dokument zum Editieren, ändert munter, dann klingelt das Telefon oder der Magen knurrt, und wenn er dann weiter macht, hat zwischendurch User B auch das Dokument verändert)?

Bei einer Datenbank, die auf Grund ihrer Aufgabe (sofortige Abarbeitung einer Taskliste durch Mitarbeiter etlicher Abteilungen an unterschiedlichen Standorten) geradezu nach Speicher- oder Replizierkonflikten schreit, bin ich einen ganz anderen Weg gegangen: Die DB erlaubt gar kein direktes Speichern (in solchen Fällen), sondern beim "Speichern" sendet der User seine geänderten Items an die zentrale Datenbank per eMail (vollkommen unbemerkt natürlich). Erst diese arbeitet sequentiell die Modifikationen in das zu ändernde Dokument ein - Replizierkonflikte können nicht entstehen. Dies könnte man - hier aber nicht gewünscht - noch dahingehend erweitern, dass der nun geltende Leitsatz "wer zuletzt kommt, den belohnt das Leben" aufgehoben wird und so wiederum festgestellte "Konflikte" (Item X soll "gleichzeitig" von User A und User B geändert werden) zunächst erstmal einem humanen Kreatur vorgelegt werden. Macht aber in meinem Fall keinen Sinn.

Sag' mal genaueres an.

Bernhard
Titel: Re: Frage zu Konfliktdokumenten
Beitrag von: CarstenS72 am 15.01.07 - 12:40:04
Hallo Bernhard,

erstmal vielen Dank für Deine umfangreiche Antwort. Ich versuch es mal ein wenig auszuführen:

Bei der Datenbank handelt es sich um eine selbstgestrickte Anwendung mit einem relativ umfangreichen Workflow. Das Problem stellt sich immer, wenn ein geöffnetes Dokument im Hintergrund verändert wurde und dann editiert wird. Es poppen zwar Fenster mit entsprechenden Informationen auf, aber jeder kennt ja seine Anwender, da werden einfach die Fenster ohne zu lesen mit OK geschlossen, hauptsache die Meldung verschwindet. Dann haben wir den Salat mit den Konfliktdokumenten und es ist sehr mühselig den korrekten Stand wiederherzustellen, besonders wenn schon weitere Workflowschritte eingeleitet wurden.

Mein Wunsch wäre daher, dass sich das Dokument im Fall eines Konfliktes selbstständig schliesst und der Anwender zu einem Re-Open gezwungen wird. Ich suche daher die passenden Befehle um eine entsprechende Abfrage basteln zu können.

Document Locking kommt mir sehr entgegen, allerdings hatte ich bei meinem ersten Testfall schon das Problem, dass die Felder nach dem Schliessen $Writers und $WritersDate nicht entfernt wurden und das Dokument gesperrt blieb.

Deine Idee mit der sequentiellen Abarbeitung ist wirklich genial, aber leider im meinem Fall in der Kürze der Zeit nicht umsetzbar. Zukünftig werde ich aber auf jeden Fall auf den Gedanken zurückkommen.

Meine grundsätzliche Frage ist, ob es überhaupt einen Weg gibt, eine Veränderung im Hintergrund festzustellen und dann das Dokument automatisch zu schliessen.

Gruss
Carsten
Titel: Re: Frage zu Konfliktdokumenten
Beitrag von: CarstenS72 am 19.01.07 - 10:11:23
Meine grundsätzliche Frage ist, ob es überhaupt einen Weg gibt, eine Veränderung im Hintergrund festzustellen ...

Kennt irgendjemand einen Weg? Ihr währt mir wirklich eine riiiiiiesen Hilfe.

Gruß
Carsten
Titel: Re: Frage zu Konfliktdokumenten
Beitrag von: CarstenS72 am 23.01.07 - 11:40:44
Habe jetzt selber eine Lösung gefunden und wollte die hiermit allen Interessierten mitteilen:

Bei jedem erfolgreichen Speichervorgang wird Datum/Uhrzeit in ein Textfeld geschrieben. Im QuerySave öffne ich zusätzlich zum UIDocument noch das Backend Document. Dann vergleiche ich das Textfeld vom UIDocument mit dem Textfeld vom Backend Document. Sind die Felder unterschiedlich, wurde das Dokument im Hintergrund verändert. Der Speichervorgang wird abgebrochen und der Benutzer erhält eine Meldung, dass er das Dokument neu öffnen soll.

Gruss
Carsten