CQRS attraverso contesti limitati per generare report con possibile logica aziendale

0

Dove traccia la linea per quanta logica può andare nei tuoi modelli letti? Ad esempio, abbiamo 2 BC: inventario e vendite. Dobbiamo generare rapporti sui livelli di inventario in date specifiche: perfetto per un modello di lettura.

Semplice SELECT dalle tabelle InventoryItem e OrderLine basate su ProductSKU. Posso quindi utilizzare lo stato corrente di InventoryItem per calcolare quale inventario sarebbe in una data utilizzando la data in cui sono stati effettuati gli ordini.

Tuttavia, sembra che ci sia molta logica in questa classe ReadModel per farlo. Inoltre, cosa succede se voglio cambiare ciò che viene segnalato in base allo stato di un ordine (ad esempio PENDING vs SHIPPED)? Questo non impone ancora più logica di business nel ReadModel?

TL; DR: dove traccia la linea con la logica di calcolo su ReadModels?

    
posta keelerjr12 27.11.2018 - 21:34
fonte

1 risposta

1

Questo dipende dal modo in cui definisci la "logica aziendale". Questa frase viene solitamente utilizzata in riferimento ai processi aziendali che alterano i dati o il flusso di mediazione (che di solito termina modificando i dati).

L'IMO che offre semplicemente diverse proiezioni di dati non è in realtà una logica aziendale. È una logica di presentazione. A volte la logica della presentazione può diventare complessa. Comprendo che i report generati possono portare / consentire agli stakeholder di prendere decisioni aziendali, ma a meno che tu non stia tentando di automatizzare questo processo decisionale, non vedo alcun motivo per complicare il tuo dominio.

Ad esempio, a meno che tu non voglia che il tuo metodo Product.IncreasePrice abbia un invariant che richiede che sia stato ordinato X numero di volte tra due date, stai solo ingombrando il tuo modello di dominio.

    
risposta data 27.11.2018 - 22:42
fonte

Leggi altre domande sui tag