Domanda

Quindi sono agio con il concetto di base di CQS, dove si potrebbe avere un comando che scrive un database, e che gli aggiornamenti al database di query che si legge da.

Tuttavia, considerare lo scenario in cui si stanno inserendo i dati, e vuole evitare i duplicati.

Usando la nuova immissione di dati dipendente un registro dei dipendenti a titolo di esempio, lavorando attraverso una pila di moduli di domanda per digitare i dettagli dei nuovi dei dipendenti:

  1. Prendere foglio superiore.
  2. Digitare il nome e il numero dei dipendenti del libro paga unica di interfaccia utente.
  3. Invia.
  4. la carta nel "mucchio completato".
  5. Ripeti.

Come ti ora impedire all'utente di digitare lo stesso numero di buste paga ancora una volta, diciamo per esempio se vengono distratti e non riesce a ricordare se hanno un digitato nel già e il "messaggio" non ha tutte le via del ritorno al db query per l'utente per la ricerca?

È stato utile?

Soluzione

Prima di tutto si può facilmente utilizzare una cache locale per assicurarsi che l'utente immediato non riutilizzare nuovamente gli stessi numeri. Questo è abbastanza facile.

Ma in realtà questo non impedisce il fatto che per errore due persone possono utilizzare lo stesso pezzo critico di dati allo stesso tempo. Come qualcun altro ha menzionato anche se questo è al di fuori della CQRS. Questo potrebbe accadere in quasi qualsiasi architettura.

Ora la cosa principale che CQRS potrebbe cambiare è come rispondere a un conflitto. Vedo due possibili soluzioni:

  1. Il sistema invia il comando off e quindi attende un risultato positivo. Se si tratta di un guasto basta chiedere per informazioni fisse e riprovare. Da tutto quello che ho sentito questo sembra sbagliato e potrebbe anche essere un anti-modello anche se io non sono dove vicino abbastanza esperto per dire in entrambi i modi.

  2. Il sistema invia il comando al largo e, infine, l'utente viene informato sul conflitto. C'è da qualche parte si può andare per risolvere il problema. Nel tuo caso inserendo un nuovo numero (che potrebbe ancora una volta il conflitto).

Altri suggerimenti

L'immissione dei dati è un dominio non collaborativo - non si dispone di più utenti che eseguono azioni sullo stesso insieme condiviso di dati. In quanto tale, CQRS non è particolarmente rilevante.

Suggerisco di cambiare il flusso di lavoro per questo

  1. Controllare il foglio superiore è preso o meno nel database (si dovrebbe avere un R tavolo da ricordare se la riga specifica è preso o no), se preso poi falsa tornare   se non, poi prendere foglio superiore. e imposta il flag per la riga preso da "presa" nella tabella R
  2. Digitare il nome e il numero dei dipendenti del libro paga unica di interfaccia utente.
  3. Invia.
  4. la carta nel "mucchio completato".
  5. Ripeti.

Il passo dovrebbe essere eseguire in modo atomico.

Potresti tenere traccia di una lista di dipendenti già inseriti / libro paga numero combo sul client? Se questo è un client web, potrebbe essere un cookie, se un cliente di spessore, la memoria allora o in altro modo. Quando entrano nel sistema per la prima volta, cancellare l'elenco e ricominciare da capo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top