Есть проект, над которым я работаю, который пытается создать веб-приложение, которое будет управлять списком задач между несколькими пользователями. Это основной список задач, чьи элементы задач распространяются авторизованным пользователем. Каждый пользователь имеет свою учетную запись для входа и просмотра назначенных ему задач; несколько пользователей могут иметь одну общую задачу.
Я пытаюсь опустить детали проекта из этого, поскольку я больше разбираюсь с общей концепцией того, как справляться со следующими ситуациями, но если это помогает, я использую Java, EclipseLink и GWT с реализованным RequestFactory. База данных PostgreSQL.
Итак, концептуальные проблемы, которые я пытаюсь решить, следующие:
Если одна задача, общая для нескольких пользователей, изменяется каким-либо образом, например, задача выполнена, удалена и т. Д., Список задач всех пользователей, имеющих эту задачу, будет обновлен. Какие существуют шаблоны проектирования, которые помогают в реализации этой функции?
- Некоторые модели, на которые я смотрел, - это Наблюдатель и Посредник - есть ли другие, которые следует рассмотреть по этим вопросам?
Скажем, есть два пользователя, изменяющие одну и ту же задачу одновременно.
Во-первых, должен ли я позволить этой ситуации произойти или я должен блокировать ее, пока один или другой человек не закончит вносить изменения?
Во-вторых, если я не блокирую это, как мне согласовать, чьи изменения принять? Это связано с ситуацией в 1, потому что пользователь 1 может представить данные, и до того, как пользователь 2 получит обновленные данные, он / она, возможно, пошел вперед и представил свои изменения.
Я действительно ищу любые руководящие указания, советы или советы, которые вы можете предоставить о том, как правильно синхронизировать данные между несколькими экземплярами этого веб-приложения. Я был бы очень признателен!
источник
Я рекомендую никогда не блокировать и не сообщать о конфликте, если он случится.
Пожалуйста, посмотрите на:
https://github.com/spring-projects/spring-petclinic/issues/433
Вы можете посмотреть видео и пример кода.
Будет ли это соответствовать вашим требованиям?
источник