C'è un approccio migliore (1, 2 o un'altra opzione)?
A prima vista, il n. 2 sembra necessario. Il motivo per utilizzare i segnalibri (o l'attività di bookmarking di qualche tipo, come Ricevi) è che possono essere ripresi in qualsiasi momento. Ciò consente alla ricerca dell'utente di terminare e al flusso di lavoro di riprendere l'esecuzione in qualsiasi momento (invece di essere bloccato fino alla scadenza di un ritardo).
Il controsenso, che potrebbe essere necessario anche # 1, è che si potrebbe desiderare di impostare un limite di tempo che attivi le azioni del flusso di lavoro (promemoria che si spengono, eccezioni, cancellazioni, ecc.).
Come decidere? Penso che la risposta sia solitamente # 3: Entrambi
L'utilizzo di Pick Activity è un ottimo modo per fare entrambe le cose. Usando l'attività Segnalibri in un trigger PickBranch e l'attività Ritardo nell'altro trigger PickBranch, puoi comporre un flusso di lavoro che "gestirà qualsiasi cosa succeda prima - utente Y, o timeout".
Una domanda secondaria che si pone è "Come faccio a interrompere un flusso di lavoro che viene scaricato quando non lo desidero - il flusso di lavoro a sorpresa scarica un rischio"?
Bene, questo dipende. Se stai utilizzando WorkflowServiceHost, avere scaricato il tuo flusso di lavoro non sembra un grosso rischio, perché WorfklowServiceHost è abbastanza intelligente da ricaricare il tuo flusso di lavoro quando ha bisogno di fare più lavoro (gestire un messaggio in arrivo o riprendere dal ritardo).
Se non stai utilizzando WorkflowServiceHost, probabilmente stai scrivendo il tuo host, puoi ottenere lo stesso effetto con un po 'di lavoro, o puoi semplicemente impedire che lo scaricamento si verifichi sempre - quando scrivi l'host, controlli la politica di scarico , tramite gli eventi su WorkflowApplication
Altri punti vari: - Le attività di codice asincrono impediscono effettivamente la persistenza del flusso di lavoro mentre eseguono il lavoro asincrono. Non penso che dovrebbero essere usati deliberatamente come meccanismo anti-persistenza - se vuoi uno di questi, dai un'occhiata allo NoPersistZone activity.
-Non c'è attività "Scarica", ma esiste un'attività "Persist". I flussi di lavoro possono dire che vogliono salvare i progressi, ma solo l'host arriva a prendere la decisione definitiva quando si verifica lo scaricamento.
windows wf4, suppongo? – x0n
Sì. Sto usando il flusso di lavoro di Windows 4. – user472292