学习JBPM 工作流引擎监听事件(四)

监听器的原理图

 添加监听器的步骤与方法

 

创建一个新的流程  holiday.xml

在holiday.xml 添加上监听的代码

<?xml version="1.0" encoding="UTF-8"?>

<process name="holiday" xmlns="http://jbpm.org/4.4/jpdl">
   <!-- 第一次 -->
   <on event="start">
   	<event-listener class="cn.itcast.jbpm.h_event.MyEventListener"></event-listener>
   </on>
   <on event="end">
   	<event-listener class="cn.itcast.jbpm.h_event.MyEventListener"></event-listener>
   </on>
   
   <start name="start1" g="275,34,48,48">
   	   <!-- 第二次 -->
   	   <on event="end">
	   	<event-listener class="cn.itcast.jbpm.h_event.MyEventListener"></event-listener>
	   </on>
      <transition name="to 办理" to="办理" g="-45,-22"/>
   </start>
   
   <end name="end1" g="275,248,48,48">
   	  <on event="start">
	   	<event-listener class="cn.itcast.jbpm.h_event.MyEventListener"></event-listener>
	   </on>
   </end>
   <task name="办理" g="253,134,92,52">
   	   <!-- 第三次 -->
       <on event="start">
	   	<event-listener class="cn.itcast.jbpm.h_event.MyEventListener"></event-listener>
	   </on>
	   <on event="end">
	   	<event-listener class="cn.itcast.jbpm.h_event.MyEventListener"></event-listener>
	   </on>
      <transition name="to end1" to="end1" g="-50,-22"/>
   </task>
   
</process>

创建事件监听类 MyEventListener

package cn.itcast.jbpm.h_event;

import org.jbpm.api.listener.EventListener;
import org.jbpm.api.listener.EventListenerExecution;

public class MyEventListener implements EventListener {

	@Override
	//EventListenerExecution  继承  OpenExecution  获得流程中参数
	public void notify(EventListenerExecution eventListenerExecution) throws Exception {
		System.out.println("监听器执行了..........");
		System.err.println("id :" + eventListenerExecution.getId());
		System.err.println("key :" + eventListenerExecution.getKey());
		System.err.println("name :" + eventListenerExecution.getName());
		System.err.println("activity :" + eventListenerExecution.getActivity());
		
	}

}

监听测试类 EventTest  先部署流程,在发布流程就可以在控制台中看到监听事件,所执行的次数与获取到的流程实例对象

package cn.itcast.jbpm.h_event;

import org.jbpm.api.ExecutionService;
import org.jbpm.api.NewDeployment;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.RepositoryService;
import org.junit.Test;

public class EventTest {

	 @Test
	 //部署流程
	 public void testDeploy(){
		//获取引擎
		 ProcessEngine processEngine = org.jbpm.api.Configuration.getProcessEngine();
		 //获得实例管理service
		 RepositoryService repositoryService = processEngine.getRepositoryService();
		//创建一个部署对象
		NewDeployment createDeployment = repositoryService.createDeployment();
		createDeployment.addResourceFromClasspath("holiday/holiday.jpdl.xml");
		createDeployment.addResourceFromClasspath("holiday/holiday.png");
		// 发布
		createDeployment.deploy();
		 
	 }
	 
	 @Test
	 //测试启动流程
	 public void testStartProccess(){
		 ProcessEngine processEngine = org.jbpm.api.Configuration.getProcessEngine();
		 //启动流程 获得ExecutionService
		 ExecutionService executionService = processEngine.getExecutionService();
		 //启动 (通过看表才能知道id,使用较少)
//		 executionService.startProcessInstanceById("1");
		 
		 //设计流程时,流程有name -----默认生成流程key
		 executionService.startProcessInstanceByKey("holiday");
		 
	 }
	 
}

监听成功  发布一次总共监听了 三次

猜你喜欢

转载自blog.csdn.net/qq_36908872/article/details/84962623
今日推荐