In einem Projekt, an dem ich arbeite, soll eine Webanwendung erstellt werden, mit der eine Aufgabenliste zwischen mehreren Benutzern verwaltet werden kann. Dies ist eine Master-Aufgabenliste, deren Aufgabenelemente von einem autorisierten Benutzer verteilt werden. Jeder Benutzer hat sein eigenes Konto, um sich anzumelden und die ihm zugewiesenen Aufgaben anzuzeigen. Es ist möglich, dass mehrere Benutzer eine einzelne Aufgabe gemeinsam haben.
Ich versuche, Details des Projekts aus dieser Analyse herauszulassen, da ich mich eingehender mit dem Gesamtkonzept befasse, wie mit den folgenden Situationen umzugehen ist. Wenn dies jedoch hilft, verwende ich Java, EclipseLink und GWT mit implementierter RequestFactory. Die Datenbank ist PostgreSQL.
Die konzeptionellen Probleme, die ich zu vereinbaren versuche, sind die folgenden:
Wenn sich eine einzelne Aufgabe, die mehreren Benutzern gemeinsam ist, in irgendeiner Weise ändert, z. B. Aufgabe erledigt, gelöscht usw., wird die Aufgabenliste aller Benutzer, die diese Aufgabe haben, aktualisiert. Welche Entwurfsmuster helfen bei der Implementierung dieser Funktion?
- Einige Muster, die ich mir angesehen habe, sind Observer und Mediator - gibt es andere, die darüber nachgedacht werden sollten?
Angenommen, zwei Benutzer ändern gleichzeitig dieselbe Aufgabe.
Erstens, sollte ich zulassen, dass diese Situation eintritt, oder sollte ich sie sperren, bis die eine oder andere Person Änderungen vorgenommen hat?
Zweitens: Wie kann ich abgleichen, wessen Änderungen akzeptiert werden sollen, wenn ich sie nicht sperre? Dies betrifft die Situation in 1, da Benutzer 1 die Daten übermitteln kann und bevor Benutzer 2 die aktualisierten Daten erhält, er / sie möglicherweise seine / ihre Änderungen übermittelt hat.
Ich bin wirklich auf der Suche nach Leitfäden, Ratschlägen oder Tipps, die Sie zum richtigen Synchronisieren von Daten zwischen mehreren Instanzen dieser Web-App geben können. Ich würde es sehr schätzen!
quelle
Ich empfehle, einen Konflikt niemals zu sperren und zu melden, wenn er auftritt.
Bitte werfen Sie einen Blick auf:
https://github.com/spring-projects/spring-petclinic/issues/433
Sie können ein Video und einen Beispielcode sehen.
Wird das Ihren Anforderungen entsprechen?
quelle