È un problema di progettazione che sto elencando qui.
Ho più fonti di eventi nella mia app, ognuna produce eventi con il diverso set di dati (ma ogni fonte produce solo un tipo di evento). Dall'altra parte, ho più azioni, che possono essere attivate dalle fonti.
Fonti e azioni potrebbero essere estese in futuro (potrebbero essercene altre).
Quale azione viene attivata quando viene dichiarata in una configurazione che può essere modificata durante il runtime - in altre parole, l'utente suppone di avere l'opportunità di dire, ad esempio, "quando l'origine 1 produrrà un evento, quindi l'azione di attivazione 2" o " quando la sorgente 2 produrrà un evento, quindi l'azione di fuoco 1 e l'azione 2 "ecc.
Inoltre, gli eventi dovrebbero poter essere filtrati in base alle loro impostazioni, ad esempio, l'utente può impostare "quando l'origine 1 produrrà l'evento, quindi l'azione di attivazione 2 ma solo quando l'evento prodotto contiene data inferiore a oggi"
Ho cercato di disegnare qualcosa per illustrare forse meglio il mio problema (e la soluzione a cui stavo pensando):
Come è scritto nella foto, penso che qui dovrebbe essere usato quel tipo di modello di mediatore.
Ma ho i seguenti problemi:
-
Non sono sicuro che il mediatore sia un buon posto per il filtraggio. Ho capito che la configurazione è stata inserita qui, ma non ne sono ancora sicuro.
-
Ciascuna delle azioni dovrebbe essere in grado di gestire ciascuna sorgente - ma poiché gli eventi sono diversi, senza lo stesso antenato, ciascuna azione dovrà essere in grado di consumare ogni tipo di evento. Quindi quando aggiungo una nuova fonte, dovrò aggiungere il metodo di gestione in ogni azione. E sto pensando se c'è un modo per evitarlo.