在上一篇文章中,我分享了基於順序工作流與事件驅動模式實現的報銷多級審批系統。隨著對 Windows Workflow Foundation (WF) 的深入學習,我發現狀態機工作流在處理複雜業務流程時展現出獨特優勢。本文將詳細剖析狀態機工作流的核心活動與設計精髓。
理解這兩種工作流範式的差異,是選擇正確架構的關鍵:
以下圖示展示了狀態機工作流在報銷審批場景中的關鍵活動結構:

狀態機通過 EventDrivenActivity 響應外部事件(如審批通過、駁回、撤回等),實現狀態的動態流轉。這完美契合報銷審批中「經理審批 → 副總複核 → 財務確認」這類多角色、多決策點的業務場景。
每個狀態(如 Draft、ManagerApproving、VPApproving、FinanceProcessing、Completed、Rejected)都有明確的進入條件、執行邏輯與退出轉移,業務邏輯與流程控制清晰分離。
狀態機天然支持撤回、駁回重審等逆向流程,通過 SetStateActivity 實現狀態回滾,無需複雜的補償邏輯編碼。
在實際項目中,狀態機工作流讓報銷審批系統具備了:
對於中大型企業的複雜審批業務,狀態機工作流無疑是更優的架構選擇。