Há um projeto no qual estou trabalhando que procura produzir um aplicativo Web que gerencie uma lista de tarefas entre vários usuários. Esta é uma lista de tarefas principal cujos itens de tarefa são distribuídos por um usuário autorizado. Cada usuário tem sua própria conta para efetuar login e visualizar as tarefas que foram atribuídas; é possível que vários usuários tenham uma única tarefa em comum.
Estou tentando deixar os detalhes do projeto fora disso, pois estou lidando mais com o conceito geral de como lidar com as situações a seguir, mas se ajudar, estou usando Java, EclipseLink e GWT com RequestFactory implementado. O banco de dados é PostgreSQL.
Portanto, os problemas conceituais que estou tentando reconciliar são os seguintes:
Se uma única tarefa comum a vários usuários mudar de alguma forma, por exemplo, tarefa concluída, excluída etc., a lista de tarefas de todos os usuários que possuem essa tarefa será atualizada. Quais padrões de design existem para auxiliar na implementação dessa função?
- Alguns padrões que observei são o Observador e o Mediador - existem outros que devem ser considerados sobre eles?
Digamos que haja dois usuários alterando a mesma tarefa ao mesmo tempo.
Primeiro, devo permitir que essa situação aconteça ou devo trancá-la até que uma ou outra pessoa termine de fazer alterações?
Segundo, se eu não coloco uma trava nela, como reconcilio as alterações a serem aceitas? Isso envolve a situação em 1 porque o usuário 1 pode enviar os dados e antes que o usuário 2 receba os dados atualizados, ele / ela pode ter ido em frente e enviado as alterações dele.
Estou realmente procurando pontos de orientação, conselhos ou dicas que você possa fornecer sobre como sincronizar dados corretamente entre várias instâncias deste aplicativo Web. Eu apreciaria isso muito!