我們?yōu)槭裁催x擇工作流
我們?yōu)槭裁催x擇工作流。
一直感覺很難對那些從未接觸過工作流的同學(xué)們解釋清楚。
還記得有一個活動中,有人提問:“工作流到底是做什么的?”回答的同志希望根據(jù)具體的實例解釋一下,就反問他:“你們公司的報銷流程是怎么走的?”結(jié)果提問的同志直接說:“直接找財務(wù)啊。”引得下面一陣喧嘩:“不用領(lǐng)導(dǎo)簽字就可以隨便報銷啊。”
那個提供的同志心里一定感覺很無辜:“我也不知道公司的請假流程應(yīng)該找誰啊,大家每次都直接給財務(wù)了。”其實對于小公司來說,里邊工作的人本來不多,可能都是報銷這種事情都是這樣兩步完成了,可實際上真實的流程應(yīng)該是這樣:

大家對圖中的環(huán)節(jié)估計不會有什么異議,只是對于直接拿發(fā)票找財務(wù)報銷的人來說,中間的核實部分變成了完美的黑盒,他不了解,也沒有必要去了解報銷的整個過程,站在當(dāng)事人的角度,他只要最后知道這次報銷能拿到多少錢就可以了。
對 于一個公司的內(nèi)部事務(wù)來說,這樣就最好的,員工沒有必要去了解每個環(huán)節(jié)是如何進(jìn)行的,但是在為這種公司進(jìn)行軟件開發(fā)時無疑要面臨著掉進(jìn)陷阱的危險。假設(shè)你 只對員工進(jìn)行需求調(diào)研,他會只給你發(fā)票的單據(jù),告訴你報銷流程就是找財務(wù)。如果再去找財務(wù)進(jìn)行需求調(diào)研,他會告訴你只要看一下沒問題就可以報銷了,最有可 能略過,也可能是最關(guān)鍵的特別情況需要經(jīng)過老板審核的步驟,這個步驟可能是5000元以上必須經(jīng)老板過目,也可能是特殊事項需要老板簽字,但是因為公司日 常不會出現(xiàn)很多這種情況而被人們無意識的忽略掉,有可能到程序開發(fā)到中段時才突然想起來,然后就需要把流程重改。
說到這里,那么使用了工作流就可以避免出現(xiàn)這類需求變更問題嗎?
答 案是否定的,軟件開發(fā)時的需求變更常常是因為客戶對本身業(yè)務(wù)要求和業(yè)務(wù)流程的不熟悉所導(dǎo)致的,軟件開發(fā)的過程常常伴隨著流程的梳理和細(xì)化,這也是為什么很 多程序員都說:“這個項目做完了,我比他們公司里的人都懂業(yè)務(wù)了。”其實不是你比他們還懂業(yè)務(wù),真正辦公的時候你還是會被各種情況沖的頭昏腦脹,但是因為 你在軟件開發(fā)的過程中對各個部門之間的依賴和關(guān)聯(lián)進(jìn)行了完全的梳理,所以對各個部門之間的數(shù)據(jù)流和業(yè)務(wù)流了解的更為通透。
話 說回來,工作流雖然不能解決因為客戶對本身業(yè)務(wù)的深化而造成的需求變更問題,但是它確實可以把這個風(fēng)險提前,我們知道,風(fēng)險總是越早解決越有利,因為當(dāng)我 們一張張單據(jù)化為流程圖時,客戶也能夠更好的參與到流程的解讀中來,通過流程圖可以加快業(yè)務(wù)的深化,提早暴露出之前沒有考慮到的問題,便于我們盡快的盡早 的解決。
那么我們直接用visio不就可以了?何必使用工作流呢?
答案是 visio也可以,只要可以限制圖形中的語義,不要讓客戶任意發(fā)揮,就完全可以實現(xiàn)工作流的效果。為什么要限制語義呢?因為只有流程圖可以直接映射為開發(fā) 完成的程序,對流程圖的細(xì)化才是真正有意義的,否則客戶畫了一張完全無法用程序?qū)崿F(xiàn)的圖形,我們該怎么辦呢?工作流一般都提供了自己定義的一套語義,大多 都是以XML格式保存的,只要以此為基礎(chǔ)畫出的流程圖都是可以轉(zhuǎn)換為實際程序的,再加上與客戶的溝通,讓客戶和程序員對流程中每個環(huán)節(jié)的理解保持一致,就 可以盡量避免理解上的偏差,減少修改和返工現(xiàn)象。
但是工作流的學(xué)習(xí)曲線太高了,原本程序中我只需要設(shè)置幾個狀態(tài)位就可以解決問題,值得興師動眾的配上工作流嗎?
對 這個問題的回答還需要對實際情況進(jìn)行分析,小型系統(tǒng)中,你只需要制作一個CMS,不同的管理員負(fù)責(zé)不同版塊內(nèi)容的審批,這種邏輯簡單,流程固定的需求確實 沒有必要使用工作流,使用了工作流反而會加大開發(fā)和維護(hù)的復(fù)雜度,使用狀態(tài)位模擬FSM有限狀態(tài)機(jī)也完全可以實現(xiàn)。但是在復(fù)雜的業(yè)務(wù)情況中可能存在著同步 并行,多路決策,循環(huán)遍歷等情況,這種情況下使用狀態(tài)位就無法滿足客戶的業(yè)務(wù)需求,因此隨著業(yè)務(wù)需求復(fù)雜度的上升,我們必然需要選擇功能更強大的武器來解 決這一系列的問題。