組任務的分配:
1,直接指定:candidate-users="經理A,經理B,經理C"
2,使用流程變數:
代碼:variables.put("userIds", "經理AAA,經理BBB,經理CCC");
定義:candidate-users="#{userIds}"
3,使用AssignmentHandler,寫代碼:
assignable.addCandidateUser("經理AA");
assignable.addCandidateUser("經理BB");
assignable.addCandidateUser("經理CC");
一、流程圖
二、代碼實現(主要是針對方式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();@Testpublic 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);}// 查詢我的工作列表@Testpublic 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}}// 拾取任務@Testpublic void testTakeTask() throws Exception {String taskId = "300008";String userId = "經理C";processEngine.getTaskService().takeTask(taskId, userId);}// 重新分配任務(重新指定辦理人)@Testpublic void testAssignTask() throws Exception {String taskId = "300008";// String userId = "經理A";String userId = null;processEngine.getTaskService().assignTask(taskId, userId);}}
三、可以在_participation中查看相應的資訊