最近公司做的一個項目要實現(xiàn)工作流程的收回,駁回等操作,而采用的工作流引擎并不支持駁回功能,這個項目恰好就我和一個實習(xí)生一塊做,所以這個問題就落到我的頭上來解決了。。。

客戶提出的要求是駁回時要記錄日志,但是審批意見之類的需要清除掉,收回時不記錄日志,審批意見同樣清除。

百度了一下,總結(jié)了5個解決方案:

第一種是清除當(dāng)前任務(wù)的出口,實現(xiàn)回到上一步的功能。

根據(jù)任務(wù)ID獲取當(dāng)前的任務(wù)節(jié)點,進而獲取流程實例,然后取到流程的定義,找到當(dāng)前活動的節(jié)點與上一步活動的節(jié)點,然后清除當(dāng)前活動的出口,將上一步活動的出口作為最新的活動節(jié)點。

第二種是直接將當(dāng)前的activiti引擎更換為第三方的支持退會駁回的引擎。

第三種是自己編譯activiti引擎,加入退回,駁回功能。

第四種是直接操作數(shù)據(jù)庫,使用歷史任務(wù)替換正在進行的任務(wù)。

第五種是直接實現(xiàn)Command接口,實現(xiàn)工作流程可以任意跳轉(zhuǎn)。

因為時間緊急所以直接將3.編譯activiti引擎給pass掉了,本來項目是接手的離職員工的項目,更換流程引擎可能會引起其他的問題,此計劃暫放。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式