一、流程图
二、代码实现(主要是针对方式2),方式3)可以参考个人任务的指定)
package com.njupt.task; import java.io.InputStream; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jbpm.api.Configuration; import org.jbpm.api.ProcessEngine; import org.jbpm.api.ProcessInstance; import org.jbpm.api.task.Task; 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,启动流程实例 Map<String, Object> variables = new HashMap<String, Object>(); variables.put("userIds", "经理AAA,经理BBB,经理CCC"); ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("test", variables); } // 查询我的任务列表 @Test public void testFindMyTask() throws Exception { String userId = "经理C"; // >> 查询个人任务 // List<Task> taskList = processEngine.getTaskService().findPersonalTasks(userId); // List<Task> taskList = processEngine.getTaskService()// // .createTaskQuery()// // .assignee(userId)// 指定办理人这个条件 // .list(); // 查询列表 // >> 查询组任务 List<Task> taskList = processEngine.getTaskService().findGroupTasks(userId); // List<Task> taskList = processEngine.getTaskService()// // .createTaskQuery()// // .candidate(userId)// 指定候选人这个条件 // .list(); // 查询列表 // 显示 System.out.println("=========== 【" + userId + "】的任务列表 =========="); for (Task task : taskList) { System.out.println("id=" + task.getId()// 任务的ID + ", name=" + task.getName()// 任务的名称 + ", assignee=" + task.getAssignee()// 任务办理人 + ", createTime=" + task.getCreateTime()// 任务的创建时间 + ", executionId=" + task.getExecutionId()); // 所属的执行对象的ID } } // 拾取任务 @Test public void testTakeTask() throws Exception { String taskId = "300008"; String userId = "经理C"; processEngine.getTaskService().takeTask(taskId, userId); } // 重新分配任务(重新指定办理人) @Test public void testAssignTask() throws Exception { String taskId = "300008"; // String userId = "经理A"; String userId = null; processEngine.getTaskService().assignTask(taskId, userId); } }