Condividi tramite


WorkflowInstance Classe

Definizione

WorkflowInstance è un runtime leggero per istanza per l'esecuzione di un programma flusso di lavoro. Può essere costruito per creare una nuova istanza del flusso di lavoro o dallo stato dell'istanza esistente. Le API esposte WorkflowInstance.WorkflowInstanceControl sono il set minimo di controlli di runtime da cui è possibile implementare 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 relativi metodi astratti per fornire funzionalità host come 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 sincronizzi tutti gli accessi. Un tentativo di chiamare più API contemporaneamente comporterà la creazione di un'eccezione InvalidOperationException .

Internamente, un oggetto WorkflowInstance ha due stati: in esecuzione e in pausa. L'unico modo per fare in modo che il runtime passi da sospeso a in esecuzione consiste nel chiamare Run. Tutte le azioni (ad eccezione di Pausa) possono essere eseguite solo mentre il runtime è In pausa. Il runtime verrà sospeso spontaneamente nelle situazioni seguenti:

  • Si è verificato un errore irreversibile per il runtime. L'host verrà segnalato tramite OnRequestAbort (che non segnala una transizione a Sospeso) e quindi riceverà una notifica tramite OnNotifyPaused.

  • Eccezione nel flusso di lavoro non rilevata ed è stato eseguito l'escape della radice. L'host riceverà una notifica tramite il OnNotifyUnhandledException metodo .

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

L'host può richiedere una modifica da Running a Paused chiamando i RequestPause metodi o PauseWhenPersistable dell'istanza WorkflowInstance.WorkflowInstanceControl restituita dalla Controller proprietà . Questa richiesta non deve essere considerata per avere una risposta specifica, ovvero che l'host non deve tentare di correlare un OnNotify* o OnRequestAbort con una chiamata specifica da sospendere. In risposta a una richiesta di sospensione, il runtime può passare a Sospeso e chiamare OnNotifyPaused mentre l'utilità di pianificazione ha ancora elementi di lavoro in sospeso. Il State valore della Controller proprietà può essere utilizzato per determinare se l'utilità di pianificazione non ha più lavoro o se è stata interrotta da una richiesta di sospensione.

Il RequestPause metodo dell'istanza WorkflowInstance.WorkflowInstanceControl restituita dalla Controller proprietà è l'unico metodo che può essere chiamato mentre WorkflowInstance è nello stato Running. Tutti gli altri metodi genereranno un'eccezione InvalidOperationException se viene chiamata. Data la modalità WorkflowInstance di transizione da uno stato a un altro, la nozione pubblica di esecuzione e sospensione può essere definita come segue:

  • In esecuzione: stato tra una chiamata a Run e il successivo WorkflowInstance.OnNotify*.

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

Costruttori

Nome Descrizione
WorkflowInstance(Activity, WorkflowIdentity)

Inizializza una nuova istanza della WorkflowInstance classe con la definizione e l'identità di definizione del flusso di lavoro specificati.

WorkflowInstance(Activity)

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

Proprietà

Nome Descrizione
Controller

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

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 di runtime.

SynchronizationContext

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

WorkflowDefinition

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

Metodi

Nome Descrizione
BeginFlushTrackingRecords(TimeSpan, AsyncCallback, Object)

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

DisposeExtensions()

Chiama Dispose() tutte le estensioni che implementano IDisposable.

EndFlushTrackingRecords(IAsyncResult)

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

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 di rilevamento.

GetActivitiesBlockingUpdate(Object, DynamicUpdateMap)

Recupera l'elenco di attività che blocca 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 il 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 dell'argomento e le proprietà di esecuzione.

Initialize(Object, DynamicUpdateMap)

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

Initialize(Object)

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

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(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 record di rilevamento in sospeso per tenere traccia dei partecipanti.

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 inizia un'operazione di ripresa del 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 è stata completata un'operazione di associazione delle chiavi.

OnEndFlushTrackingRecords(IAsyncResult)

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

OnEndPersist(IAsyncResult)

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

OnEndResumeBookmark(IAsyncResult)

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

OnNotifyPaused()

Chiamato dal runtime del flusso di lavoro per notificare all'host che l'istanza del flusso di lavoro è passata dallo stato in esecuzione allo stato sospeso.

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 è stata richiesta un'operazione di interruzione per l'istanza del flusso di lavoro.

RegisterExtensionManager(WorkflowInstanceExtensionManager)

Chiamato dall'host per registrare il gestore estensioni specificato, verificare che siano presenti tutte le estensioni necessarie e inizializzare la raccolta di estensioni da usare.

ThrowIfReadOnly()

Genera un'eccezione 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