WorkflowInstance 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
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 執行個體的 PauseWhenPersistable 或 WorkflowInstance.WorkflowInstanceControl 方法 (由 Controller 屬性傳回),以要求從「執行中」變更為「已暫停」。 這項要求不表示主機不應嘗試利用特定的暫停呼叫來相互關聯 OnNotify* 或 OnRequestAbort。 為回應暫停要求,執行階段可以在排程器仍具有暫止的工作項目時轉換成「已暫停」並呼叫 OnNotifyPaused。 State 屬性的 Controller 值可用於判斷排程器是否沒有其他工作,或者已因暫停要求而中止。
RequestPause 處於「執行中」狀態時,只能呼叫 WorkflowInstance.WorkflowInstanceControl 執行個體的 Controller 方法 (由 WorkflowInstance 屬性傳回)。 若呼叫所有其他方法,均會擲回 InvalidOperationException。基於 WorkflowInstance 在不同狀態之間轉換的特定規則,「執行中」和「已暫停」的公用概念定義可如下所示:
執行 - 呼叫 Run 和下一個 WorkflowInstance.OnNotify*之間的狀態。
Paused - 上一個 WorkflowInstance.OnNotify* 與下一個呼叫 Run 之間的狀態。
建構函式
WorkflowInstance(Activity) |
以指定的工作流程定義初始化 WorkflowInstance 類別的新執行個體。 |
WorkflowInstance(Activity, WorkflowIdentity) |
使用指定的工作流程定義和定義識別,初始化 WorkflowInstance 類別的新執行個體。 |
屬性
Controller |
取得這個 WorkflowInstance.WorkflowInstanceControl 的 WorkflowInstance 執行個體。 |
DefinitionIdentity |
取得或設定 WorkflowInstance 的定義識別。 |
HostEnvironment |
取得或設定工作流程執行個體引數和變數的根環境。 |
Id |
取得工作流程執行個體的唯一識別碼。 |
IsReadOnly |
取得指出工作流程執行個體是否已初始化的值。 |
SupportsInstanceKeys |
取得值,這個值表示主機是否支援 InstanceKeys 與執行階段執行個體的關聯。 |
SynchronizationContext |
取得或設定用於排程工作流程執行個體的 SynchronizationContext。 |
WorkflowDefinition |
取得工作流程執行個體的工作流程定義。 |