Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3351791
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: Java

2013-08-01 17:48:00

1.事件触发    
      userTask元素的事件分为三种:"create"、"assignment"、"complete",分别表示结点执行处理逻辑的时机为:在处理类实例化时、在结点处理逻辑被指派时、在结点处理逻辑执行完成时,可以根据自己的需要进行指定。

流程文件

点击(此处)折叠或打开

  1. xmlns="" xmlns:activiti=""
  2. targetNamespace="Umpay">
  3. class="com.usertask.Task1Listener" />
  4. class="com.usertask.Task2Listener" />
  5. class="com.usertask.Task3Listener" />
  6. class="com.usertask.Task4Listener" />
上述流程定义中,4个任务结点对应的处理类,代码分别如下所示:

点击(此处)折叠或打开

  1. package com.usertask;

  2. import java.util.logging.Logger;

  3. import org.activiti.engine.delegate.DelegateTask;
  4.   
  5. import org.activiti.engine.delegate.TaskListener;

  6. public class Task1Listener implements TaskListener {
  7.   
  8.     private final Logger log = Logger.getLogger(Task1Listener.class.getName());
  9.       
  10.     @Override
  11.     public void notify(DelegateTask delegateTask) {
  12.         try {
  13.             Thread.sleep(10000);
  14.         } catch (InterruptedException e) {
  15.             e.printStackTrace();
  16.         }
  17.         log.info("I am task 1.");
  18.     }
  19. }
其它3个,如同上面

测试代码

点击(此处)折叠或打开

  1. package com.usertask;

  2. import java.util.Date;
  3. import java.util.List;
  4.   
  5. import org.activiti.engine.runtime.ProcessInstance;
  6. import org.activiti.engine.task.Task;
  7. import org.activiti.engine.task.TaskQuery;
  8. import org.activiti.engine.test.Deployment;

  9. import com.autoexcute.AbstractTest;

  10. public class UserTaskTest extends AbstractTest {
  11.   
  12.     private String deploymentId;
  13.     private Date start = null;
  14.     private Date end = null;
  15.       
  16.     @Override
  17.     protected void initialize() throws Exception {
  18.         deploymentId = repositoryService.createDeployment()
  19.             .addClasspathResource("com/usertask/usertaskbpmn.bpmn")
  20.             .deploy().getId();
  21.     }
  22.   
  23.     @Override
  24.     protected void destroy() throws Exception {
  25.         repositoryService.deleteDeployment(deploymentId, true);
  26.     }
  27.       
  28.     @Deployment
  29.     public void testUnbalancedForkJoin() {
  30.         ProcessInstance pi = runtimeService.startProcessInstanceByKey("ParalellBasedForkJoin");
  31.         TaskQuery query = taskService.createTaskQuery().processInstanceId(pi.getId()).orderByTaskName().asc();
  32.   
  33.         List<Task> tasks = query.list();
  34.         assertEquals(3, tasks.size());
  35.         start = new Date();
  36.         for(Task task : tasks) {
  37.             taskService.complete(task.getId());
  38.             end = new Date();
  39.             System.out.println("" + (end.getTime()-start.getTime()) + "ms.");
  40.         }
  41.   
  42.         tasks = query.list();
  43.         assertEquals(1, tasks.size());
  44.         for(Task task : tasks) {
  45.             taskService.complete(task.getId());
  46.             end = new Date();
  47.             System.out.println("" + (end.getTime()-start.getTime()) + "ms.");
  48.         }
  49.         end = new Date();
  50.         System.out.println("" + (end.getTime()-start.getTime()) + "ms.");
  51.     }
  52. }
运行结果

点击(此处)折叠或打开

  1. 信息: I am task 1.
  2. 10063ms.
  3. 八月 01, 2013 5:20:05 下午 com.usertask.Task2Listener notify
  4. 信息: I am task 2.
  5. 20110ms.
  6. 八月 01, 2013 5:20:15 下午 com.usertask.Task3Listener notify
  7. 信息: I am task 3.
  8. 30157ms.
  9. 八月 01, 2013 5:20:25 下午 com.usertask.Task4Listener notify
  10. 信息: I am task 4.
  11. 40219ms.
参考文献    
1.Activiti 5.3:流程活动自动与手工触发执行.http://blog.csdn.net/shirdrn/article/details/6270506

阅读(8949) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~