以消化系統比喻:器官(類/元件)組成系統,功能實現為流程(過程控制)。結論:程式結構採 OO 組織,執行邏輯為過程導向。
C# 陳述式、XAML、資料庫表、DSL、圖形工具皆可描述流程。
交互式長時間流程(等待外部訊息數天)若用 C# 控制流,需長期佔用執行緒,擴展性差。WF 採書籤機制:持久化書籤釋放 CLR 資源,訊息到達續流程。WF 執行緒模型為天然非同步調用。
參考:工作流模式詳解
圖基模式、導航器、狀態機。WF 僅提供引擎框架,非完整工作流管理系統(如 SharePoint/K2 以 WF 為引擎)。自行實作基礎功能可構建高度平台。需熟悉 WFMC 標準介面 1-5。
標準系統需實作:流程定義工具、引擎、任務管理器(客戶端)、使用者管理監控介面。
VS 整合設計器,自建系統需自製設計器(WinForm/WebForm 皆可),支援圖形化除錯。角色/組織模型整合 Membership 但缺組織結構,Oracle 需自行實作。任務指派:設計時角色/人員、執行時指派。WF 無任務表概念,引擎不關心流轉細節,待辦查詢需自行實作(建議透過自訂 Activity 維護任務表)。
WF 即引擎。WFMC 要求:解釋流程定義、控制實例、導航活動、參與者簽核、任務項目、維護控制/相關資料、外部程式呼叫、監控審查。版本控制需支援三種調整方式。異常處理、超時通知需自行編程。
WFMC 任務表由引擎分配、任務表處理器管理互動。WF 無任務表概念,宿主註冊服務(持久化、追蹤),Remoting/WCF 通訊,角色定義存 .rule 檔。
WF 對應:CallExternalMethod、CallWebService 活動。
WF 僅提供流程/活動層級日誌 (TrackingService),預設僅存 SQL Server,介面需自行圖形化。實際需:即時追蹤、超時監控、歷史查詢/異常處理、任務改派、掛起/恢復/取消、動態流程調整。
WF 僅供基礎框架,Activity 功能薄弱。無任務表導致待辦查詢效能差。自建任務表若在應用層維護等同繞過 WF;建議透過自訂 Activity 內部維護。問題:是否必要自建?若必要,自訂 Activity 法是否最佳?