天天看點

activiti的坑---流程删除觸發節點結束

用acitivit開發流程,因業務要求,希望實作節點結束時實作相關業務場景!

這個簡單,實作activti的事件接口ExecutionListener中就可以了!

代碼簡單如下

*/
public  class TestListener implements ExecutionListener {
     
    public void notify(DelegateExecution execution) throws Exception {
         //實作業務事件

    }

 
}
           

功能實作了,上線了,使用者又說,怎麼流程删除了,事件又觸發了!

跟蹤了一下,發現用acitivit的方法runtimeService.deleteProcessInstance删除流程,同樣會觸發配在該節點的上end事件!

原因找到了,那隻能在監聽器上做個判斷,如果是删除事件時,不觸發該業務

修改代碼如下

public void notify(DelegateExecution execution) throws Exception {
         if(execution instanceof ExecutionEntity){
            if("ACTIVITY_DELETED".equals(((ExecutionEntity)execution).getDeleteReason()))return;
        }
         //實作業務事件

    }

 
}

           

至此,資料處理成功!

繼續閱讀