從程序員的角度來看為什么我們需要工作流
每一個(gè)程序員,在接觸到工作流的時(shí)候,都會(huì)有這么一個(gè)疑問——我用一般的方法可以實(shí)現(xiàn),為什么還要用工作流?
我曾經(jīng)也問過這個(gè)問題,不過現(xiàn)在稍微有點(diǎn)明白了。別著急要答案,看過下面的例子,或許你也就明白一些了。
這是一個(gè)簡(jiǎn)單的業(yè)務(wù)——訂貨流程:
|
|
如果不使用工作流技術(shù),從頭開始開發(fā)這個(gè)訂購(gòu)流程的業(yè)務(wù)邏輯,我們需要:
- 每個(gè)活動(dòng)點(diǎn)都需要開發(fā)交互頁(yè)面和后臺(tái)處理程序
- 每個(gè)活動(dòng)的流轉(zhuǎn)都需要硬性判斷下一步活動(dòng)節(jié)點(diǎn)及其操作人
- 每次操作都需要維護(hù)業(yè)務(wù)數(shù)據(jù)和流程的相關(guān)數(shù)據(jù)
最終結(jié)果就是這樣:
這還不包括監(jiān)視、控制、分析流程的部分。
但是,如果我們使用了工作流
這樣看起來就簡(jiǎn)單多了。右側(cè)的工作流管理系統(tǒng),接管了所有訂貨業(yè)務(wù)在流程方面的定義和執(zhí)行。這樣做的好處很多:
- 使用專門的流程數(shù)據(jù)系統(tǒng),維護(hù)所有涉及流程流轉(zhuǎn)的數(shù)據(jù)。
- 提供“流程設(shè)計(jì)”工具,幫助用戶定義訂貨流程的模型,而且一般都提供了可視化的界面。
- 所有的流程都依靠流程引擎來處理,避免了需求更改與硬編碼之間矛盾的產(chǎn)生。
- 工作流引擎還提供了眾多的API,可以很方便的將工作流的管理和業(yè)務(wù)操作完美結(jié)合。
所以在合適的項(xiàng)目中引入工作流技術(shù),對(duì)于基礎(chǔ)開發(fā)來說,是非常有益處的:
- 降低開發(fā)風(fēng)險(xiǎn)
通過使用諸如活動(dòng)、流轉(zhuǎn)、狀態(tài)、行為這樣的術(shù)語,使得業(yè)務(wù)分析師和開發(fā)人員使用同一種語言交談成為可能。優(yōu)秀的流程設(shè)計(jì)建模工具,甚至能使開發(fā)人員不必將用戶需求轉(zhuǎn)化成詳細(xì)設(shè)計(jì)文檔。
- 流程實(shí)現(xiàn)的集中統(tǒng)一
應(yīng)對(duì)業(yè)務(wù)流程經(jīng)常變化的情況,使用工作流技術(shù)的最大好處是使業(yè)務(wù)流程的實(shí)現(xiàn)代碼,不再散落在各式各樣的業(yè)務(wù)系統(tǒng)中。
- 加速開發(fā)
開發(fā)者不用再關(guān)注流程的參與者、活動(dòng)節(jié)點(diǎn)的銜接、流轉(zhuǎn)控制……因?yàn)檫@些工作很多被工作流框架接管了。因而開發(fā)者開發(fā)起來更快、代碼出錯(cuò)更少、系統(tǒng)更加容易維護(hù)。
- 提升對(duì)迭代開發(fā)的支持
如果系統(tǒng)中業(yè)務(wù)流程部分被硬編碼,就不容易更改,需求分析師就會(huì)花費(fèi)很大的精力在開發(fā)前的業(yè)務(wù)分析中,并且希望一次成功。但可悲的是,在任何軟件項(xiàng)目開發(fā)中,這都很少能實(shí)現(xiàn)。工作流管理系統(tǒng)使得業(yè)務(wù)流程很容易部署和重新編排,業(yè)務(wù)流程相關(guān)的應(yīng)用開發(fā)可以以一種“迭代/漸進(jìn)”的方式推進(jìn),也就是說工作流技術(shù)在某種程度上支持“需求分析不必一次完全成功”。

浙公網(wǎng)安備 33010602011771號(hào)