java怎么设置不同事件_activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便...
如果我们像给任务配置监听,按照常规的做法是这样的

一个个配置,比较麻烦。
现在利用ActivitiEventListener,监听全局事件,并且可以判断不同的事件类型,进而执行不同的业务逻辑。
1.定义事件处理handler接口
用接口来定义统一约定
public interface EventHandler {
void handle(ActivitiEvent event);
}
2.实现不同事件
任务结束事件
*/
public class TaskCompleteListener implements EventHandler {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void handle(ActivitiEvent event) {
ActivitiEntityEventImpl eventImpl = (ActivitiEntityEventImpl) event;
TaskEntity taskEntity = (TaskEntity) eventImpl.getEntity();
}
}
任务创建事件
public class TaskCreateListener implements EventHandler {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void handle(ActivitiEvent event) {
ActivitiEntityEventImpl eventImpl = (ActivitiEntityEventImpl) event;
TaskEntity taskEntity = (TaskEntity) eventImpl.getEntity();
}
}
还有很多事件,比如TASK_ASSIGNED,PROCESS_STARTED,PROCESS_COMPLETED
3.实现ActivitiEventListener
public class GlobalEventListener implements ActivitiEventListener {
protected Logger logger = LoggerFactory.getLogger(getClass());
/**
* 各类 Event 的处理器
*/
private Map handlers = new HashMap();
@Override
public void onEvent(ActivitiEvent event) {
EventHandler eventHandler = handlers.get(event.getType());
if(eventHandler!=null){
eventHandler.handle(event);
}
}
@Override
public boolean isFailOnException() {
return false;
}
public Map getHandlers() {
return handlers;
}
public void setHandlers(Map handlers) {
this.handlers = handlers;
}
}
4.注册事件监听
classpath*:*
优点
这样代码清晰,业务逻辑解耦,单一职责
省去在bpmn.xml中配置,方便。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
