TLDR: non sono sicuro di avere il mio Contesto Limitato a posto.
Situazione
Ho un modello di dominio in un contesto limitato:
L'intero modello si trova nello stesso contesto limitato. Il contesto limitato ha due responsabilità:
- gestione di prodotti / regole / parametri
- analisi / esecuzione delle regole dei prodotti
Gli invarianti di business relativi all'amministrazione di prodotti, regole e parametri sono contenuti negli stessi aggregati. Il modello prodotto / regola / parametro esistente è molto adatto a questo.
problema
I problemi sorgono durante l'esecuzione delle regole. Per eseguire una (serie di) regole, ho bisogno di giocherellare un sacco, interrogare e filtrare su più raccolte:
- Un prodotto specifico
- Tutte le regole appartenenti a quel prodotto
- Tutti i parametri che appartengono a tali regole.
- A volte ho anche bisogno di filtrare su quelle raccolte per combinazioni molto specifiche e questo diventa sempre più ingombrante.
Così ho creato una nuova classe ExecutionProduct
come segnaposto per tutti i dati filtrati necessari a ExecutionRule
+ ha iniziato ad aggiungere la logica di filtraggio a ExecutionProduct
. Non si adatta perfettamente al modello di esecuzione + ci sono molti dati estranei all'interno degli aggregati, ma posso gestirli.
Domanda
ExecutionProduct
mi ha fatto riflettere sull'opportunità di spostare l'analisi / esecuzione delle responsabilità in un Contesto Limitato autonomo, poiché ciò mi consentirebbe di trasformare i dati esistenti in un formato più adatto per l'esecuzione. Tieni presente che quando si eseguono le regole, non è necessario mantenere nulla: consiste nell'eseguire tutte le regole e fare complicati filtri, confronti e altre logiche di business.