WorkflowInstance 類別

定義

WorkflowInstance 是以每個執行個體皆具備的輕量執行階段,用於執行工作流程程式。 此項目可用來建立新的工作流程執行個體,或從現有的執行個體狀態建立。 WorkflowInstance.WorkflowInstanceControl 所公開的 API 是一組最小的執行階段控制項,透過這些控制項即可實作較高階的作業。 這個 API 集代表執行階段的整個功能範圍。 WorkflowInstance 是抽象類別,需依賴主機實作其抽象方法,才能提供同步處理、保留、追蹤及延伸模組等主機功能。

public ref class WorkflowInstance abstract
public abstract class WorkflowInstance
type WorkflowInstance = class
Public MustInherit Class WorkflowInstance
繼承
WorkflowInstance
衍生

備註

WorkflowInstance 是單一執行緒,並假設主機會同步處理它的所有存取。 嘗試同時呼叫多個 API,會導致擲回 InvalidOperationException

WorkflowInstance 內部具有兩種狀態:執行中與已暫停。 要使執行階段從已暫停轉換成執行中,唯一的方法便是呼叫 Run。 所有動作 (除了「暫停」) 都只能在執行階段處於「已暫停」狀態時進行。 在下列情況下,執行階段會自動暫停:

  • 執行階段發生嚴重錯誤。 主機將透過 OnRequestAbort (不會發出轉換為「已暫停」的訊號) 收到訊號,然後透過 OnNotifyPaused 收到通知。

  • 此時無法攔截工作流程中的例外狀況,因此例外狀況會逸出根目錄。 主機將透過 OnNotifyUnhandledException 方法收到通知。

  • 排程器已用盡工作項目,現在正處於 Idle 狀態。 主機將透過 OnNotifyPaused 方法收到通知。 請注意,排程器用盡工作項目的原因,可能包括執行個體已閒置或執行個體已完成。 State 屬性的 Controller 值可用於區別這兩種情況。

主機可以透過呼叫 RequestPause 執行個體的 PauseWhenPersistableWorkflowInstance.WorkflowInstanceControl 方法 (由 Controller 屬性傳回),以要求從「執行中」變更為「已暫停」。 這項要求不表示主機不應嘗試利用特定的暫停呼叫來相互關聯 OnNotify* 或 OnRequestAbort。 為回應暫停要求,執行階段可以在排程器仍具有暫止的工作項目時轉換成「已暫停」並呼叫 OnNotifyPausedState 屬性的 Controller 值可用於判斷排程器是否沒有其他工作,或者已因暫停要求而中止。

RequestPause 處於「執行中」狀態時,只能呼叫 WorkflowInstance.WorkflowInstanceControl 執行個體的 Controller 方法 (由 WorkflowInstance 屬性傳回)。 若呼叫所有其他方法,均會擲回 InvalidOperationException。基於 WorkflowInstance 在不同狀態之間轉換的特定規則,「執行中」和「已暫停」的公用概念定義可如下所示:

  • 執行 - 呼叫 Run 和下一個 WorkflowInstance.OnNotify*之間的狀態。

  • Paused - 上一個 WorkflowInstance.OnNotify* 與下一個呼叫 Run 之間的狀態。

建構函式

WorkflowInstance(Activity)

以指定的工作流程定義初始化 WorkflowInstance 類別的新執行個體。

WorkflowInstance(Activity, WorkflowIdentity)

使用指定的工作流程定義和定義識別,初始化 WorkflowInstance 類別的新執行個體。

屬性

Controller

取得這個 WorkflowInstance.WorkflowInstanceControlWorkflowInstance 執行個體。

DefinitionIdentity

取得或設定 WorkflowInstance 的定義識別。

HostEnvironment

取得或設定工作流程執行個體引數和變數的根環境。

Id

取得工作流程執行個體的唯一識別碼。

IsReadOnly

取得指出工作流程執行個體是否已初始化的值。

SupportsInstanceKeys

取得值,這個值表示主機是否支援 InstanceKeys 與執行階段執行個體的關聯。

SynchronizationContext

取得或設定用於排程工作流程執行個體的 SynchronizationContext

WorkflowDefinition

取得工作流程執行個體的工作流程定義。

方法

BeginFlushTrackingRecords(TimeSpan, AsyncCallback, Object)

由工作流程執行階段呼叫,會開始傳送暫止的追蹤記錄,以非同步的方式追蹤參與者。

DisposeExtensions()

在所有實作 Dispose() 的擴充呼叫 IDisposable

EndFlushTrackingRecords(IAsyncResult)

由工作流程執行階段呼叫以結束追蹤作業。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
FlushTrackingRecords(TimeSpan)

由工作流程執行階段呼叫,會傳送暫止的追蹤記錄至追蹤參與者。

GetActivitiesBlockingUpdate(Object, DynamicUpdateMap)

擷取封鎖更新工作流程的活動清單。

GetExtension<T>()

傳回指定型別的擴充。

GetExtensions<T>()

傳回找到之指定型別的所有擴充。

GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
Initialize(IDictionary<String,Object>, IList<Handle>)

由主機呼叫,以引數值和執行屬性初始化工作流程執行個體。

Initialize(Object)

由主機呼叫,以工作流程執行階段狀態初始化工作流程執行個體。

Initialize(Object, DynamicUpdateMap)

由主機呼叫,以工作流程執行階段狀態和更新對應初始化工作流程執行個體。

MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
OnBeginAssociateKeys(ICollection<InstanceKey>, AsyncCallback, Object)

由工作流程執行階段呼叫,以通知主機新的執行個體索引鍵應與這個執行個體相關聯。

OnBeginFlushTrackingRecords(AsyncCallback, Object)

要求主機清除暫止的追蹤記錄以追蹤參與者的非同步呼叫。

OnBeginPersist(AsyncCallback, Object)

要求主機保留工作流程的非同步呼叫。

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

由工作流程執行階段呼叫以通知主機繼續書籤作業即將開始。

OnDisassociateKeys(ICollection<InstanceKey>)

由工作流程執行階段呼叫,以通知主機特定的執行個體索引鍵集不應再與這個執行個體相關聯。

OnEndAssociateKeys(IAsyncResult)

由工作流程執行階段呼叫以通知主機關聯索引鍵作業已完成。

OnEndFlushTrackingRecords(IAsyncResult)

由工作流程執行階段呼叫以通知主機清除追蹤記錄作業已完成。

OnEndPersist(IAsyncResult)

由工作流程執行階段呼叫以通知主機保留作業已完成。

OnEndResumeBookmark(IAsyncResult)

由工作流程執行階段呼叫以通知主機繼續書籤作業已完成。

OnNotifyPaused()

由工作流程執行階段呼叫,以通知主機工作流程執行個體已從執行中狀態轉換成已暫停狀態。

OnNotifyUnhandledException(Exception, Activity, String)

由工作流程執行階段呼叫,以通知主機工作流程執行個體中發生未處理的例外狀況。

OnRequestAbort(Exception)

由工作流程執行階段呼叫,以通知主機已要求工作流程執行個體中止作業。

RegisterExtensionManager(WorkflowInstanceExtensionManager)

由主機呼叫,以註冊指定的擴充管理員、驗證所有必要的擴充均存在,並且初始化要使用的擴充集合。

ThrowIfReadOnly()

如果已初始化工作流程執行個體,就會依 InvalidOperationException 的判定擲回 IsReadOnly

ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於