DDD Scheduling Flights

1

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

    
posta Connor Wyatt 05.10.2018 - 03:04
fonte

1 risposta

1

Con questi tipi di domande sulla modellazione dei dati, torno sempre alla fonte della verità, e continuerò a farlo finché non si dimostrerà inattuabile (non performante a causa di eccessiva normalizzazione, ecc.)

In questo caso, supponendo che stai modellando il mondo reale, la fonte della verità è:

Un dato volo ha sia una data di inizio e di fine, un incarico aereo (ad esempio N12345A o qualche altro identificatore), un pilota (probabilmente un ID di un altro tavolo), e qualsiasi altra cosa richieda il tuo gioco / sim.

Questi record rappresentano i voli effettivi, in corso o programmati per il futuro.

Questo è tutto separato da qualsiasi pianificazione sistema che si desidera aggiungere alla simulazione. Ad esempio, potresti avere una funzione che ti consente di prenotare un volo tra JFK e LAX, su base giornaliera, utilizzando [Qualsiasi velivolo disponibile per aeromobili specifici], ecc. Completando questo modulo genererai quindi voci di programma future fino a un certo limite massimo data.

Puoi quindi decidere nel gioco se vuoi risolvere i problemi di disponibilità delle risorse in quel momento, o forse all'inizio di ogni "giorno".

Ma la chiave è che la tua pianificazione effettiva e il meccanismo per generare quella pianificazione sono cose separate, con modelli di dati separati.

    
risposta data 05.10.2018 - 08:39
fonte

Leggi altre domande sui tag