Activiti 流程的掛起與啟用
阿新 • • 發佈:2019-01-27
當需要暫停使用一個 Activiti 流程時,可以通過呼叫 Activiti 的 API 來實現流程的掛起與啟用。
本文通過 ID 來掛起與啟用流程,流程定義還可以根據 Key 來完成掛起與啟用,根據實際需求來選擇呼叫哪種方法。
流程例項的掛起與啟用
通過 RuntimeService 和 HistoryService 均可實現對流程例項的掛起與啟用操作,因 HistoryService 無用資料較多,相應的查詢操作會佔用更多的時間,所以本文選用 RuntimeService 來實現。
當流程例項被掛起時,無法通過下一個節點對應的任務id來繼續這個流程例項。
通過掛起某一特定的流程例項,可以終止當前的流程例項,而不影響到該流程定義的其他流程例項。
啟用之後可以繼續該流程例項,不會對後續任務造成影響。
//通過流程例項ID來掛起流程例項
void suspendProcessInstanceById(String processInstanceId);
//通過流程例項ID來啟用流程例項
void activateProcessInstanceById(String processInstanceId);
流程定義的掛起與啟用
通過 RepositoryService 可以實現對流程定義的掛起與啟用操作。
當流程定義被掛起時,已經發起的該流程定義的流程例項不受影響(如果選擇級聯掛起則流程例項也會被掛起)。
當流程定義被掛起時,無法發起新的該流程定義的流程例項。
//通過流程定義ID來掛起流程定義 void suspendProcessDefinitionById(String processDefinitionId); //第二個引數為是否級聯掛起該流程定義的流程例項 //第三個引數為掛起這個流程定義的時間,null為立即掛起 void suspendProcessDefinitionById(String processDefinitionId, boolean suspendProcessInstances, Date suspensionDate); //啟用流程定義 void activateProcessDefinitionById(String processDefinitionId); void activateProcessDefinitionById(String processDefinitionId, boolean activateProcessInstances, Date activationDate);