工作流程是一組稱為 活動的 元素單位,這些單位會儲存為描述真實世界進程的模型。 工作流程提供一種方式來描述短期或長時間執行工作之間的執行順序和相依關聯性。 這項工作會從頭到尾通過模型,而活動可能由人員或系統函式執行。
工作流程執行引擎
每個執行中的工作流程實例皆由一個進行中的執行引擎建立並維護,主機程序透過以下其中一種方式與其互動:
WorkflowInvoker會像調用方法一樣調用工作流程。
WorkflowApplication,用於明確控制單一工作流程實例的執行。
一個 WorkflowServiceHost 用於多重實例案例中的基於訊息的互動。
每個類別都會包裝一個負責活動執行的核心活動執行環境,表示為 ActivityInstance。 應用程式域內可以同時執行數 ActivityInstance 個物件。
上述三個主機互動物件都是從稱為工作流程程序的活動樹狀結構建立。 使用這些類型或包裝的 ActivityInstance自定義主機,可以在任何 Windows 進程中執行工作流程,包括控制台應用程式、表單型應用程式、Windows 服務、ASP.NET 網站,以及 Windows Communication Foundation (WCF) 服務。
主機流程中的工作流程組件
工作流程元件之間的互動
下圖示範工作流程元件如何彼此互動。
在上圖中,類別 Invoke 的 WorkflowInvoker 方法可用來叫用數個工作流程實例。 WorkflowInvoker 用於不需要主機管理的輕量型工作流程,對於需要由主機管理的工作流程(例如 Bookmark 的繼續)則必須使用 Run 來執行。 在叫用另一個工作流程實例之前,不需要等候一個工作流程實例完成;運行時間引擎支援同時執行多個工作流程實例。 叫用的工作流程如下所示:
Sequence包含WriteLine子活動的活動。 Variable父活動的某一部分繫結到InArgument子活動的某一部分。 如需變數、自變數和系結的詳細資訊,請參閱 變數和自變數。
稱為
ReadLine的自定義活動。 一個OutArgument活動的ReadLine會傳回給呼叫Invoke方法。衍生自抽象類 CodeActivity 的自定義活動。 CodeActivity 可以使用在 Execute 方法中作為參數提供的 CodeActivityContext 來存取執行時功能(例如追蹤和屬性)。 欲了解更多執行時功能,請參閱 工作流程追蹤與追蹤 及 工作流程執行屬性。