Pracuję nad projektem, który ma na celu stworzenie aplikacji internetowej, która będzie zarządzać listą zadań między wieloma użytkownikami. Jest to główna lista zadań, której elementy zadania są dystrybuowane przez autoryzowanego użytkownika. Każdy użytkownik ma swoje własne konto do logowania i przeglądania przypisanych mu zadań; możliwe jest, że wielu użytkowników ma jedno wspólne zadanie.
Staram się pomijać szczegóły projektu, ponieważ bardziej zmagam się z ogólną koncepcją radzenia sobie z następującymi sytuacjami, ale jeśli to pomaga, używam Java, EclipseLink i GWT z zaimplementowanym RequestFactory. Baza danych to PostgreSQL.
Tak więc problemy koncepcyjne, które próbuję pogodzić, są następujące:
Jeśli jedno zadanie wspólne dla wielu użytkowników zmieni się w jakikolwiek sposób, np. Zadanie ukończone, usunięte itp., Lista zadań wszystkich użytkowników, którzy mają to zadanie, zostanie zaktualizowana. Jakie wzorce projektowe pomagają w realizacji tej funkcji?
- Niektóre wzorce, na które patrzyłem, to Obserwator i Pośrednik - czy są inne, które należy rozważyć?
Powiedzmy, że dwóch użytkowników zmienia to samo zadanie w tym samym czasie.
Po pierwsze, czy powinienem dopuścić do zaistnienia takiej sytuacji, czy powinienem ją zablokować, dopóki jedna lub druga osoba nie dokona zmian?
Po drugie, jeśli nie zablokuję go, to jak pogodzić zmiany, których zmiany należy zaakceptować? Wiąże się to z sytuacją w 1, ponieważ użytkownik 1 może przesłać dane, a zanim użytkownik 2 otrzyma zaktualizowane dane, być może poszedł naprzód i przesłał zmiany.
Naprawdę szukam wskazówek, porad lub wskazówek dotyczących prawidłowej synchronizacji danych między wieloma instancjami tej aplikacji internetowej. Byłbym bardzo wdzięczny!
źródło
Radzę, aby nigdy nie blokować i nie zgłaszać konfliktu, jeśli tak się stanie.
Proszę spojrzeć na:
https://github.com/spring-projects/spring-petclinic/issues/433
Możesz zobaczyć film i przykładowy kod.
Czy to spełni twoje wymagania?
źródło