Activiti(十)——分配个人任务的三种方式
来源:互联网 发布:查看淘宝卖家实名认证 编辑:程序博客网 时间:2024/05/16 04:48
转自:http://blog.csdn.net/zjx86320/article/details/50388157
用户任务(UserTask)即用户操作的任务, 个人任务是用户任务的一种,这篇博文将简单地介绍下分配个人任务的三种方式。
一、流程图
图一 分配用户任务流程图
二、方式一:直接指定办理人
1.流程图中配置任务节点
图二 配置任务节点办理人
2.测试代码
- ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
-
- @Test
- public void testTask() throws Exception {
-
-
- InputStream inputStreamBpmn = this.getClass().getResourceAsStream("taskProcess.bpmn");
- InputStream inputStreamPng = this.getClass().getResourceAsStream("taskProcess.png");
- processEngine.getRepositoryService()
- .createDeployment()
- .addInputStream("userTask.bpmn", inputStreamBpmn)
- .addInputStream("userTask.png", inputStreamPng)
- .deploy();
-
-
-
- ProcessInstance pi = processEngine.getRuntimeService()
- .startProcessInstanceByKey("taskProcess");
- System.out.println("pid:" + pi.getId());
- }
-
-
- @Test
- public void findMyTaskList(){
- String userId = "周江霄";
- List<Task> list = processEngine.getTaskService()
- .createTaskQuery()
- .taskAssignee(userId)
- .list();
- for(Task task:list ){
- System.out.println("id="+task.getId());
- System.out.println("name="+task.getName());
- System.out.println("assinee="+task.getAssignee());
- System.out.println("createTime="+task.getCreateTime());
- System.out.println("executionId="+task.getExecutionId());
-
- }
- }
-
-
- @Test
- public void completeTask(){
- String taskId = "3209";
- processEngine.getTaskService()
- .complete(taskId);
- System.out.println("完成任务");
- }
说明:在上面的例子中,周江霄是个人任务的办理人;但是这样分配任务的办理人不够灵活,因为项目开发中任
务的办理人不要放置XML文件中。
三、方式二:直接指定办理人
1.流程图中配置任务节点变量
图三 配置任务节点变量
2.测试代码
- package cn.gome.k_personTask;
-
- import java.io.InputStream;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- import org.activiti.engine.ProcessEngine;
- import org.activiti.engine.ProcessEngines;
- import org.activiti.engine.repository.Deployment;
- import org.activiti.engine.runtime.ProcessInstance;
- import org.activiti.engine.task.Task;
- import org.junit.Test;
-
- public class TaskTest {
-
-
- ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
-
-
- @Test
- public void deployementAndStartProcess(){
- InputStream inputStreamBpmn = this.getClass().getResourceAsStream("task.bpmn");
- InputStream inputStreampng = this.getClass().getResourceAsStream("task.png");
-
-
- Deployment deployment = processEngine.getRepositoryService()
- .createDeployment()
- .addInputStream("task.bpmn", inputStreamBpmn)
- .addInputStream("task.png", inputStreampng)
- .name("个人任务演示")
- .deploy();
- System.out.println("部署ID:"+deployment.getId());
-
-
-
-
-
-
-
- Map<String, Object> variables = new HashMap<String, Object>();
- variables.put("userID", "周江霄");
- ProcessInstance pi = processEngine.getRuntimeService()
- .startProcessInstanceByKey("task",variables);
- System.out.println("流程实例ID:"+pi.getId());
- System.out.println("流程定义的ID:"+pi.getProcessDefinitionId());
- }
-
-
- @Test
- public void findPersonalTaskList(){
-
- String assignee = "周江霄";
- List<Task> list = processEngine.getTaskService()
- .createTaskQuery()
- .taskAssignee(assignee)
- .list();
- if(list!=null && list.size()>0){
- for(Task task:list){
- System.out.println("任务ID:"+task.getId());
- System.out.println("任务的办理人:"+task.getAssignee());
- System.out.println("任务名称:"+task.getName());
- System.out.println("任务的创建时间:"+task.getCreateTime());
- System.out.println("流程实例ID:"+task.getProcessInstanceId());
- System.out.println("#######################################");
- }
- }
- }
-
-
- @Test
- public void completeTask(){
-
- String taskId = "5209";
- processEngine.getTaskService()
- .complete(taskId);
- System.out.println("完成任务:"+taskId);
- }
- }
四、方式三:使用类
1.TaskListenerImpl类,用来设置任务的办理人
- package cn.gome.l_personTask;
-
- import org.activiti.engine.delegate.DelegateTask;
- import org.activiti.engine.delegate.TaskListener;
-
- public class TaskListenerImpl implements TaskListener{
-
-
- @Override
- public void notify(DelegateTask delegateTask) {
-
- delegateTask.setAssignee("郭靖");
- }
-
- }
2.流程图中配置任务节点监听
图四 流程图中配置任务节点监听
3.测试代码
- package cn.gome.l_personTask;
-
- import java.io.InputStream;
- import java.util.List;
-
- import org.activiti.engine.ProcessEngine;
- import org.activiti.engine.ProcessEngines;
- import org.activiti.engine.repository.Deployment;
- import org.activiti.engine.runtime.ProcessInstance;
- import org.activiti.engine.task.Task;
- import org.junit.Test;
-
- public class TaskTest {
-
-
- ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
-
-
- @Test
- public void deployementAndStartProcess(){
- InputStream inputStreamBpmn = this.getClass().getResourceAsStream("task.bpmn");
- InputStream inputStreampng = this.getClass().getResourceAsStream("task.png");
-
- Deployment deployment = processEngine.getRepositoryService()
- .createDeployment()
- .addInputStream("task.bpmn", inputStreamBpmn)
- .addInputStream("task.png", inputStreampng)
- .deploy();
- System.out.println("部署ID:"+deployment.getId());
-
- ProcessInstance pi = processEngine.getRuntimeService()
- .startProcessInstanceByKey("task");
- System.out.println("流程实例ID:"+pi.getId());
- System.out.println("流程定义的ID:"+pi.getProcessDefinitionId());
- }
-
-
- @Test
- public void findPersonalTaskList(){
-
- String assignee = "郭靖";
- List<Task> list = processEngine.getTaskService()
- .createTaskQuery()
- .taskAssignee(assignee)
- .list();
- if(list!=null && list.size()>0){
- for(Task task:list){
- System.out.println("任务ID:"+task.getId());
- System.out.println("任务的办理人:"+task.getAssignee());
- System.out.println("任务名称:"+task.getName());
- System.out.println("任务的创建时间:"+task.getCreateTime());
- System.out.println("流程实例ID:"+task.getProcessInstanceId());
- System.out.println("#######################################");
- }
- }
- }
-
-
- @Test
- public void completeTask(){
-
- String taskId = "5408";
- processEngine.getTaskService().complete(taskId);
- System.out.println("完成任务:"+taskId);
- }
-
-
- @Test
- public void setAssignee(){
-
- String userId = "黄蓉";
-
- String taskId = "5408";
- processEngine.getTaskService()
- .setAssignee(taskId, userId);
- }
-
- }
总结: 通过对比,我们发现,分配个人任务的三种方式中,第一种欠灵活,后面两种都还是不错的,可以在项目中灵活的分配个人任务。
0 0