Diciamo che abbiamo un utente (come un supereroe) che vuole vedere tutte le guerre che sta accadendo in un mondo in modo che possa fermarle. Non può impedirli tutti, perché ha bisogno di dormire a volte e così via. Ma se una guerra è accaduta mentre dormiva, vuole saperlo (quindi può punire chi l'ha iniziato, per esempio).
Quindi, se la guerra è iniziata, vuole vedere dove è successo e quando. E anche tutti gli eventi su questa guerra, come alcune battaglie per esempio.
Quindi vuole un software in grado di presentargli queste informazioni in un "tavolo di guerra" dove può vedere tutte le guerre a cui non ha ancora reagito in alcun modo.
E questo è un software che ho bisogno di scrivere.
Quindi diciamo che ho un software che monitora alcuni stati e basato su eventi di livello inferiore genera eventi come "War started", "War ended", "Battle started", "Battle ended", "War changed location" ecc. .
Il problema che mi turba è che al tempo in cui la guerra era iniziata, la guerra è un processo, non un evento. Perché la guerra sta ancora accadendo. Ma dopo l'evento "War ended" possiamo dire che questo processo è terminato e ora è un evento.
Per essere più concreti. Diciamo che la sequenza di eventi è:
'War1 iniziata nella posizione x1' 'War2 ha iniziato nella posizione x2' "War1 ha cambiato posizione in x4" "War2 ha cambiato posizione in x5" 'War1 ha una nuova battaglia iniziata nella posizione x3' 'War1 ha una nuova battaglia finita nella posizione x3' 'War1 terminato'
Ma l'utente non vuole vederlo come una sequenza. Quello che vuole vedere è qualcosa di simile a questo
'War1 sta succedendo nella posizione x1' "War2 sta accadendo nella posizione x2"
Quindi vuole che la prima riga cambi in base al prossimo evento
'War1 sta accadendo nella posizione x4' "War2 sta accadendo nella posizione x2"
e così via
'War1 sta accadendo nella posizione x4' "War2 sta accadendo nella posizione x5"
e così via fino alla fine di queste guerre.
'War1 era in posizione' qualche posizione '' 'War2 era in posizione' qualche altra posizione ''
Come puoi vedere war1 e war2 sono eventi ora.
Dopo che la guerra è finita, il supereroe vuole ancora sapere tutte le informazioni a riguardo, se vuole, ma in questo tavolo di guerra vuole sostanzialmente vedere le informazioni attuali sul processo di guerra.
In questo momento la soluzione è pensare a questo processo di guerra come processo, che può ancora andare o essere già finito. Il problema è che in questo caso se vogliamo monitorare un evento diverso dalla guerra e più semplice (come un interruttore che può essere solo attivato o disattivato) avremmo un modello come un processo che ha un orario di inizio e tempo di stop. Che è ... strano, penso.
Ho pensato a una soluzione diversa. Invece di visualizzare i processi, visualizza gli eventi di livello inferiore raggruppati per argomento.
Come "War 1 have started" e "War 1 has ended" hanno lo stesso soggetto - processo "War 1".
Ma non tutti gli eventi nel nostro sistema avrebbero un processo come soggetto e ... Sono un pazzo di perso qui.
Forse qualcuno ha già fatto qualcosa del genere? Quale potrebbe essere l'approccio corretto a questo?