欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

java怎么设置不同事件_activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便...

发布时间:2024/10/8 编程问答 49 豆豆

如果我们像给任务配置监听,按照常规的做法是这样的

一个个配置,比较麻烦。

现在利用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中配置,方便。

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是生活随笔为你收集整理的java怎么设置不同事件_activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需要在acitivit中配置任务监听,非常方便...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。