本文基於 .NET Framework 3.0 的預發布版本撰寫而成。文中包含的所有資訊均有變更可能。
本文討論:
構建基本活動和複合活動
非同步和基於事件的活動
自訂設計體驗
驗證和錯誤處理
本文使用了以下技術:
.NET Framework 3.0
自訂工作流程 活動是 Windows® Workflow Foundation 的其中一個最重要的方面,在構建它們時需要考慮許多功能 。Don Box 和 Dharma Shukla 在他們於 2006 年 1 月撰寫的文章“使用 Windows Workflow Foundation 的聲明性模型簡化開發”中,探討了構建工作流程的核心觀點以及工作流程運行時與活動之 間的互動(請參閱 msdn.microsoft.com/msdnmag/issues/06/01/WindowsWorkflowFoundation)。在本文 中,我會介紹為您的業務領域構建自訂活動時所需的核心組件,包括運行時職責、設計時體驗和非同步活 動開發。
構建自訂活動時,您必須做的第一個選擇是構建簡單活動還是複合活動。簡單(或基本)活動是邏 輯和執行都封裝在活動代碼內的那些活動。簡單活動樣本有:Windows SDK 中的 SendEmail 活動或從數 據庫查詢資料的活動。
與此相反,複合活動要依賴於子活動的執行才能實現其目標。您可以按照 自己的需求以兩種不同的方法建立複合活動。一種方法是構建這樣的複合活動:它允許使用者在設計時添加 子活動,並控制這些子活動的執行。例如,Windows Workflow Foundation 隨附的 While 活動允許您添 加子活動,然後配置 While 活動的迴圈功能。While 複合活動主要用於管理其子活動的執行。構建複合 活動的另外一種方法是建立從現有複合活動(例如,Sequence 活動)派生的活動並添加一組活動作為子 活動以定義可重用組件。
可重用活動(如經理批准活動)有幾個階段最容易使用現有活動集合加 以類比。經理批准活動可以使用諸如 IfElse 之類的活動來判斷經理是否線上。如果線上,可以發送一條 立即訊息;否則,發送一封電子郵件就可以了。此活動封裝了請求獲批准的所有複雜邏輯,請求批准在工作 流中並且其本身就是一個工作流程。此活動的使用者只需在各自的工作流程中使用這個複合活動就可以擺脫實際 與經理聯絡時所必須處理的複雜事務與細節。
要開始理解構建活動的概念,最好從一個非常基本 的活動著手,然後逐步將其構建為更為複雜的活動。為了說明這些概念,本文使用了兩個主要活動:一個 是用於在 ASP.NET 成員資格庫中建立使用者的活動,一個是自訂 Switch 活動,用於類比與同名代碼概 念相類似的執行。這兩個活動及其他活動的完整原始碼可在本文提供的代碼下載中找到。