Hay un proyecto en el que estoy trabajando que busca producir una aplicación web que gestione una lista de tareas entre múltiples usuarios. Esta es una lista de tareas maestra cuyos elementos de tareas son distribuidos por un usuario autorizado. Cada usuario tiene su propia cuenta para iniciar sesión y ver las tareas que tiene asignadas; Es posible que varios usuarios tengan una sola tarea en común.
Estoy tratando de dejar los detalles del proyecto fuera de esto ya que estoy lidiando más con el concepto general de cómo manejar las siguientes situaciones, pero si ayuda, estoy usando Java, EclipseLink y GWT con RequestFactory implementado. La base de datos es PostgreSQL.
Entonces, los problemas conceptuales que intento conciliar son los siguientes:
Si una sola tarea que es común a múltiples usuarios cambia de alguna manera, por ejemplo, tarea completada, eliminada, etc., la lista de tareas de todos los usuarios que tienen esta tarea se actualizará. ¿Qué patrones de diseño hay que ayuden a implementar esta función?
- Algunos patrones que he visto son Observador y Mediador. ¿Hay otros que deberían considerarse sobre estos?
Digamos que hay dos usuarios que cambian la misma tarea al mismo tiempo.
Primero, ¿debería permitir que ocurra esa situación o debería bloquearla hasta que una u otra persona haya terminado de hacer cambios?
En segundo lugar, si no lo bloqueo, ¿cómo concilio los cambios que debo aceptar? Esto implica la situación en 1 porque el usuario 1 podría enviar los datos y antes de que el usuario 2 reciba los datos actualizados, él / ella puede haber seguido adelante y enviado los cambios.
Realmente estoy buscando cualquier punto guía, consejo o sugerencia que pueda proporcionar sobre cómo sincronizar correctamente los datos entre varias instancias de esta aplicación web. ¡Se lo agradecería mucho!
fuente
Mi recomendación es nunca bloquear e informar un conflicto si sucede.
Por favor, eche un vistazo a:
https://github.com/spring-projects/spring-petclinic/issues/433
Puedes ver un video y un código de muestra.
¿Cumplirá eso tus requisitos?
fuente