jbpm中组任务的指定

来源:互联网 发布:mysql 删除某个字段 编辑:程序博客网 时间:2024/06/04 19:40
组任务的分配:
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中查看相应的信息

原创粉丝点击