Ho un caso di modellazione del dominio: esistono due concetti di dominio Worksite e Contract. Ogni contratto appartiene ad un cantiere. Ho già scoperto che entrambi i concetti sono propri aggregati, ma esiste ancora una regola aziendale che il periodo di validità del contratto deve essere sempre compreso nel periodo di durata del cantiere. Quindi, come mantenere quella coerenza vera?
Va bene, quando creo un nuovo contratto posso farlo come segue:
public class Worksite {
private Period period;
public Contract createContract( Period period, ... ) {
if ( !this.period.inside( period ) ) ) {
throw new SomeException();
}
...
return new Contract( new ContractId( .. ), this.id(), period, ... );
}
}
ma cosa posso fare, quando qualcuno modifica il periodo di Worksites o di contratto in seguito? Entrambi hanno un limite di consistenza diverso, quindi non posso farlo nella stessa transazione .. o è questo il caso in cui ho bisogno di infrangere la regola?