web-dev-qa-db-fra.com

Comment demander poliment à l'utilisateur de rafraîchir après une modification simultanée?

Je sais que cette situation n'est pas idéale mais ne peut être évitée.

J'ai un système de base de données de site Web où un utilisateur peut choisir dans une liste et afficher des informations, les modifier et les enregistrer. Pendant le temps qu'un enregistrement est consulté et sauvegardé, il est possible que les informations aient été mises à jour et un message d'erreur sera affiché à l'utilisateur.

S'ils actualisent la page, ils peuvent être plus gênés car les filtres utilisés pour sélectionner les données seront supprimés. Au lieu de cela, je veux qu'ils sélectionnent le même élément dans la liste, provoquant une actualisation des données vers la version actuelle.

Je recherche une description claire du message d'erreur. Jusqu'à présent, j'ai cela, quelqu'un peut-il l'améliorer car je pense que ce n'est pas concis, en partie parce que je pense que le rafraîchissement est une tâche courante que les utilisateurs comprendront, mais la re-sélection d'un élément déjà sélectionné ne serait pas un exercice fréquent qu'ils connaissent avec.

"Les informations de cette sélection ont été modifiées depuis son ouverture. Veuillez sélectionner à nouveau l'élément afin de voir les modifications les plus récentes."

2
user8082

La situation sur laquelle vous travaillez se rapporte à la question plus générale de la gestion des conflits dans un système transactionnel multi-utilisateurs.

Avant de rédiger le message le meilleur et le plus poli, vous devez vous assurer que vous avez choisi une solution limpide politique de résolution des conflits qui a du sens dans votre contexte et avec laquelle vous et vos utilisateurs êtes à l'aise.

note 1: Je soupçonne d'après votre description qu'avoir des informations actualisées en temps réel sur votre site Web n'est pas une option. Si tel était le cas, vous pourriez avoir des options de flux de travail intéressantes et, par exemple, afficher des choses comme "L'utilisateur X est en train de modifier cela" sur l'écran de l'utilisateur Y (comme le "X tape ..." dans certains services de chat Web).

note 2: Je soupçonne également que, pour des raisons de simplicité, la mise en œuvre d'un système de verrouillage des transactions (le premier éditeur verrouille l'élément et les personnes suivantes essayant de modifier les données sont informées qu'elles ne peuvent pas continuer avant que la ressource a été déverrouillé) n'est pas non plus une option.

Supposons que les utilisateurs voient les données telles qu'elles étaient lors du chargement de leur page actuelle et qu'il n'y a pas de fonction de verrouillage. Une (mauvaise) surprise peut alors survenir juste après qu'un utilisateur a soumis son action d'édition. Il est correct de choisir une politique qui dit: "le dernier éditeur gagne" et vous pouvez l'implémenter par exemple de la manière suivante:

  • lorsqu'un utilisateur clique pour modifier les données pour la première fois, une référence à l'état actuel des données est stockée dans le formulaire (par exemple, son identifiant et son numéro de version ou son horodatage)
  • l'utilisateur prend son temps pour préparer et taper sa modification
  • ils soumettent (l'action qui est une demande de changement)
  • si la référence à l'ancien état des données est alignée avec la version présente sur le serveur, l'édition réussit simplement
  • sinon, cela signifie que les données ont été modifiées (généralement par un autre utilisateur) entre-temps.

Ce que vous voulez réaliser, c'est:

  1. informer l'utilisateur
  2. leur permettre de faire un choix éclairé
  3. les empêcher de perdre ce qu'ils ont fait (ce qui prouve que vous appréciez leur temps et leurs efforts)

Un moyen d'atteindre ces objectifs pourrait être, dans la même optique et en même temps, de:

  • les informer que les données ont été modifiées entre-temps
  • leur montrer les données éditées
  • afficher leur propre modification (qui a été envoyée au serveur via le formulaire) d'une manière (par exemple zone de texte par exemple) qui est toujours modifiable
  • proposer deux boutons d'action: "annuler" (c'est-à-dire conserver la modification de l'autre utilisateur) ou "écraser avec ma modification"
2
Pierre