2012-01-05 2 views
1

Nous avons une fonction d'application similaire aux étiquettes de Gmail - vous pouvez «marquer» les éléments. Maintenant, il s'agit d'une application simultanée, c'est-à-dire que ce 'tableau blanc' est modifiable par plusieurs utilisateurs - ce qui signifie que de nombreux utilisateurs peuvent choisir de ré-grouper les éléments. Fondamentalement tagger plusieurs éléments en même temps.Comment gérer au mieux un conflit de concurrence entre plusieurs utilisateurs?

Il y aura certainement des conflits mais la question est de savoir comment le gérer au mieux? La seule stratégie qui me vient à l'esprit est similaire au fameux protocole ALOHA, c'est-à-dire vérifier avant la validation si quelque chose a changé - si c'est le cas, abandonner et informer l'utilisateur; d'autre commettre. Ceci est tout à fait inefficace IMO.

Voici deux idées similaires - difficile et l'autre plus facile par comparaison:

plus facile une première :) - écraseraient les modifications à savoir, les doublons seraient tout simplement être mis à jour, mais de nouveaux seraient marqués aussi. Difficulté: Vérifiez qui doivent être 'supprimés', c'est-à-dire, il pourrait y en avoir qui n'appartiennent pas à la catégorisation (par exemple, l'utilisateur 1 a fait un changement et l'utilisateur 2 l'a également fait au niveau 2). en même temps, trouver l'ensemble des éléments étiquetés {user1 - user2}). Cela va être extrêmement difficile et ne vaut vraiment pas l'effort à mon humble avis. Je me demandais quelle est la meilleure solution à utiliser dans un tel cas qui ne gêne pas l'expérience de l'utilisateur et ne les confond pas non plus.

(Ceci est une application J2EE/Restlet avec une base MySQL et une extrémité avant Jquery/ajax)

Répondre

2

La réponse à cette question dépend vraiment de qui sont vos utilisateurs et ce qu'ils attendent. Si c'était moi, je pense que je m'attendrais à être informé d'un utilisateur créant des changements avant que les miens ne soient faits (stackoverflow le fait), et permettez-moi de valider des changements de toute façon ou de revenir en arrière. Toutes les solutions que vous avez présentées semblent acceptables ... cela dépend uniquement de ce que vous voulez faire. Si vous demandez comment faire cela avec code, vous devrez d'abord envoyer du code afin que nous puissions voir ce que vous avez à faire. Une autre solution possible serait similaire à # 2 (juste remplacer les changements au fur et à mesure qu'ils se produisent), mais garder une révision de chaque changement pour permettre des réversions faciles, et pour le rendre facile à dire si des changements ont été faits .

Questions connexes