用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;
}
//实现业务事件
}
}
至此,数据处理成功!