userTask元素的事件分为三种:"create"、"assignment"、"complete",分别表示结点执行处理逻辑的时机为:在处理类实例化时、在结点处理逻辑被指派时、在结点处理逻辑执行完成时,可以根据自己的需要进行指定。
流程文件
点击(此处)折叠或打开
-
- xmlns="" xmlns:activiti=""
- targetNamespace="Umpay">
- class="com.usertask.Task1Listener" />
- class="com.usertask.Task2Listener" />
- class="com.usertask.Task3Listener" />
- class="com.usertask.Task4Listener" />
点击(此处)折叠或打开
-
package com.usertask;
-
-
import java.util.logging.Logger;
-
-
import org.activiti.engine.delegate.DelegateTask;
-
-
import org.activiti.engine.delegate.TaskListener;
-
-
public class Task1Listener implements TaskListener {
-
-
private final Logger log = Logger.getLogger(Task1Listener.class.getName());
-
-
@Override
-
public void notify(DelegateTask delegateTask) {
-
try {
-
Thread.sleep(10000);
-
} catch (InterruptedException e) {
-
e.printStackTrace();
-
}
-
log.info("I am task 1.");
-
}
- }
测试代码
点击(此处)折叠或打开
-
package com.usertask;
-
-
import java.util.Date;
-
import java.util.List;
-
-
import org.activiti.engine.runtime.ProcessInstance;
-
import org.activiti.engine.task.Task;
-
import org.activiti.engine.task.TaskQuery;
-
import org.activiti.engine.test.Deployment;
-
-
import com.autoexcute.AbstractTest;
-
-
public class UserTaskTest extends AbstractTest {
-
-
private String deploymentId;
-
private Date start = null;
-
private Date end = null;
-
-
@Override
-
protected void initialize() throws Exception {
-
deploymentId = repositoryService.createDeployment()
-
.addClasspathResource("com/usertask/usertaskbpmn.bpmn")
-
.deploy().getId();
-
}
-
-
@Override
-
protected void destroy() throws Exception {
-
repositoryService.deleteDeployment(deploymentId, true);
-
}
-
-
@Deployment
-
public void testUnbalancedForkJoin() {
-
ProcessInstance pi = runtimeService.startProcessInstanceByKey("ParalellBasedForkJoin");
-
TaskQuery query = taskService.createTaskQuery().processInstanceId(pi.getId()).orderByTaskName().asc();
-
-
List<Task> tasks = query.list();
-
assertEquals(3, tasks.size());
-
start = new Date();
-
for(Task task : tasks) {
-
taskService.complete(task.getId());
-
end = new Date();
-
System.out.println("" + (end.getTime()-start.getTime()) + "ms.");
-
}
-
-
tasks = query.list();
-
assertEquals(1, tasks.size());
-
for(Task task : tasks) {
-
taskService.complete(task.getId());
-
end = new Date();
-
System.out.println("" + (end.getTime()-start.getTime()) + "ms.");
-
}
-
end = new Date();
-
System.out.println("" + (end.getTime()-start.getTime()) + "ms.");
-
}
- }
点击(此处)折叠或打开
- 信息: I am task 1.
- 10063ms.
- 八月 01, 2013 5:20:05 下午 com.usertask.Task2Listener notify
- 信息: I am task 2.
- 20110ms.
- 八月 01, 2013 5:20:15 下午 com.usertask.Task3Listener notify
- 信息: I am task 3.
- 30157ms.
- 八月 01, 2013 5:20:25 下午 com.usertask.Task4Listener notify
- 信息: I am task 4.
- 40219ms.
1.Activiti 5.3:流程活动自动与手工触发执行.http://blog.csdn.net/shirdrn/article/details/6270506