Activiti学习之监听器
来源:互联网 发布:win10如何更新软件 编辑:程序博客网 时间:2024/06/05 20:27
监听器是Activiti在BPMN 2.0规范基础上扩展的功能,是业务与流程的“非侵入性粘合剂”。在Activiti中开发人员可以通过配置监听器的方式监听各种动作,若流程的启动和结束,任务的创建和完成,某个顺序流的经过等。
监听器分为两种:
- 执行监听器
- 任务监听器
执行监听器主要功能为监听流程的启动、结束和节点连接线的流经。
任务监听器主要是对任务创建和完成的监控。
监听器事件主要分为三种:
- start(开始事件)
- end(结束事件)
- take(捕获事件)
下面通过代码实例来学习监听器,下面所有的代码均在spring boot框架下编写。
1、绘制流程图
新建一个流程图,该流程图包含开始、系统任务、结束三个节点,分别给三个节点设置监听器
流程开始节点
系统任务节点
流程结束节点
给系统任务设置执行方法
流程图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: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="listenerProcess" name="Listener Process" isExecutable="true"> <startEvent id="startevent1" name="Start"> <extensionElements> <activiti:executionListener event="start" expression="${listenerService.start()}"></activiti:executionListener> </extensionElements> </startEvent> <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="servicetask1"></sequenceFlow> <endEvent id="endevent1" name="End"> <extensionElements> <activiti:executionListener event="end" expression="${listenerService.end()}"></activiti:executionListener> </extensionElements> </endEvent> <sequenceFlow id="flow2" sourceRef="servicetask1" targetRef="endevent1"></sequenceFlow> <serviceTask id="servicetask1" name="User Task" activiti:expression="${resumeService.storeResume()}"> <extensionElements> <activiti:executionListener event="start" expression="${listenerService.taskStart()}"></activiti:executionListener> <activiti:executionListener event="end" expression="${listenerService.taskEnd()}"></activiti:executionListener> </extensionElements> </serviceTask> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_myProcess"> <bpmndi:BPMNPlane bpmnElement="listenerProcess" id="BPMNPlane_myProcess"> <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1"> <omgdc:Bounds height="35.0" width="35.0" x="150.0" y="190.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1"> <omgdc:Bounds height="35.0" width="35.0" x="380.0" y="190.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="servicetask1" id="BPMNShape_servicetask1"> <omgdc:Bounds height="55.0" width="105.0" x="230.0" y="180.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1"> <omgdi:waypoint x="185.0" y="207.0"></omgdi:waypoint> <omgdi:waypoint x="230.0" y="207.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2"> <omgdi:waypoint x="335.0" y="207.0"></omgdi:waypoint> <omgdi:waypoint x="380.0" y="207.0"></omgdi:waypoint> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram></definitions>
2、编写代码
监听器接口代码如下
public interface ListenerService { void start(); void end(); void taskStart(); void taskEnd(); void taskExecute();}
监听器实现类代码如下
@Service("listenerService")public class ListenerServiceImpl implements ListenerService { /** * 流程开始 */ @Override public void start() { System.out.println("Activiti监听器:流程开始..................................."); } /** * 流程结束 */ @Override public void end() { System.out.println("Activiti监听器:流程结束..................................."); } /** * 任务开始 */ @Override public void taskStart() { System.out.println("Activiti监听器:任务开始..................................."); } /** * 任务结束 */ @Override public void taskEnd() { System.out.println("Activiti监听器:任务结束..................................."); } /** * 任务执行 */ @Override public void taskExecute() { System.out.println("Activiti系统任务:任务执行..................................."); }}
3、编写单元测试
单元测试类代码如下:
@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest(classes = SpringBootActivitiApplication.class)public class ListenerTest { @Autowired RuntimeService runtimeService; /** * 启动流程 */ @Test public void testStartProcess() { runtimeService.startProcessInstanceByKey("listenerProcess"); }}
4、执行结果
阅读全文
0 0
- Activiti学习之监听器
- activiti学习笔记(六) 监听器
- activiti之spring管理监听器的方法
- activiti(7):监听器之流程监听及spring注入
- 【Servlet学习之】监听器
- java学习之----监听器
- activiti监听器使用
- activiti工作流配置监听器
- Activiti监听器(十一)
- Java Activiti(8)--监听器
- activiti监听器使用
- Activiti学习之HelloWorld程序
- 传智播客学习之Servlet监听器
- activiti全局的监听器和链接监听器
- Activiti学习之spring boot 与activiti整合
- Activiti 监听器的配置使用
- activiti之节点监听器结合业务的使用(让业务和流程完全分离)
- Activiti学习之用户与组
- windows 系统显示桌面后任务栏不见了
- [绍棠_Swift] Swift3.0中 通过viewController push跳转到TabbarController 隐藏后退按钮问题
- oracle中函数round()与函数trunc()
- 数据通信中的校验方法
- Elasticsearch简单使用系列--使用Java API进行CRUD操作
- Activiti学习之监听器
- springmvc 解析url 返回的xml数据
- 数据库索引的实现原理
- idea 的使用与快捷键
- Elasticsearch简单使用系列--使用Rest API进行CRUD操作
- windows 下配置 Nginx 常见问题
- layerui弹框实例
- 手机芯战!麒麟与骁龙上演难分胜负的技术竞速赛
- ios十进制、十六进制字符串,byte,data等之间的转换