CQRS / DDD. Evento di dominio e sincronizzazione con modello di lettura

1

Ho una domanda di design nel "campo" di CQRS / DDD.

Non spiegherò in dettaglio il dominio, ma solo ciò che è necessario.

È un dominio CONTACT, quindi gestisce le informazioni di contatto di persone e organizzazioni.

Può esistere una relazione tra persone e indirizzi. Questa relazione esiste nel tempo in modo che possa essere attiva o inattiva (ha activeDate e inactiveDate). Una relazione può anche essere definita come "preferita".

Ci sono alcuni modi in cui una relazione può essere definita come quella preferita.

  1. È il primo attivo.
  2. È stato definito come preferito in modo esplicito.
  3. È il prossimo in linea quando un'altra relazione scade o non è più quella preferita.

Quindi gli eventi corrispondenti:

  1. AddressLinkRegisteredEvent - dipende dall'attivo / non attivo
  2. PreferredAddressLinkChanged
  3. AddressLinkUnregisteredEvent
  4. AddressLinkInfoChangedEvent - forse l'utente imposta la relazione come inattiva

Quindi, ad esempio, la regola aziendale: "Ci dovrebbe essere al massimo un indirizzo preferito in qualsiasi momento".

Quando il gestore eventi riceverà "AddressLinkRegisteredEvent", come dovrebbe sapere che dovrebbe scrivere questo indirizzo come preferito, senza duplicare le regole aziendali?

Oppure, quando si riceve "PreferredAddressLinkChanged", come dovrebbe sapere rimuovere il flag "preferito" dall'indirizzo preferito precedente e applicarlo a quello nuovo?

Grazie per i tuoi approfondimenti.

    
posta Ludovic C 08.09.2016 - 06:50
fonte

1 risposta

1

Quindi deve esserci sempre un flag preferito generato sugli indirizzi ma non esiste un modo atomico per cambiare il flag senza avere 0 o 2 flag alzati per un po 'di tempo?

Soluzioni:

  • Crea una via atomica
  • Piuttosto che flag, mantieni un indice nell'elenco per l'indirizzo preferito
  • Memorizza l'indirizzo preferito separatamente dall'elenco di indirizzi alternativi

Ognuno ha i suoi svantaggi.

    
risposta data 08.09.2016 - 15:13
fonte

Leggi altre domande sui tag