Sono abbastanza nuovo per DDD e ho creato un'applicazione virtuale per i simulatori di volo e ho problemi a modellare la parte di programmazione dell'app.
Un po 'dei dettagli del dominio: prima si avvia una compagnia aerea, quindi si usano i soldi per comprare gli aerei. Quindi pianifichi i voli, li voli e guadagni denaro. Eventuali scontri nella programmazione, sia che si tratti di un doppio pilota o di un aeromobile non saranno prevenuti, ma saranno mostrati all'utente per convincerli a risolvere lo scontro. Lo stesso vale se l'aereo è programmato per essere nell'aeroporto A quando è previsto che un volo dall'aeroporto B si svolga nello stesso velivolo, dovrai risolverlo aggiungendo un volo da A a B ad un certo punto per fare è valido.
Quindi la mia domanda è come modellerei la programmazione. Penso che la pianificazione dovrebbe essere una radice aggregata, qualcosa come ScheduleWeek o ScheduleMonth, ma poi mi imbatto nel problema di cosa succederebbe se un volo programmato si estendesse per due settimane? Per esempio. inizia verso la fine di una settimana e termina dopo l'inizio della settimana successiva.
Ho avuto un paio di pensieri, il primo è che io lo duplicavo, quindi il volo sarebbe tra due settimane, tuttavia immagino che mi servirebbe una saga per quando un utente vuole cambiare il tempo del volo come avrei bisogno di garantire che entrambe le pianificazioni vengano aggiornate.
La mia altra idea è che forse dovrei modellarlo come un periodo di tempo in movimento, ad es. consentire ai voli di essere programmati per i prossimi 3 mesi e di archiviare i voli programmati dopo che sono scaduti, tuttavia sembra proprio che potrebbe essere antipattern per me in quanto i voli dovrebbero essere rimossi. (Sto usando il sourcing di eventi anche se così non verrebbero cancellati completamente)
Felice di elaborare qualsiasi cosa, se qualcuno sente che non ho spiegato abbastanza bene il dominio o le mie idee. Anche perfettamente disposto ad accettare, avrei potuto modellare questo completamente sbagliato e che c'è un modello migliore di quello che sto considerando.
Grazie