Interromperò questo post in due parti, perché sto cercando di astrarre il concetto, ma alla fine spiegherò la mia implementazione.
Ho due flussi di lavoro, Flusso di lavoro A e Flusso di lavoro B. Parte del flusso di lavoro B si basa sui risultati del flusso di lavoro A. Possono essere eseguiti in sequenza e funzionano come previsto, ma desidero eseguirne la pipeline. Voglio che la prima metà di B si verifichi parallelamente ad A. Ciò significa che a un certo punto in B devo aspettare i risultati di completamento di A. Quale sarebbe il modo migliore di gestirlo?
Per quanto riguarda il mio caso di utilizzo effettivo, sto scrivendo uno script di aggiornamento, ed è composto da due parti.
A.) Disinstalla alcune applicazioni esistenti (non aggiornate)
B.) Scarica e reinstallali
La porzione Download può verificarsi in parallelo con la parte di rimozione. Voglio chiamare entrambi allo stesso tempo, ma ho B aspettare di reinstallare le app fino a dopo che A ha rimosso con successo le versioni precedenti. Quale sarebbe il modo migliore per farlo?
Cosa ho considerato
Rompere la porzione "Download" e "Reinstalla" di B in due parti. Questo ha senso dal punto di vista della pipeline, ma se renderò pubblicamente disponibile la parte "Reinstalla" causerà problemi se la parte "download" non viene eseguita per prima.
Passare l'oggetto Task che comprende la parte "disinstallare alcune applicazioni esistenti" nella parte "download and reinstall" e attendere il suo completamento, che soddisfa l'iniezione della dipendenza (come nel caso, il processo B dipende dal completamento del processo A) ma sembra disordinato