Condividi tramite


WorkflowInstance Classe

Definizione

WorkflowInstance è un runtime per istanza leggero per l'esecuzione di un programma di flusso di lavoro. Può essere costruito in modo da creare una nuova istanza del flusso di lavoro o dallo stato dell'istanza esistente. Le API esposte da WorkflowInstance.WorkflowInstanceControl costituiscono il set minimo di controlli di runtime dai quali possono essere implementate le operazioni di livello superiore. Questo set di API rappresenta l'intera gamma di funzionalità del runtime. WorkflowInstance è una classe astratta e si basa sull'implementazione di un host dei metodi astratti per offrire funzionalità host, ad esempio sincronizzazione, persistenza, rilevamento ed estensioni.

public ref class WorkflowInstance abstract
public abstract class WorkflowInstance
type WorkflowInstance = class
Public MustInherit Class WorkflowInstance
Ereditarietà
WorkflowInstance
Derivato

Commenti

WorkflowInstance è a thread singolo e presuppone che l'host esegua la sincronizzazione di tutti gli accessi. Un tentativo di chiamare più API contemporaneamente comporterà la generazione di un oggetto InvalidOperationException.

Internamente, un oggetto WorkflowInstance dispone di due stati: in esecuzione e sospeso. Il solo modo per effettuare la transizione del runtime dalla sospensione all'esecuzione consiste nel chiamare Run. Tutte le azioni (tranne la sospensione) possono essere eseguite solo mentre è il runtime è sospeso. Il runtime verrà automaticamente sospeso nelle situazioni seguenti:

  • Si è verificato un errore irreversibile di runtime. L'host verrà segnalato tramite OnRequestAbort (che non segnala una transizione alla sospensione), quindi notificato tramite OnNotifyPaused.

  • Un'eccezione nel flusso di lavoro non è stata intercettata e ha utilizzato caratteri di escape per la radice. L'host riceverà una notifica tramite il metodo OnNotifyUnhandledException.

  • L'utilità di pianificazione ha esaurito gli elementi di lavoro ed è Idle. L'host riceverà una notifica tramite il metodo OnNotifyPaused. Si noti che l'utilità di pianificazione potrebbe avere esaurito gli elementi di lavoro perché l'istanza è inattiva o completa. Il valore State della proprietà Controller può essere utilizzato per distinguere le due condizioni.

L'host può richiedere il passaggio dall'esecuzione alla sospensione chiamando i metodi RequestPause o PauseWhenPersistable dell'istanza di WorkflowInstance.WorkflowInstanceControl restituita dalla proprietà Controller. Non esiste una risposta specifica a questa richiesta, pertanto l'host non deve tentare di correlare un metodo OnNotify* o OnRequestAbort a una chiamata specifica alla sospensione. In risposta a una richiesta di sospensione, il runtime potrebbe eseguire la transizione alla sospensione e chiamare OnNotifyPaused mentre nell'utilità di pianificazione sono ancora presenti elementi di lavoro in sospeso. Il valore State della proprietà Controller può essere utilizzato per determinare se l'utilità di pianificazione non dispone più di lavoro o è stata interrotta da una richiesta di sospensione.

Il metodo RequestPause dell'istanza di WorkflowInstance.WorkflowInstanceControl restituita dalla proprietà Controller è il solo metodo che può essere chiamato mentre l'oggetto WorkflowInstance è nello stato di esecuzione. Tutti gli altri metodi, se chiamati, genereranno un oggetto InvalidOperationException. Considerate le regole di transizione di WorkflowInstance da uno stato a un altro, la nozione pubblica di esecuzione e di sospensione può essere definita come segue:

  • Running: stato tra una chiamata a Run e l'oggetto WorkflowInstance. OnNotify * successivo.

  • Paused: lo stato tra l'ultimo WorkflowInstance. OnNotify * e la chiamata successiva a Run .

Costruttori

WorkflowInstance(Activity)

Inizializza una nuova istanza della classe WorkflowInstance con la definizione del flusso di lavoro specificata.

WorkflowInstance(Activity, WorkflowIdentity)

Inizializza una nuova istanza della classe WorkflowInstance con la definizione dei flussi di lavoro e l'identità delle definizioni specificati.

Proprietà

Controller

Ottiene l'istanza di WorkflowInstance.WorkflowInstanceControl per questo oggetto WorkflowInstance.

DefinitionIdentity

Ottiene o imposta l'identità della definizione di WorkflowInstance.

HostEnvironment

Ottiene o imposta l'ambiente radice per gli argomenti e le variabili dell'istanza del flusso di lavoro.

Id

Ottiene l'identificatore univoco per l'istanza del flusso di lavoro.

IsReadOnly

Ottiene un valore che indica se l'istanza del flusso di lavoro è stata inizializzata.

