Può uno spiegare quale sia la differenza tra le seguenti modalità di WorkflowApplication:Windows Workflow 4: differenza tra WorkflowApplication annullare, interrompere e Abort
Abort Annulla Terminate
Può uno spiegare quale sia la differenza tra le seguenti modalità di WorkflowApplication:Windows Workflow 4: differenza tra WorkflowApplication annullare, interrompere e Abort
Abort Annulla Terminate
Dopo aver esaminato ulteriormente la questione, voglio riassumere le differenze:
Terminate:
Annulla:
Abort:
un'eccezione non gestita
Aggiornamento: l'interruzione non sembra attivare lo scaricamento dell'istanza nell'archivio di persistenza SQL. Quindi, mi sembra, è meglio usare Annulla o Termina e se si deve eseguire un'azione in base allo stato di completamento, è possibile controllare CompletionState nell'evento Completo.
In primo luogo, cappello a Steffen Opel (e i suoi commenti sotto). Non sono riuscito a rilevare che il mio post originale linkeddocumentation era WF 3.5 specifico. Ha scavato un po 'di più.
Per i posteri, ho lasciato la mia risposta precedente di seguito, etichettata come WF3.5. Vedere WF4.0 per alcune note relative a Annullamento, Interruzione e Termine in WF4.0.
WF4.0
Purtroppo, c'è poco differenze di documentazione discutere espliciti a Annulla, Abort, e terminano in WF4.0. Tuttavia, da membermethoddocumentation,
Le differenze tra Annullare e Annullare/Terminare sono abbastanza evidenti. Basta chiamare Abort per uccidere un workflow a titolo definitivo. La differenza tra Annulla e Termina è più sfumata. Annulla non richiede alcun tipo di motivo (è un metodo senza parametri nullo), mentre Terminate richiede un motivo () (in formato stringa o Eccezione).
In tutti i casi, il runtime del flusso di lavoro sarà non eseguire qualsiasi azione implicita per conto dell'utente (ad esempio, i flussi di lavoro non si autodistruggono automaticamente a la WF3.5 Terminare). Tuttavia, con la gestione di eccezioni \ event altamente personalizzabile esposta dal runtime, tali funzionalità possono essere implementate con relativa facilità.
WF3.5
Annullamento
Secondo Msdndocumentation
Un'attività viene messo in stato di Annullamento da un'attività genitore in modo esplicito, o perché un è stata lanciata un'eccezione durante l'esecuzione di tale attività.
Mentre Annullamento può essere utilizzato per arrestare un intero flusso di lavoro (cioè invocato sulla radice Attività), viene in genere utilizzato per arrestare porzioni discrete di un flusso di lavoro (cioè o come errore di recupero o un'azione esplicita da parte del genitore). In breve, la cancellazione è un mezzo di controllo del flusso di lavoro.
interruzione e Terminate
Sempre secondo Msdn documentation
interruzione è diverso da terminare in che mentre Interruzione cancella semplicemente l'in-memory workflow esempio e può essere riavviata dall'ultimo punto persistenza , Termina cancella l'istanza del flusso di lavoro in memoria e informa il servizio di persistenza che l'istanza è stata cancellata dalla memoria. Per SqlWorkflowPersistenceService, ciò significa che tutte le informazioni di stato per quell'istanza del flusso di lavoro vengono eliminate dal database al termine. Non sarà possibile ricaricare l'istanza del flusso di lavoro da un punto di persistenza memorizzato in precedenza.
Che è abbastanza chiaro in sé. L'interruzione interrompe semplicemente l'esecuzione in memoria mentre Termina interrompe l'esecuzione in memoria e distrugge qualsiasi stato persistente.
Hmmh, i tuoi collegamenti MSDN puntano tutti alla documentazione WF 3.5. Mentre ci sono molte somiglianze concettuali, naturalmente, l'architettura [è stata modificata abbastanza] (http://msdn.microsoft.com/en-us/library/dd489410.aspx) per rendere le risposte WF 3.5 alle domande di WF 4 confondendo al meglio , Temo - vedere ad esempio la sezione * Ciclo di vita delle attività * alla fine di [Architettura del flusso di lavoro di Windows] (http://msdn.microsoft.com/en-us/library/dd489413.aspx) in confronto a [Understanding the Activity State Model] (http://msdn.microsoft.com/en-us/library/bb628512%28VS.90%29.aspx) come collegato dalla risposta. –
grazie, buona cattura! spero che la mia risposta aggiornata sia un po 'più chiara e accurata :) –
hmm, avrei dovuto essere più paziente immagino :-) – rekna
hehe, nessun problema :) –