activiti学习之监听流程实例的开始和结束
写在前面
activiti的监听器分为全局监听器,连线监听器,节点监听器,本文要监听流程实例的开始和结束需要通过全局监听器来实现,依赖的接口是org.activiti.engine.delegate.ExecutionListener
,源码如下:
public interface ExecutionListener extends Serializable {// 流程实例开始String EVENTNAME_START = "start";// 流程实例结束String EVENTNAME_END = "end";// 监控连线时使用,即需要在线上设置String EVENTNAME_TAKE = "take";void notify(DelegateExecution execution) throws Exception;
}
1:测试
1.1:流程设计
- 效果图
如下是设置流程实例start
和end
的监听器以及其源码:
public class ProcessInstanceStartExecutionListener implements ExecutionListener {@Overridepublic void notify(DelegateExecution execution) throws Exception {System.out.println("流程实例启动了,实例id是:" + execution.getProcessInstanceId());}
}public class ProcessInstanceEndExecutionListener implements ExecutionListener {@Overridepublic void notify(DelegateExecution execution) throws Exception {System.out.println("流程实例结束了,实例ID是:" + execution.getProcessInstanceId());}
}
- xml
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test"><process id="csdnProcessInstanceStartAndEnd" name="csdnProcessInstanceStartAndEnd" isExecutable="true"><extensionElements><activiti:executionListener event="start" class="com.jh.activiti.ProcessInstanceStartExecutionListener"></activiti:executionListener><activiti:executionListener event="end" class="com.jh.activiti.ProcessInstanceEndExecutionListener"></activiti:executionListener></extensionElements><startEvent id="startevent1" name="Start"></startEvent><userTask id="usertask1" name="User Task" activiti:assignee="张三"><extensionElements><modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler">false</modeler:initiator-can-complete></extensionElements></userTask><endEvent id="endevent1" name="End"></endEvent><sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow><sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow></process><bpmndi:BPMNDiagram id="BPMNDiagram_csdnProcessInstanceStartAndEnd"><bpmndi:BPMNPlane bpmnElement="csdnProcessInstanceStartAndEnd" id="BPMNPlane_csdnProcessInstanceStartAndEnd"><bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1"><omgdc:Bounds height="35.0" width="35.0" x="150.0" y="240.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1"><omgdc:Bounds height="55.0" width="105.0" x="360.0" y="230.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1"><omgdc:Bounds height="35.0" width="35.0" x="660.0" y="240.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"><omgdi:waypoint x="185.0" y="257.0"></omgdi:waypoint><omgdi:waypoint x="360.0" y="257.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"><omgdi:waypoint x="465.0" y="257.0"></omgdi:waypoint><omgdi:waypoint x="660.0" y="257.0"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</definitions>
1.2:部署流程
/*** 部署流程定义*/
@Test
public void deploy() {Deployment deployment = repositoryService.createDeployment() // 创建部署.addClasspathResource("com/jh/activiti/csdnProcessInstanceStartAndEnd.bpmn20.xml") // 加载流程资源文件.name("csdn监听流程实例的启动和结束") // 流程名称.deploy(); // 部署System.out.println("流程部署ID:" + deployment.getId());System.out.println("流程部署Name:" + deployment.getName());
}
1.3:启动流程实例
@Test
public void startInstance() {runtimeService.startProcessInstanceByKey("csdnProcessInstanceStartAndEnd");
}
输出如下:
流程实例启动了,实例id是:1112502
1.4:结束流程
此时任务如下:
@Test
public void complete() {taskService.complete("1112507");
}
输出如下:
流程实例结束了,实例ID是:1112502
activiti学习之监听流程实例的开始和结束相关推荐
- JavaScript事件监听完整实例(含注释)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- android触摸滑动监听,Android 滑动监听的实例详解
Android 滑动监听的实例详解 摘要: ScollBy,ScollTo是对内容的移动,view.ScollyBy是对view的内容的移动 view,ScollTo是对内容的移动(移动到指定位置), ...
- Spring事件监听流程分析【源码浅析】
一.简介 Spring早期是通过实现ApplicationListener接口来定义监听事件,在spring4.2的时候开始我们可以通过@EventListener注解来定义监听事件,Applicat ...
- Ejabberd源码学习——端口监听及报文转发流程
这篇文章是我之前在RYTong内部分享的一篇文章.上一篇文章说到Ejabberd在启动的时候会监听配置的端口,但没有详细解释监听的流程.这篇我们就来看看Ejabberd监听端口的实现逻辑,了解下一个X ...
- oracle监听 客户 实例,oracle 数据库实例 监听
创建Oracle数据库.数据库名与实例名与SID之间的关系(图文详解) 目录 目录 软件环境 前言 安装Oracle监听程序 启动停止监听程序 创建数据库 数据库名db_name 数据库实例名inst ...
- Liferay7 BPM门户开发之4: Activiti事件处理和监听Event handlers
事件机制从Activiti 5.15开始引入,这非常棒,他可以让你实现委托. 可以通过配置添加事件监听器,也可以通过Runtime API加入注册事件. 所有的事件参数子类型都来自org.activi ...
- linux下启动与关闭oracle监听与实例
linux中启动oracle主要分两步:一个是启动监听器,一个是启动实例(一般都忘记了这一步),具体命令如下,提供给大家参考一下: 1:连接服务器 telnet ip 2:输入管理员用户和密码 use ...
- Android学习小记-----监听并保存传感器数据,让service后台运行(保持CPU运转
最近做了一个Demo,监听手机中传感器的数据,并将数据保存到手机文件中,发现数据会有丢失的现象. 经过多次测试,发现系统进入深度休眠了,之后service会停止,虽然增加了service自动启动的功能 ...
- linux系统oracle监听启动,linux下启动与关闭oracle监听与实例
转自:http://fireye83.iteye.com/blog/1064116 一.如何启动数据库实例 1.进入到sqlplus启动实例 [oracle@localhost ~]$ su - or ...
最新文章
- 通信专业学python有用吗-通信算法工程师需要学python吗
- NodeJs中process.cwd()与__dirname的区别
- 将一个数组拼接成一个指定字符串返回
- 将一个日程分割成多个日程_在家庭日程中开展工作的6个技巧
- ubantu安装cuda和cudnn
- Bailian2965 玛雅历【日期计算】
- h5页面如何预览excel文件_在网页中预览word和excel
- 【czy系列赛】czy的后宫4 bzoj1925 [Sdoi2010]地精部落
- 研究生必须过计算机和英语吗,2020考研:英语一75分,她是怎么做到的_计算机考研科目...
- ubuntu18.10安装redshift护眼软件
- linux 时间设置的坑,linux 配置定时任务crontab碰到的坑sendmail
- Sublime Text全局搜索
- WebAPI压力测试
- 【LeetCode】(55)Jump Game(Medium)
- 什么是子网掩码?怎么根据子网掩码得到网络号?
- 一个进入保护模式加载引导程序的BOOTLOADER
- wmiprvse.exe进程
- 最新的 Sublime 激活码
- android 酷狗demo_酷狗音乐(Android)v8.1.5去广告清爽版
- swing中使用皮肤包