L'utente può creare una scatola con il testo all'interno. Quando viene creata una scatola, verrà assegnata una chiave (UUID). Questa chiave verrà quindi inviata al destinatario. Quando il destinatario attiva la chiave, riceve un messaggio nella casella corrispondente per inviare un'email.
Dato questo requisito ho trovato 2 radici aggregate:
Box
e Key
Ecco un flusso per la creazione di una scatola (senza errori)
CreateBox -> BoxCreated
BoxCreated -> CreateKey // handled by process manager
KeyCreated -> NotifyRecipient // handled by process manager
E il flusso di attivazione (senza esito negativo)
ActivateKey -> KeyActivated
KeyActivated -> OpenBox // handled by process manager
OpenBox -> BoxOpened
BoxOpened -> SendContentToRecipient // handled by process manager
Mi chiedo se è corretto approccio per modellare un sistema del genere?
Perché nell'architettura tradizionale incentrata sui dati avrei probabilmente solo un'entità Box
con una proprietà key
. E per attivare un tasto vorrei solo SELECT * FROM Box WHERE key = $key
contrassegnarlo come attivato e salvarlo indietro.