Recentemente ho iniziato a lavorare su un progetto in cui abbiamo un motore del flusso di lavoro che ha la flessibilità di aggiungere stati dinamici e corrispondenti azioni per ogni stato e tutti questi sono memorizzati in Banca dati.
Per esempio:
Nome del flusso di lavoro : fai colazione
ID del flusso di lavoro : 143
Stati del flusso di lavoro
stato 1 : accensione stufa | Id stato 1121
workflowid 143
stato 2 : prepara la colazione
Id di stato 1122
workflowid 143
e poi ci sono azioni che l'utente può eseguire in ogni stato
Nome azione : Approva
Id azione : 0098
belongstostate : 1121
Nome azione : rifiuto
ID azione : 0099
belongstostate : 1121
....
Ora il codice funziona usando le dichiarazioni if else e mappando tutto a enum che è un casino.
Stavo pensando di applicare un modello di strategia per risolvere il problema, ma poi non possiamo perché qui tutto è dinamico. possiamo avere n numero di flussi di lavoro, stati e azioni.
qual è il modo migliore per affrontare questo problema?
Modifica
Il problema principale è che dobbiamo aggiungere manualmente l'id degli stati corrispondenti, azioni nel lato dell'enum che significa che cambierà anche con ogni ambiente. E dobbiamo usare se lo stato == enumofstate quindi fare questo altrimenti quello
Quello che sto cercando, potrebbe essere, è qualcosa come "modello di macchina dello stato" ma dinamico, c'è qualcosa di simile?