Activiti如何替換已部署流程圖


  首先交代下背景:我們有一個已經上線的activiti工作流系統,對於流程圖的操作已經封裝好部署,查看,刪除的接口。此時客戶提出要修改個別流程圖里的節點名稱。

  我的第一個想法就是本地修改流程圖bpmn文件,然后去客戶端先調用刪除接口刪除舊流程圖,然后調用部署接口添加修改后的流程圖,然而事實上,因為系統已經上線,此時存在大量運行中的工作流數據,一旦執行刪除操作,刪除流程圖的同時,會把相關的工作流數據全部清空。

  我的第二個想法是,在客戶端保存流程圖的地方直接修改節點名稱。結果找了一下發現activiti的流程圖是以二進制代碼的形式保存在數據庫里的,這也不是說就一定不能改,但是肯定不好改。

  最終的做法:

  觀察數據庫結構得知,流程圖name_、key_等字符型屬性保存在表ACT_RE_PROCDEF里,而bpmn、png等文件屬性保存在表ACT_GE_BYTEARRAY里,兩張表通過DEPLOYMENT_ID_列進行一對多關聯。

  所以,可以將修改后的新流程圖直接用部署接口添加上,將舊流程圖的ACT_GE_BYTEARRAY表數據刪除,將新流程圖的ACT_RE_PROCDEF表數據刪除,然后將新流程圖的ACT_GE_BYTEARRAY表數據里的DEPLOYMENT_ID_修改成舊流程圖ACT_RE_PROCDEF表數據的DEPLOYMENT_ID_,完成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM