一、流程图
二、代码实现
1>test.jbpl.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <process name="test" xmlns="http://jbpm.org/4.4/jpdl">
- <!-- 流程启动事件 -->
- <on event="start">
- <event-listener class="com.njupt.k_event.EventListenerImpl"></event-listener>
- </on>
- <!-- 流程结束事件 -->
- <on event="end">
- <event-listener class="<span style="font-family: Arial, Helvetica, sans-serif;">"com.njupt</span><span style="font-family: Arial, Helvetica, sans-serif;">.k_event.EventListenerImpl"></event-listener></span>
- </on>
- <start name="start1" g="136,73,48,48">
- <transition name="to task1" to="task1" g="-53,-17" />
- <!-- Start活动只有离开活动事件 -->
- <on event="end">
- <event-listener class="<span style="font-family: Arial, Helvetica, sans-serif;">"com.njupt.</span><span style="font-family: Arial, Helvetica, sans-serif;">k_event.EventListenerImpl"></event-listener></span>
- </on>
- </start>
- <task name="task1" g="127,168,92,52" assignee="张三">
- <transition name="to end1" to="end1" g="-47,-17" />
- <!-- 进入活动事件 -->
- <on event="start">
- <event-listener class=<span style="font-family: Arial, Helvetica, sans-serif;">"com.njupt.</span><span style="font-family: Arial, Helvetica, sans-serif;">k_event.EventListenerImpl"></event-listener></span>
- </on>
- <!-- 离开活动事件 -->
- <on event="end">
- <event-listener class="<span style="font-family: Arial, Helvetica, sans-serif;">"com.njupt.</span><span style="font-family: Arial, Helvetica, sans-serif;">k_event.EventListenerImpl"></event-listener></span>
- </on>
- </task>
- <end name="end1" g="156,269,48,48">
- <!-- End活动只有进入活动事件 -->
- <on event="start">
- <event-listener class="<span style="font-family: Arial, Helvetica, sans-serif;">"com.njupt.</span><span style="font-family: Arial, Helvetica, sans-serif;">k_event.EventListenerImpl"></event-listener></span>
- </on>
- </end>
- </process>
- package com.njpt.k_event;
- import org.jbpm.api.listener.EventListener;
- import org.jbpm.api.listener.EventListenerExecution;
- public class EventListenerImpl implements EventListener {
- @Override
- public void notify(EventListenerExecution execution) throws Exception {
- System.out.println("事件触发了, " + execution.getActivity());
- }
- }
三、编写流程测试类
- package com.njupt.k_event;
- import java.io.InputStream;
- import org.jbpm.api.Configuration;
- import org.jbpm.api.ProcessEngine;
- import org.jbpm.api.ProcessInstance;
- import org.junit.Test;
- public class ProcessTest {
- private ProcessEngine processEngine = Configuration.getProcessEngine();
- @Test
- public void test() throws Exception {
- // 1,部署流程定义
- InputStream in = getClass().getResourceAsStream("test.jpdl.xml");
- processEngine.getRepositoryService()//
- .createDeployment()//
- .addResourceFromInputStream("test.jpdl.xml", in)//
- .deploy();
- // 2,启动流程实例
- processEngine.getExecutionService().startProcessInstanceByKey("test");
- }
- @Test
- public void testCompleteTask() throws Exception {
- String taskId = "350008";
- processEngine.getTaskService().completeTask(taskId);
- }
- }