寫一個簡單的工作流一直停留在我的“計劃”中,最近趁改造績效系統的機會,決定自己寫一個基于petri網原理的工作流來改寫績效考核流程部分。基于petri網的工作流的基本算法,就是當每一個firing發生後,應當周遊整個流程重新改變transition的enable,那麼當資源驅動某個transition其實就是将它的輸入place中的token轉移到輸出place。大概的接口類似:
workflowmanager wm = new basicworkflowmanager(this.workflowdao);
token token1 = wm.startworkflow(0); //為流程0新啟動一個案例
wm.doaction(token1,resource,args); //傳入資源和參數以驅動firing
今天完成了順序路由和并行路由的實作,選擇和循環也準備加入。暫時隻實作了記憶體存儲案例資料和流程資料,顯然,應當實作一個資料庫版本,慢慢來吧。
文章轉自莊周夢蝶 ,原文釋出時間2007-10-10