Sto progettando un motore di workflow (che viene eseguito come servizio) per l'esecuzione di flussi di lavoro arbitrariamente definiti costituiti da attività definite arbitrariamente . Ci sarà una coda. Un'istanza del servizio avrà un pool di thread di lavoro che rimuovono i messaggi dalla coda ed eseguono il lavoro delle attività.
Desidero che il mio progetto consenta l'esecuzione di un'attività includendo l'attesa per i risultati del lavoro asincrono (e potenzialmente di lunga durata).
Sto pensando a una soluzione che implica la possibilità di mettere le attività del flusso di lavoro in "WAITING" e di esporre un'API attraverso il servizio che consente di estrarre le attività del flusso di lavoro da WAITING (e in cui le attività hanno un metodo per gestirle fuori da WAITING - tale che l'esecuzione di un'attività asincrona sia effettivamente suddivisa in due parti). Ci sono modi migliori?