用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;
}
//實作業務事件
}
}
至此,資料處理成功!