一、流程图
二、代码实现
1>test.jbpl.xml
1. <?xml version="1.0" encoding="UTF-8"?>
2.
3. <process name="test" xmlns="http://jbpm.org/4.4/jpdl">
4.
5.
6.
7. <!-- 流程启动事件 -->
8. <on event="start">
9. <event-listener class="com.njupt.k_event.EventListenerImpl"></event-listener>
10. </on>
11.
12. <!-- 流程结束事件 -->
13. <on event="end">
14. <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>
15. </on>
16.
17.
18.
19.
20. <start name="start1" g="136,73,48,48">
21. <transition name="to task1" to="task1" g="-53,-17" />
22.
23. <!-- Start活动只有离开活动事件 -->
24. <on event="end">
25. <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>
26. </on>
27.
28. </start>
29.
30.
31. <task name="task1" g="127,168,92,52" assignee="张三">
32. <transition name="to end1" to="end1" g="-47,-17" />
33.
34. <!-- 进入活动事件 -->
35. <on event="start">
36. <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>
37. </on>
38.
39. <!-- 离开活动事件 -->
40. <on event="end">
41. <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>
42. </on>
43.
44. </task>
45.
46. <end name="end1" g="156,269,48,48">
47.
48. <!-- End活动只有进入活动事件 -->
49. <on event="start">
50. <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>
51. </on>
52.
53. </end>
54.
55. </process>
2>编写事件处理类
1. package com.njpt.k_event;
2.
3. import org.jbpm.api.listener.EventListener;
4. import org.jbpm.api.listener.EventListenerExecution;
5.
6. public class EventListenerImpl implements EventListener {
7.
8. @Override
9. public void notify(EventListenerExecution execution) throws Exception {
10. "事件触发了, " + execution.getActivity());
11. }
12.
13. }
三、编写流程测试类
1. package com.njupt.k_event;
2.
3. import java.io.InputStream;
4.
5. import org.jbpm.api.Configuration;
6. import org.jbpm.api.ProcessEngine;
7. import org.jbpm.api.ProcessInstance;
8. import org.junit.Test;
9.
10. public class ProcessTest {
11.
12. private ProcessEngine processEngine = Configuration.getProcessEngine();
13.
14. @Test
15. public void test() throws Exception {
16. // 1,部署流程定义
17. "test.jpdl.xml");
18. //
19. //
20. "test.jpdl.xml", in)//
21. .deploy();
22.
23. // 2,启动流程实例
24. "test");
25. }
26.
27. @Test
28. public void testCompleteTask() throws Exception {
29. "350008";
30. processEngine.getTaskService().completeTask(taskId);
31. }
32.
33. }