JBPM4基础篇07-监听事件EventListener
2014-05-11 21:11
351 查看
在JBPM中配置监听,可以拦截某个任务节点的开始或者结束。
event.jpdl.xml在设计器中的示意图:
![](http://img.my.csdn.net/uploads/201211/23/1353601928_3575.jpg)
再来看看Source代码:
[html]
view plaincopyprint?
<?xml version="1.0" encoding="UTF-8"?>
<process name="event" xmlns="http://jbpm.org/4.3/jpdl">
<on event="start">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<on event="end">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<start g="178,107,48,48" name="start1">
<on event="start">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<on event="end">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<transition name="to state1" to="state1" g="-59,-17" />
</start>
<end g="187,302,48,48" name="end1">
<on event="start">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<on event="end">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
</end>
<state name="state1" g="207,222,92,52">
<on event="start">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<on event="end">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<transition name="to end1" to="end1" g="-47,-17" />
</state>
</process>
ProcessEventListener
这个类是我们定义的一个实现了EventListener接口的实现类;在其方法中,输出一些信息来测试该方法是否被执行过。
[java]
view plaincopyprint?
package org.wxp;
import org.jbpm.api.listener.EventListener;
import org.jbpm.api.listener.EventListenerExecution;
public class ProcessEventListener implements EventListener {
@Override
public void notify(EventListenerExecution eventListenerExecution)
throws Exception {
System.out.println(eventListenerExecution);
}
}
EventTest
至此,需要测试一下是否流程的start和end事件被截获到
[java]
view plaincopyprint?
package org.wxp;
import junit.framework.TestCase;
import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.RepositoryService;
/**
* 设定了事件监听器Listener,测试start和end事件
*
* 1.如果一个节点是从其直接开始,并没有上个节点的进入,那么这个节点的start事件就不执行
* 2.state是等待过程,那么它的end事件就不会执行
* @author Champion.Wong
*
*/
public class EventTest extends TestCase {
ProcessEngine processEngine;
public EventTest() {
processEngine = Configuration.getProcessEngine();
}
public void test() {
RepositoryService repositoryService = processEngine
.getRepositoryService();
String deploymentId = repositoryService.createDeployment()
.addResourceFromClasspath("event.jpdl.xml").deploy();
ExecutionService executionService = processEngine.getExecutionService();
executionService.startProcessInstanceByKey("event");
}
}
在JBPM中配置监听,可以拦截某个任务节点的开始或者结束。
event.jpdl.xml在设计器中的示意图:
![](http://img.my.csdn.net/uploads/201211/23/1353601928_3575.jpg)
再来看看Source代码:
[html]
view plaincopyprint?
<?xml version="1.0" encoding="UTF-8"?>
<process name="event" xmlns="http://jbpm.org/4.3/jpdl">
<on event="start">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<on event="end">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<start g="178,107,48,48" name="start1">
<on event="start">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<on event="end">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<transition name="to state1" to="state1" g="-59,-17" />
</start>
<end g="187,302,48,48" name="end1">
<on event="start">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<on event="end">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
</end>
<state name="state1" g="207,222,92,52">
<on event="start">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<on event="end">
<event-listener class="org.wxp.ProcessEventListener" />
</on>
<transition name="to end1" to="end1" g="-47,-17" />
</state>
</process>
<?xml version="1.0" encoding="UTF-8"?> <process name="event" xmlns="http://jbpm.org/4.3/jpdl"> <on event="start"> <event-listener class="org.wxp.ProcessEventListener" /> </on> <on event="end"> <event-listener class="org.wxp.ProcessEventListener" /> </on> <start g="178,107,48,48" name="start1"> <on event="start"> <event-listener class="org.wxp.ProcessEventListener" /> </on> <on event="end"> <event-listener class="org.wxp.ProcessEventListener" /> </on> <transition name="to state1" to="state1" g="-59,-17" /> </start> <end g="187,302,48,48" name="end1"> <on event="start"> <event-listener class="org.wxp.ProcessEventListener" /> </on> <on event="end"> <event-listener class="org.wxp.ProcessEventListener" /> </on> </end> <state name="state1" g="207,222,92,52"> <on event="start"> <event-listener class="org.wxp.ProcessEventListener" /> </on> <on event="end"> <event-listener class="org.wxp.ProcessEventListener" /> </on> <transition name="to end1" to="end1" g="-47,-17" /> </state> </process>
ProcessEventListener
这个类是我们定义的一个实现了EventListener接口的实现类;在其方法中,输出一些信息来测试该方法是否被执行过。
[java]
view plaincopyprint?
package org.wxp;
import org.jbpm.api.listener.EventListener;
import org.jbpm.api.listener.EventListenerExecution;
public class ProcessEventListener implements EventListener {
@Override
public void notify(EventListenerExecution eventListenerExecution)
throws Exception {
System.out.println(eventListenerExecution);
}
}
package org.wxp; import org.jbpm.api.listener.EventListener; import org.jbpm.api.listener.EventListenerExecution; public class ProcessEventListener implements EventListener { @Override public void notify(EventListenerExecution eventListenerExecution) throws Exception { System.out.println(eventListenerExecution); } }
EventTest
至此,需要测试一下是否流程的start和end事件被截获到
[java]
view plaincopyprint?
package org.wxp;
import junit.framework.TestCase;
import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.RepositoryService;
/**
* 设定了事件监听器Listener,测试start和end事件
*
* 1.如果一个节点是从其直接开始,并没有上个节点的进入,那么这个节点的start事件就不执行
* 2.state是等待过程,那么它的end事件就不会执行
* @author Champion.Wong
*
*/
public class EventTest extends TestCase {
ProcessEngine processEngine;
public EventTest() {
processEngine = Configuration.getProcessEngine();
}
public void test() {
RepositoryService repositoryService = processEngine
.getRepositoryService();
String deploymentId = repositoryService.createDeployment()
.addResourceFromClasspath("event.jpdl.xml").deploy();
ExecutionService executionService = processEngine.getExecutionService();
executionService.startProcessInstanceByKey("event");
}
}
package org.wxp; import junit.framework.TestCase; import org.jbpm.api.Configuration; import org.jbpm.api.ExecutionService; import org.jbpm.api.ProcessEngine; import org.jbpm.api.RepositoryService; /** * 设定了事件监听器Listener,测试start和end事件 * * 1.如果一个节点是从其直接开始,并没有上个节点的进入,那么这个节点的start事件就不执行 * 2.state是等待过程,那么它的end事件就不会执行 * @author Champion.Wong * */ public class EventTest extends TestCase { ProcessEngine processEngine; public EventTest() { processEngine = Configuration.getProcessEngine(); } public void test() { RepositoryService repositoryService = processEngine .getRepositoryService(); String deploymentId = repositoryService.createDeployment() .addResourceFromClasspath("event.jpdl.xml").deploy(); ExecutionService executionService = processEngine.getExecutionService(); executionService.startProcessInstanceByKey("event"); } }
相关文章推荐
- JBPM4基础篇07-监听事件EventListener
- JBPM4基础篇07-监听事件EventListener
- Android零基础入门第34节:Android中基于监听的事件处理
- JFrame画图基础和事件监听
- java基础学习之事件监听--鼠标点击
- Java_基础—GUI(窗体/鼠标/键盘/动作监听和键盘事件)
- Android零基础入门第34节:Android中基于监听的事件处理
- js基础学习资料!for循环,监听事件
- Android基础学习笔记---事件监听(一)
- 【Java】-基础-事件监听
- JavaScript基础_13事件绑定函数+监听函数+冒泡事件流
- JAVA基础再回首(二十七)——JAVA中的图形化界面、GUI概述、简单的窗体创建、事件监听机制、动作事件、GUI布局、鼠标事件
- Flex之旅:第一部分:flex必备基础知识积累(1)---监听键盘事件的注意事项
- 【android基础学习之一】——事件的监听与触发
- android基础之如何实现触屏监听和鼠标点击事件
- Vue------第四天(事件处理:事件监听、修饰符等;表单输入绑定:基础用法、值绑定)
- Android基础入门教程——3.1 基于监听的事件处理机制
- Android零基础入门第34节:Android中基于监听的事件处理
- 黑马程序员——JAVA基础---GUI---概述,组件,事件监听,生成.jar可执行文件
- 【Android基础】EditText键盘搜索事件设置和监听