SupportsInstanceKeys

Ottiene un valore che indica se l'host supporta l'associazione di InstanceKeys a un'istanza del runtime.

SynchronizationContext

Ottiene o imposta l'oggetto SynchronizationContext utilizzato per la pianificazione dell'istanza di flusso di lavoro.

WorkflowDefinition

Ottiene la definizione del flusso di lavoro dell'istanza del flusso di lavoro.

Metodi

BeginFlushTrackingRecords(TimeSpan, AsyncCallback, Object)

Chiamato dal runtime del flusso di lavoro per iniziare l'invio in modo asincrono di record di rilevamento in sospeso ai partecipanti del rilevamento.

DisposeExtensions()

Chiama Dispose() su tutte le estensioni che implementano IDisposable.

EndFlushTrackingRecords(IAsyncResult)

Chiamato dal runtime del flusso di lavoro per terminare l'operazione di rilevamento.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
FlushTrackingRecords(TimeSpan)

Chiamato dal runtime del flusso di lavoro per inviare record di rilevamento in sospeso ai partecipanti del rilevamento.

GetActivitiesBlockingUpdate(Object, DynamicUpdateMap)

Recupera l'elenco di attività che bloccano l'aggiornamento del flusso di lavoro.

GetExtension<T>()

Restituisce un'estensione del tipo specificato.

GetExtensions<T>()

Restituisce tutte le estensioni trovate per il tipo specificato.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Initialize(IDictionary<String,Object>, IList<Handle>)

Chiamato dall'host per inizializzare l'istanza del flusso di lavoro con i valori degli argomenti e le proprietà di esecuzione.

Initialize(Object)

Chiamato dall'host per inizializzare l'istanza del flusso di lavoro con lo stato di runtime del flusso di lavoro.

Initialize(Object, DynamicUpdateMap)

Chiamato dall'host per inizializzare l'istanza del flusso di lavoro con lo stato di runtime del flusso di lavoro e la mappa degli aggiornamenti.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnBeginAssociateKeys(ICollection<InstanceKey>, AsyncCallback, Object)

Chiamato dal runtime del flusso di lavoro per notificare all'host che le nuove chiavi di istanza devono essere associate a questa istanza.

OnBeginFlushTrackingRecords(AsyncCallback, Object)

Chiamata asincrona per chiedere all'host di scaricare i record di rilevamento in sospeso nei partecipanti del rilevamento.

OnBeginPersist(AsyncCallback, Object)

Chiamata asincrona per chiedere all'host di rendere persistente il flusso di lavoro.

OnBeginResumeBookmark(Bookmark, Object, TimeSpan, AsyncCallback, Object)

Chiamato dal runtime del flusso di lavoro per notificare all'host che sta iniziando un'operazione di ripresa di segnalibro.

OnDisassociateKeys(ICollection<InstanceKey>)

Chiamato dal runtime del flusso di lavoro per notificare all'host che un determinato set di chiavi di istanza non deve più essere associato a questa istanza.

OnEndAssociateKeys(IAsyncResult)

Chiamato dal runtime del flusso di lavoro per notificare all'host che un'operazione di associazione delle chiavi è stata completata.

OnEndFlushTrackingRecords(IAsyncResult)

Chiamato dal runtime del flusso di lavoro per notificare all'host quando l'operazione di scaricamento dei record di rilevamento viene completata.

OnEndPersist(IAsyncResult)

Chiamato dal runtime del flusso di lavoro per notificare all'host che un'operazione di impostazione della persistenza è stata completata.

OnEndResumeBookmark(IAsyncResult)

Chiamato dal runtime del flusso di lavoro per notificare all'host che un'operazione di ripresa di segnalibro è stata completata.

OnNotifyPaused()

Chiamato dal runtime del flusso di lavoro per notificare all'host che l'istanza del flusso di lavoro ha eseguito la transizione dallo stato di esecuzione a quello di sospensione.

OnNotifyUnhandledException(Exception, Activity, String)

Chiamato dal runtime del flusso di lavoro per notificare all'host che si è verificata un'eccezione non gestita nell'istanza del flusso di lavoro.

OnRequestAbort(Exception)

Chiamato dal runtime del flusso di lavoro per notificare all'host che un'operazione di interruzione è stata richiesta per l'istanza del flusso di lavoro.

RegisterExtensionManager(WorkflowInstanceExtensionManager)

Chiamato dall'host per registrare il gestore estensioni specificato, confermare che tutte le estensioni obbligatorie siano presenti e inizializzare la raccolta di estensioni da utilizzare.

ThrowIfReadOnly()

Genera un oggetto InvalidOperationException se l'istanza del flusso di lavoro è stata inizializzata, come determinato da IsReadOnly.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a