Question

Je suis à l'aise avec le concept de base de CQS, où vous pourriez avoir une commande qui écrit dans une base de données, et qui met à jour la base de données de requête que vous lisez.

Cependant, le scénario selon lequel vous entrez des données, et que vous voulez éviter les doublons.

Utilisation nouveau un registre des employés saisie des données des employés à titre d'exemple, en travaillant à travers un tas de formulaires de demande de clé dans les détails des nouveaux employés:

  1. Prendre la feuille supérieure.
  2. Entrez le nom de l'employé et le numéro de paie unique pour l'interface utilisateur.
  3. Soumettre.
  4. Mettez du papier dans "pile achevée".
  5. Répéter.

Comment qualifieriez-vous maintenant empêcher l'utilisateur de la saisie dans le même numéro de paie à nouveau, dire par exemple si elles sont distraits et ne peut pas se rappeler si elles ont une saisie au clavier et déjà le « message » n'a pas obtenu tous les rebrousserez chemin à la dB de requête pour l'utilisateur de rechercher?

Était-ce utile?

La solution

Tout d'abord, vous pouvez facilement utiliser un cache local pour vous assurer que l'utilisateur immédiat ne réutilisez pas les mêmes chiffres à nouveau. C'est assez facile.

Mais vraiment cela ne cesse pas le fait que par erreur deux personnes peuvent utiliser le même élément essentiel des données en même temps. Comme quelqu'un a mentionné bien que ce soit en dehors de CQRS. Cela pourrait se produire dans presque toute l'architecture.

Maintenant, la principale chose qui pourrait changer CQRS est la façon dont nous répondons à un conflit. Je vois deux solutions possibles:

  1. Le système envoie la commande hors tension, puis attend un bon résultat. Si c'est un échec que vous venez de demander des informations fixes et essayez à nouveau. De tout ce que j'ai entendu cela semble mal et pourrait même être un anti-modèle si je ne suis pas assez expert où près de dire de toute façon.

  2. Le système envoie la commande et éventuellement de l'utilisateur est informé sur le conflit. Il y a un endroit où ils peuvent aller pour résoudre le problème. Dans votre cas, en entrant un nouveau numéro (ce qui pourrait à nouveau conflit).

Autres conseils

La saisie des données est un domaine non collaboratif - vous n'avez pas plusieurs utilisateurs d'exécuter des actions sur le même ensemble de données partagées. En tant que tel, CQRS est pas particulièrement pertinente.

Je suggère de modifier le flux de travail à ce

  1. Vérifiez la feuille supérieure est prise ou non dans la base de données (vous devriez avoir une table R de se rappeler si la ligne spécifique est prise ou non), si elles sont prises alors return false   sinon, prenez la feuille supérieure. et définir l'indicateur pour la ligne considérée comme étant « pris » dans le tableau R
  2. Entrez le nom de l'employé et le numéro de paie unique pour l'interface utilisateur.
  3. Soumettre.
  4. Mettez du papier dans "pile achevée".
  5. Répéter.

L'étape doit être exécuter atomiquement.

Pouvez-vous garder une trace d'une liste des employés déjà entrées / combos numéro de paie sur le client? Si cela est un client Web, pourrait être un cookie, si un client lourd, la mémoire ou autrement. Quand ils entrent dans le système pour la première fois, effacer la liste et prendre un nouveau départ.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top