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.
- È il primo attivo.
- È stato definito come preferito in modo esplicito.
- È il prossimo in linea quando un'altra relazione scade o non è più quella preferita.
Quindi gli eventi corrispondenti:
- AddressLinkRegisteredEvent - dipende dall'attivo / non attivo
- PreferredAddressLinkChanged
- AddressLinkUnregisteredEvent
- 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.