Sto lavorando a un sistema di ordinamento in cui riceviamo file delimitati da tabulazioni come questo (ho rimosso la maggior parte delle colonne per maggiore chiarezza):
OrderId OrderLineId BuyerName BuyerAdress RecipientName RecipientAdress 1 1 John 123, Street Doe 25, street 1 2 John 123, Street Doe 25, street 1 3 John 123, Street Michael 11, France 2 1 Sam 66,Somewhere Lily 25, Poland 2 2 Sam 66,Somewhere Dave 25, Russia ...
Applicando DDD ho estratto principalmente alcune entità come mostrato nell'immagine qui sotto:
Alcuni dati sui dati ricevuti nei file:
- Un ordine deve avere un acquirente e un acquirente deve avere un ordine .
- Un ordine contiene almeno 1 OrderLine e ogni OrderLine deve appartenere a un ordine .
- Ogni OrderLine deve avere un Destinatario e ogni Destinatario deve avere OrderLine associato .
- La cronologia dello stato per OrderLine deve essere monitorata dal sistema (da cui l'entità Cronologia linee
Domande:
- Quale entità è la radice aggregata ? La maggior parte degli articoli che ho letto su DDD metterebbe l'entità Cliente come propria radice aggregata e l'Ordine con i suoi OrderLines come l'altra radice. Tuttavia, poiché l'acquirente e il destinatario possono NOT esistere da soli, come possono essere trattati come la propria radice aggregata?
- Le righe dell'ordine dovrebbero essere un oggetto valore o un'entità? Ho visto alcune risposte su numerosi blog che suggeriscono che OrderLines dovrebbe essere un VO, ma non vedo perché non dovrebbe essere trattato come un'entità dal momento che la sua identità sarà necessaria nella sua relazione con l'entità Storia.
- Allo stesso modo, la Cronologia linee dovrebbe essere modellata come oggetto entità o valore