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

一个个配置,比较麻烦。

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

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

  1. java jmenu 监听_Java中用得比较顺手的事件监听

    第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...

  2. 事件分发(二)ViewGroup和View对触摸事件的分发流程

    接着上篇<Activity对触摸事件的分发流程>,这篇我们讲<ViewGroup和View对触摸事件的分发流程>. 1.ViewGroup对触摸事件的分发流程 ViewGrou ...

  3. Vue(组件间通信:props、自定义事件、全局事件总线、消息订阅与发布)

    一.props props不仅可以实现父给子传递信息,还可以进行子给父传递信息 1.父给子传递信息: 父组件中给子组件实例传递信息 子组件利用props进行接收组件传递信息(接收方式有三种:数组.对象 ...

  4. Android 7.0 虚拟按键(NavigationBar)源码分析 之 点击事件的实现流程

    第二部分: Let's go!!! [点击事件的实现流程] 1.初始化 虚拟按键点击效果的实现和实体按键相似,也是通过上报一个keyCode值,来判断哪个按钮被点击.不同的是,实体按键的keyCode ...

  5. java date 格式化_3种 Springboot 全局时间格式化方式,别再写重复代码了

    原文:3种 Springboot 全局时间格式化方式,别再写重复代码了 掘金 作者: 程序员内点事 时间格式化在项目中使用频率是非常高的,当我们的API接口返回结果,需要对其中某一个date字段属性进 ...

  6. Java程序设置的目的_java程序设计教学大纲的课程性质与目的.doc

    java程序设计教学大纲的课程性质与目的 <Java程序设计> Java Language Programming Design 教学大纲 一.课程性质与目的 JAVA程序设计是计算机专业 ...

  7. 传智播客成都中心的Java课程设置

    传智播客成都中心的Java课程设置 传智播客成都中心作为西南地区最大的高素质软件开发人才培训机构之一,以其强大的专业教学团队,科学的教学课程体系,以及孜孜不倦.踏实务实的教学精神,现已为中国IT产业培 ...

  8. VMware vSphere Web Services SDK编程指南(二)-Java 开发设置

    Java 开发设置 这节说明如何设置开发java客户端的开发环境. 主要包括以下内容: ■ Java 开发的各项要求 ■ java 开发设置 ■ 生成存根和编译类文件 ■ 运行 SimpleClien ...

  9. Java 编程思想源代码导入eclipse使用流程

    Java 编程思想源代码导入eclipse使用流程 1.  简介 <Java编程思想>是2007年机械工业出版社出版的图书,作者是埃克尔,译者是陈昊鹏.作为一个开发程序员,Java语言或许 ...

最新文章

  1. 舒工给您娓娓道来:2019-nCoV,教室布局筛查追溯系统算法解密!
  2. 英国JIC院士组3.8万英镑招博后-植物代谢物与微生物组-截止6月27日
  3. 话说Ubuntu和FreeBSD将要合成一个新的版本:UbuntuBSD
  4. 解决ubuntu系统中输入sudo passwd root,之后,提示输入新密码时,输不进去
  5. Hdu5015 233 Matrix矩阵
  6. 电流源并联怎么合并_一种特殊的并联切换电力系统,长见识了
  7. 自动生成优化的Java类专业知识
  8. rr计算机专业英语,《计算机专业英语》电子教本8.pdf
  9. 学习SQL 的网址集合
  10. 防火墙 规则与链的分类
  11. 如何使用PHP开发高效的WEB系统
  12. 直流电机PID控制源码c语言,51单片机PID+PWM直流电机转速闭环控制源码(12864液晶显示)...
  13. 国外问卷调查赚钱网站
  14. 服务器能打开其他网站打不开,为什么有的网页打不开其他能打开(浏览器网页打不开的原因有哪些)...
  15. python爬虫之图片的懒加载
  16. Scikit-learn中的Lasso/LassoCV以及R^2可决系数的分析与讨论
  17. 223611-42-5,S-acetyl-PEG4-alcohol含有硫乙酰基的PEG连接剂
  18. 机器学习的方法排名靠前的十种方法介绍
  19. 华为链路聚合手工负载分担和 lacp 模式
  20. AnyDesk(远程控制软件) 免费版,比Teamviewer好用

热门文章

  1. Windows下 更改 pip默认缓存目录
  2. 线性表易错点与线性表程序设计易错点
  3. 用栈实现括号匹配的检验
  4. 彻底掌握Linux文件与目录管理命令?进来看看硬核总结
  5. C++ :跳表数据结构的实现原理
  6. Oracle 原理: PL/SQL基础
  7. 启明云端分享|ESP32-S3开发环境搭建,这里我们会介绍两个比较常用的开发环境搭建:WINDOWS\LINUX
  8. go grpc测试_Grpc — 整体性能测试
  9. python 文件编码的识别_【python】python编码方式,chardet编码识别库
  10. 计算机网络与综合布线系统设计,【方案】某医院计算机网络综合布线系统设计...