用activiti 做的流程,由于后期業(yè)務(wù)更改等導(dǎo)致后期流程需要修改,此時,如果有正處于流程中的那些數(shù)據(jù)(已經(jīng)開始流程,但是還沒結(jié)束流程的)。就只能按照就流程的定義去跑,而不能用新流程定義。比如我在新流程中新增了個駁回的功能,對于已經(jīng)發(fā)起流程但是還沒結(jié)束的老流程,這個功能就不能用。讓這個功能可用,目前官方?jīng)]有提供直接的接口,但是可以直接修改后臺數(shù)據(jù)庫。
1、查找要升級到最近版本流程的單子對應(yīng)的PROC_INST_ID,比如值為:PROC_INST_ID=1000,
2、再到act_hi_procinst表中查詢:
SELECT * FROM act_hi_procinst WHERE PROC_INST_ID_=1000
得到PROC_DEF_ID_,即老的流程定義ID,比如值為:appl_process:2:22570;
3、再到act_re_procdef表中查詢:
SELECT * FROM act_re_procdef WHERE KEY_ = 'fund_appl_process'
得到最新的流程定義ID,比如值為:appl_process:6:145358;
4、最后更新如下兩個表:
UPDATE act_ru_execution SET PROC_DEF_ID_ = 'appl_process:6:145358' WHERE PROC_DEF_ID_ = 'appl_process:2:22570' AND PROC_INST_ID_ =1000;
UPDATE act_ru_task SET PROC_DEF_ID_ = 'appl_process:6:145358' WHERE PROC_DEF_ID_ = 'appl_process:2:22570' AND PROC_INST_ID_ =1000;
5、剩下的事情就是交給業(yè)務(wù)方去跑流程就可以了。
6、注意點:如果重新部署的新流程中用到了一些新的變量,而這些新的變量在后期流程中無法自動加入到流程中去時就不能用這種方式,此時可以修改程序邏輯加入或者直接再加到變量表。