本主題僅適用於 Windows Workflow Foundation 4。
.NET Framework 版本 4 提供了幾個建立自訂活動的選項。用於撰寫指定活動的正確方法,要視所需的執行階段功能而定。
決定要用於撰寫自訂活動的基底活動類別
下表列出自訂活動基底類別中可用的功能。
| 基底活動類別 | 可用的功能 |
|---|---|
將系統提供的群組和自訂活動撰寫至複合活動。 |
|
提供可覆寫的 Execute 方法來實作命令式功能。同時也會提供對追蹤、變數和引數的存取。 |
|
提供 CodeActivity 的所有功能,加上中止活動執行、取消子活動執行、使用書籤,以及排程活動、活動動作與功能等。 |
|
提供 DOM 式方法來建構具有 WF 設計工具的活動以及透過 IcustomTypeDescriptor 的執行階段機制,不必定義新型別即可建立新活動。 |
使用 Activity 撰寫活動
衍生自 Activity 的活動會藉由組裝其他現有活動來撰寫功能。這些活動可以是現有的自訂活動,與來自 .NET Framework 版本 4 活動庫的活動。組裝這些活動是建立自訂功能最基本的方式。當使用視覺設計環境來撰寫工作流程時,最常採用這個方法。
使用 CodeActivity 撰寫活動
衍生自 CodeActivity 的活動可覆寫包含自訂命令式程式碼的 Execute 方法,以實作命令式功能。由執行階段執行活動時,就會執行自訂程式碼。以這種方式建立的活動可以存取自訂功能,但卻無法存取執行階段的所有功能,例如完整存取執行環境或對 Cancel 或 Abort 方法的支援。當 CodeActivity 執行時,會存取執行環境的縮減版 (透過 CodeActivityContext 類別)。使用 CodeActivity 建立的活動可存取引數與變數解析、延伸與追蹤。非同步排程活動可使用 AsyncCodeActivity 來進行。
使用 NativeActivity 撰寫活動
衍生自 NativeActivity 的活動,就像衍生自 CodeActivity 的活動一樣,會覆寫 Execute 來建立命令式功能,但也可透過傳遞至 Execute 方法的 NativeActivityContext 來存取工作流程執行階段的所有功能。此內容可支援排程與取消子活動、執行ActivityAction 和 ActivityFunc 物件、取消與中止執行、存取執行屬性、延伸與書籤 (處理暫止工作流程的恢復)。
使用 DynamicActivity 撰寫活動
與其他三種活動型別不同,新功能並非從 DynamicActivity (類別已密封) 衍生新型別來建立,而是使用活動文件物件模型 (DOM),將功能組裝成 Properties 和 Implementation 屬性來建立。
撰寫傳回結果的活動
許多活動都必須在執行過後傳回結果。雖然永遠都可為了這個目的在活動上定義自訂的 OutArgument,但我們還是建議改用 Activity,或衍生自 CodeActivity 或 NativeActivity。這裡每個基底類別都有活動可用來傳回值的 OutArgument 具名「結果」。