Sto tentando di sviluppare un modulo Python open source per la modellazione di reti di compiti per la simulazione di eventi discreti. Il componente più fondamentale è l'oggetto compito, che include vari dati come una distribuzione di possibili tempi di durata dell'attività, una condizione di rilascio (criteri per l'avvio dell'attività), un effetto iniziale (istruzioni eseguite all'avvio dell'attività), un effetto finale (dichiarazioni eseguite al termine del compito, ad esempio l'inizio di un'attività diversa) e così via. Mentre ogni attività deve includere tutti gli elementi di cui sopra, la logica che contengono è univoca per ogni istanza di attività.
Un'intera rete di compiti potrebbe contenere un numero illimitato di compiti, quindi mi piacerebbe renderlo il più semplice possibile per crearne uno. Quindi stavo pensando di seguire un paradigma orientato agli oggetti e semplicemente di avere una classe di attività che gli utenti potevano creare, ma non sono sicuro di come implementare il fatto che ci sono diversi comportamenti associati a ciascuna istanza di attività. La soluzione ovvia sarebbe quella di rendere ogni attività una sottoclasse che sovrascrive la classe di attività principale (o eventualmente fornisce semplicemente un diverso file di implementazione di classe), ma ciò sembra sciocco perché comporterebbe un sacco di singleton inutili.
Ho anche considerato di includere questi metodi in un dizionario che viene passato al costruttore predefinito, ma non voglio che il processo di definizione di un'attività diventi non intuitivo / richieda troppi passaggi per l'utente finale. Sto anche cercando di capire come conservare i dati della rete di questo compito: raw Python, JSON (ma per quanto ne so, questo si verifica solo nello stesso problema poiché JSON non può rappresentare il comportamento associato a un'attività)? Sono sicuro che probabilmente è molto più semplice di quanto non lo sia, ma qualcuno può indicarmi un buon modello di progettazione per questo tipo di situazione? Grazie.