閱讀本文,你必須已經(jīng)使用過(guò)工作流引擎作過(guò)純流程的例子,并且擁有java,jsp,html的基礎(chǔ),而且知道如何閱讀相關(guān)javadoc/chm查閱編程所需的api。
我們以一個(gè)簡(jiǎn)單的請(qǐng)假流程來(lái)介紹如何實(shí)現(xiàn)一個(gè)工作流項(xiàng)目:
流程很簡(jiǎn)單,程序員向部門(mén)經(jīng)理提交一張請(qǐng)假單,部門(mén)經(jīng)理收到后,根據(jù)主觀意識(shí)決定是否批準(zhǔn)(黑暗吧,哈哈…)
既然要填寫(xiě)一張請(qǐng)假單,因此我們必須知道”請(qǐng)假申請(qǐng)”活動(dòng)對(duì)應(yīng)的請(qǐng)假單的路徑,在b/s程序中,就是請(qǐng)假單的超鏈接,因此我們要給請(qǐng)假申請(qǐng)活動(dòng)添加一個(gè)擴(kuò)展屬性來(lái)記錄超鏈接,如下:
同樣,”經(jīng)理審批”活動(dòng)也要一個(gè),后兩個(gè)活動(dòng)不重要,略了。
因?yàn)樾枰趯徟臅r(shí)候看到申請(qǐng)單的信息,所以需要知道是哪一條申請(qǐng)記錄,最直接的方法,就是儲(chǔ)存申請(qǐng)單的主鍵值在流程中,本例假設(shè)該表是單主鍵,所以我們?cè)诹鞒潭x中添加一個(gè)工作流相關(guān)數(shù)據(jù)集id。
而審批需要根據(jù)審批結(jié)果是通過(guò)/失敗決定流程的走向,因此我們還需要一個(gè)工作流數(shù)據(jù)集auditResult(Boolean)
然后要設(shè)定表達(dá)式,這樣才能決定走向
另一條路徑就不設(shè)了,引擎會(huì)自動(dòng)判斷。
下面是各步驟程序功能的說(shuō)明:
接下來(lái)出場(chǎng)的是實(shí)現(xiàn)代碼
…
…
…
你想的美咧,自己整去~~
后記:
本文寫(xiě)得挺郁悶的,因?yàn)殚_(kāi)始時(shí)不想畫(huà)流程,后來(lái)發(fā)現(xiàn)不畫(huà)流程不好解釋引擎和業(yè)務(wù)系統(tǒng)間的關(guān)系。
接著又發(fā)現(xiàn)不容易描述在流程進(jìn)行時(shí)每一步程序該做些什么,于是又畫(huà)了張描述圖,但是這圖不知道屬于哪種圖,而且也不知道別人看不看得懂。流程活動(dòng)步驟程序偽碼圖?--這么長(zhǎng)的名字有夠拉風(fēng)的。
就這樣吧。工作流的初學(xué)者可以看看這篇文章。
將工作流引擎與業(yè)務(wù)系統(tǒng)結(jié)合使用,就是在其中一處儲(chǔ)存另外一處的一些信息,我上面使用的是在引擎中儲(chǔ)存業(yè)務(wù)信息的方法,當(dāng)然也可以反過(guò)來(lái),在業(yè)務(wù)表存流程序號(hào)和活動(dòng)序號(hào)。
目前任一個(gè)開(kāi)源工作流引擎,都是可以應(yīng)用到項(xiàng)目的。關(guān)鍵是看自身的技術(shù)路線合適哪個(gè)引擎,市場(chǎng)考量等等。
但是一般一開(kāi)始使用某個(gè)引擎,以后就很難換掉,因?yàn)樵诓粩嗟臄U(kuò)展引擎的功能,而且要保證歷史項(xiàng)目的兼容性,再轉(zhuǎn)移這些代碼到另一個(gè)引擎就是浩大的工程。
本人原創(chuàng)文檔版權(quán)歸本人所有,如欲轉(zhuǎn)載,請(qǐng)注明作者及出處。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=549408