每一個程式員,在接觸到工作流的時候,都會有這麼一個疑問——我用一般的方法可以實作,為什麼還要用工作流?
我曾經也問過這個問題,不過現在稍微有點明白了。别着急要答案,看過下面的例子,或許你也就明白一些了。
這是一個簡單的業務——訂貨流程:
客戶送出采購訂單
業務員執行訂單處理
如果缺貨,轉工廠生産
倉庫出貨
物流發貨

如果不使用工作流技術,從頭開始開發這個訂購流程的業務邏輯,我們需要:
每個活動點都需要開發互動頁面和背景處理程式
每個活動的流轉都需要硬性判斷下一步活動節點及其操作人
每次操作都需要維護業務資料和流程的相關資料
最終結果就是這樣:
這還不包括監視、控制、分析流程的部分。
但是,如果我們使用了工作流
這樣看起來就簡單多了。右側的工作流管理系統,接管了所有訂貨業務在流程方面的定義和執行。這樣做的好處很多:
使用專門的流程資料系統,維護所有涉及流程流轉的資料。
提供“流程設計”工具,幫助使用者定義訂貨流程的模型,而且一般都提供了可視化的界面。
所有的流程都依靠流程引擎來處理,避免了需求更改與寫死之間沖突的産生。
工作流引擎還提供了衆多的API,可以很友善的将工作流的管理和業務操作完美結合。
是以在合适的項目中引入工作流技術,對于基礎開發來說,是非常有益處的:
降低開發風險
通過使用諸如活動、流轉、狀态、行為這樣的術語,使得業務分析師和開發人員使用同一種語言交談成為可能。優秀的流程設計模組化工具,甚至能使開發人員不必将使用者需求轉化成詳細設計文檔。
流程實作的集中統一
應對業務流程經常變化的情況,使用工作流技術的最大好處是使業務流程的實作代碼,不再散落在各式各樣的業務系統中。
加速開發
開發者不用再關注流程的參與者、活動節點的銜接、流轉控制……因為這些工作很多被工作流架構接管了。因而開發者開發起來更快、代碼出錯更少、系統更加容易維護。
提升對疊代開發的支援
如果系統中業務流程部分被寫死,就不容易更改,需求分析師就會花費很大的精力在開發前的業務分析中,并且希望一次成功。但可悲的是,在任何軟體項目開發中,這都很少能實作。工作流管理系統使得業務流程很容易部署和重新編排,業務流程相關的應用開發可以以一種“疊代/漸進”的方式推進,也就是說工作流技術在某種程度上支援“需求分析不必一次完全成功”。