Presenterò questa domanda dicendo che sono relativamente nuovo alla DDD, quindi potrei fare alcuni errori fondamentali qui!
Sto lavorando a un progetto che coinvolge i concetti di Transazioni (in senso finanziario come Transazione con carta di credito, o Monotaglio / MultiploTransaction.). Una transazione può essere su una singola carta o più carte. L'importo della transazione può differire per ogni carta. Anche il Titolare della carta o il CardCustomer possono essere uguali o diversi.
Una transazione esegue un'esecuzione specifica della logica di business basata su TransactionTypes (come Activate, Redeem ....).
Una transazione eseguirà le seguenti operazioni - Convalida prima transazione su carta - Saldo dell'aggiornamento - Stato della scheda di aggiornamento - Aggiorna le informazioni del cliente - Transazione registro
Ora sono confuso per decidere quale potrebbe essere il mio aggregateroot qui.
Approccio 1
Usa transazione un'entità che detiene cardid, importo, customerid, tipo di transazione, transactionlogid come ValueObject e Card, CardAmountSummary, CardCustomer e TransactionLog come entità Crea Seperate AggreateRoot per SinglegiftCardTransaction, MultipleGiftCardTransaction, BookletTransaction, WalletTransaction ciascuno fungerà da wrapper per Transaction / s. Il limite di transazione può essere diverso in base alla massa o alla singola transazione.
Approccio 2
Utilizza Transaction come AggregateRoot contenente un elenco di Schede, Ogni Carta avrà CustomerId, Amount, CardAmountSummaryId, transactionlogid, transactiontypeid come oggetto Value.
Quale sarebbe la soluzione migliore per AggreateRoot ed Entità qui ???