語言

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

內部 a WorkflowInstance 有兩個狀態:運行中(Running)和暫停(Paused)。 唯一能讓執行時從暫停轉換到執行的方法是呼叫 Run。 所有動作(暫停除外)只能在執行時間暫停期間執行。 執行時間在以下情況下會自動暫停:

  • 發生了對執行時間致命的錯誤。 主持人會收到訊號( OnRequestAbort 這不會表示切換到暫停),然後透過 OnNotifyPaused通知。

  • 工作流程中的一個例外被發現並逃離了根部。 主持人會透過此 OnNotifyUnhandledException 方法收到通知。

  • 排程器已經用盡所有工作項目,現在 Idle變成 。 主持人會透過此 OnNotifyPaused 方法收到通知。 請注意,排程器可能因為實例閒置或實例完成而工作項目用盡。 State房產價值Controller可用來區分兩者。

主機可以透過呼叫RequestPause該屬性回傳PauseWhenPersistable的實例 or WorkflowInstance.WorkflowInstanceControl 方法Controller,請求將執行中變更為暫停。 此請求不應被視為有特定回應,意即主持人不應嘗試將 OnNotify* 或 OnRequestAbort 特定暫停呼叫聯繫起來。 當暫停請求回應時,執行時可能會切換為暫停並呼叫 OnNotifyPaused ,而排程器仍有待處理的工作項目。 State屬性的Controller價值可用來判斷排程器是否已無工作,或是否因暫停請求而中斷。

RequestPause該屬性回傳WorkflowInstance.WorkflowInstanceControl的實例方法Controller,是唯一在執行WorkflowInstance狀態下可呼叫的方法。 其他方法在被呼叫時都會拋出 。 InvalidOperationException 根據從一種狀態轉換到另一種狀態的規則 WorkflowInstance ,公共上對「奔跑」與「暫停」的概念可定義如下:

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

  • 暫停 - 從最後一個 WorkflowInstance.OnNotify* 到下一次呼叫之間的 Run狀態。

建構函式

名稱 Description
WorkflowInstance(Activity, WorkflowIdentity)

初始化一個以指定的工作流程定義與定義身份的新類別實例 WorkflowInstance 。

WorkflowInstance(Activity)

初始化一個新的類別實例 WorkflowInstance ,並以指定的工作流程定義。

屬性

名稱 Description
Controller

這就有 WorkflowInstance.WorkflowInstanceControl 這個實例 WorkflowInstance。

DefinitionIdentity

取得或設定 的 WorkflowInstance定義恆等式。

HostEnvironment

取得或設定工作流程實例參數與變數的根環境。

Id

取得工作流程實例的唯一識別碼。

IsReadOnly

會得到一個表示工作流程實例是否已被初始化的值。

SupportsInstanceKeys

會獲得一個值,表示主機是否支援與執行時實例的關聯 InstanceKeys 。

SynchronizationContext

取得或設定 用於 SynchronizationContext 排程工作流程實例。

WorkflowDefinition

取得工作流程實例的工作流程定義。

方法

名稱 Description
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, DynamicUpdateMap)

主機呼叫它來初始化工作流程實例,並包含工作流程執行狀態和更新映射。

Initialize(Object)

主機呼叫以執行狀態初始化工作流程實例。

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)

適用於