共用方式為


基本 Windows Workflow 概念

本主題僅適用於 Windows Workflow Foundation 4。

.NET Framework 版本 4 中的工作流程開發運用了一些開發人員可能未曾使用過的概念。本主題描述其中的部分概念及其實作方式。

工作流程與活動

工作流程是結構化的動作集合,這些動作會以處理序為模型。工作流程中的每一個活動都會製作成活動的模型。主機與工作流程互動的方式是使用 WorkflowInvoker,將工作流程視為方法來叫用、使用 WorkflowInstance 明確控制單一工作流程執行個體的執行,以及使用 WorkflowServiceHost 在多執行個體案例中進行以訊息為主的互動。由於工作流程的步驟定義為活動的階層,因此階層中最上方的活動可說是用於定義工作流程本身。這個階層模型取代了舊版中明確的 SequentialWorkflowStateMachineWorkflow 類別。活動本身會開發做為其他活動的集合 (使用 Activity 類別做為基底,通常使用 XAML 來定義),或者使用 CodeActivity (可以使用執行階段進行資料存取) 或 NativeActivity 類別 (會向活動作者公開工作執行階段的廣度),透過自訂方式來建立。使用 CodeActivityNativeActivity 類別開發的活動是使用與 CLR 相容的語言 (例如 C#) 開發而成的。

活動資料模型

活動會利用下表所列的型別儲存及共用資料。

變數

將資料儲存在活動中。

引數

將資料移入與移出活動。

運算式

具有提升用於引數繫結之傳回值的活動。

工作流程執行階段

工作流程執行階段是工作流程執行的環境。WorkflowInvoker 是最簡單的工作流程執行方式。主機會使用 WorkflowInvoker 進行下列作業:

  • 同步叫用工作流程。

  • 提供輸入至工作流程,或從工作流程擷取輸出。

  • 加入活動所使用的擴充。

ActivityInstance 是具備執行緒安全的 Proxy,主機可利用它來與執行階段互動。主機會使用 ActivityInstance 進行下列作業:

  • 透過建立執行個體,或從執行個體存放區載入來取得執行個體。

  • 收到執行個體開發週期事件通知。

  • 控制工作流程的執行。

  • 提供輸入至工作流程,或從工作流程擷取輸出。

  • 發出工作流程接續的訊號並將值傳入工作流程中。

  • 保存工作流程資料。

  • 加入活動所使用的擴充。

工作流程項目會利用 ActivityExecutionContext 類別存取工作流程執行階段環境,並且會利用這種方式解析引數與變數、排程子活動,以及用於許多其他用途。

服務

工作流程提供自然實作及存取 Windows Communication Foundation (WCF) 服務的方式,也就是使用傳訊活動。工作流程服務裝載於 WorkflowServiceHost 中。

持續性工作流程、卸載工作流程,以及長期執行工作流程

Windows 工作流程透過提供下列功能,簡化長期執行反應式程式的製作:

  • 存取外部輸入的活動。

  • 建立可由主機接聽程式接續之 Bookmark 物件的能力。

  • 保存工作流程的資料並卸載該工作流程,然後重新載入及重新啟動工作流程以回應 Bookmark 物件之接續的能力。

工作流程會持續執行活動,直到沒有其他可執行的活動,或者直到目前所有執行中的活動均在等候輸入為止。在第二種狀態中,工作流程是閒置的。主機可以卸載進入閒置狀態的工作流程,並且在訊息送達時重新載入這些工作流程以繼續執行是常見的做法。WorkflowServiceHost 提供此項特性的功能,並且提供可擴充的卸載原則。若為使用變動性狀態的執行區塊,或無法以其他方式保留的資料,活動可以使用 ActivityExecutionContext 指出不應保存的主機。工作流程也可以利用 Persist 活動,將其資料明確地保存至長期性的儲存媒體中。