查看: 74|回复: 0

activiti 全局流程监听ActivitiEventListener,实现监听不同类型事件,不需

[复制链接]
发表于 2020-2-18 02:55:13 | 显示全部楼层 |阅读模式
如果我们像给使命配置监听,按照常规的做法是这样的

一个个配置,比较麻烦。
现在使用ActivitiEventListener,监听全局事件,并且可以判定不同的事件范例,进而执行不同的业务逻辑。
1.界说事件处理惩罚handler接口

用接口来界说统一约定
  1. public interface EventHandler {    void handle(ActivitiEvent event);}
复制代码
2.实现不同事件

使命结束事件
  1. */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();       }}
复制代码
使命创建事件
  1. 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
  1. 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.注册事件监听
  1.                                                                                                                              classpath*:*                                                                                                                                                                                                                                                                                                                                                                        
复制代码
优点


  • 这样代码清晰,业务逻辑解耦,单一职责
  • 省去在bpmn.xml中配置,方便。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?用户注册

x

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表