Jbpm 分派任务的几种方式
来源:互联网 发布:软件自动化研究生 编辑:程序博客网 时间:2024/06/06 02:00
1、在图里直接指定:assigne=”王经理”
2、设定变量:assigne=${manager}
给变量设值
Map<String, Object> variables = new HashMap<String, Object>(); variables.put("manager", "王经理"); ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("task",variables);
3、使用AssignmentHandlerImpl
public class AssignmentHandlerImpl implements AssignmentHandler{ private static final long serialVersionUID = 1L; //计算此任务的办理人,并分配任务 @Override public void assign(Assignable assignable, OpenExecution execution) throws Exception { System.out.println("AssignmentHandlerImpl============"); //计算办理人 String userId = "李经理"; //分派任务 assignable.setAssignee(userId); }}
然后在流程文件.xml
<?xml version="1.0" encoding="UTF-8"?><process name="task" xmlns="http://jbpm.org/4.4/jpdl"> <start g="38,16,48,48" name="start1"> <transition name="to 审批2" to="审批2" g="-52,-22"/> </start> <task assignee="${manager}" g="16,180,92,52" name="审批"> <transition g="-50,-22" name="to end1" to="end1"/> </task> <task name="审批2" g="16,96,92,52"> **<assignment-handler class="com.itcast.h_task.AssignmentHandlerImpl"></assignment-handler>** <transition name="to 审批" to="审批" g="-45,-22"/> </task> <end g="38,264,48,48" name="end1"/></process>
4、把原来指派给李经理的,又重新分配给王经理:
/** * 任务指派 * @author Administrator * */public class ProcessDecisition { private static ProcessEngine processEngine = Configuration.getProcessEngine(); /*{ //从src下开始查找 this.getClass().getResourceAsStream("/test.txt"); //从当前类的包中 this.getClass().getResourceAsStream("test.txt"); //从src下开始查找 this.getClass().getClassLoader().getResourceAsStream("test.txt"); } */ @Test public void testProcess() throws Exception { //部署 String deployId = processEngine.getRepositoryService() .createDeployment() .addResourceFromClasspath("task/task.jpdl.xml") .addResourceFromClasspath("task/task.png") .deploy(); System.out.println("部署完毕:deployId=="+deployId); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("manager", "王经理"); ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("task",variables); System.out.println("启动完毕:processInstanceId=="+pi.getId()); System.out.println("正在执行的活动名称=="+pi.findActiveActivityNames()); } /** * 分配任务, 把李经理的任务给王经理 * @throws Exception */ @Test public void testAssignTask() throws Exception { String taskId = "330010"; String userId = "王经理"; processEngine.getTaskService().assignTask(taskId, userId); }}
5、组任务:
/** * 组任务指派 * @author Administrator * */public class ProcessDecisition { private static ProcessEngine processEngine = Configuration.getProcessEngine(); /*{ //从src下开始查找 this.getClass().getResourceAsStream("/test.txt"); //从当前类的包中 this.getClass().getResourceAsStream("test.txt"); //从src下开始查找 this.getClass().getClassLoader().getResourceAsStream("test.txt"); } */ @Test public void testProcess() throws Exception { //部署 String deployId = processEngine.getRepositoryService() .createDeployment() .addResourceFromClasspath("task/group.jpdl.xml") .addResourceFromClasspath("task/group.png") .deploy(); System.out.println("部署完毕:deployId=="+deployId); Map<String, Object> variables = new HashMap<String, Object>(); variables.put("manager", "王经理"); ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("group",variables); System.out.println("启动完毕:processInstanceId=="+pi.getId()); System.out.println("正在执行的活动名称=="+pi.findActiveActivityNames()); } //查询个人任务列表 @Test public void findGroupTaskList() throws Exception { String userId = "陈工"; //List<Task> tasks = processEngine.getTaskService().findGroupTasks(userId); List<Task> tasks = processEngine.getTaskService() .createTaskQuery() .candidate(userId) .page(0, 100) .list(); for(Task task : tasks){ System.out.println("任务信息:taskId=="+task.getId() + ", Assignee=="+task.getAssignee() + ",name=="+task.getName() + ",createTime=="+task.getCreateTime() + ",ExecutionId=="+task.getExecutionId() ); } } //查询个人任务列表 @Test public void findPersonalTaskList() throws Exception { String userId = "陈工"; //List<Task> tasks = processEngine.getTaskService().findPersonalTasks(userId); List<Task> tasks = processEngine.getTaskService() .createTaskQuery() .assignee(userId) //.page(0, 100) .list(); //.findPersonalTasks(userId); for(Task task : tasks){ System.out.println("任务信息:taskId=="+task.getId() + ", Assignee=="+task.getAssignee() + ",name=="+task.getName() + ",createTime=="+task.getCreateTime() + ",ExecutionId=="+task.getExecutionId() ); } } //拾取任务,,拾取之后,其它工程师就看不到 @Test public void testTakeTask() throws Exception { String taskId = "340010"; String userId = "陈工"; processEngine.getTaskService().takeTask(taskId, userId); }}
6、组任务使用变量:
Map<String, Object> variables = new HashMap<String, Object>(); //variables.put("manager", "王经理"); variables.put("userIds", "a陈工,a李工,a旷工,a苏工,a曾工"); ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("group",variables);
7、组任务使用AssignmentHandlerImpl
public class AssignmentHandlerImpl implements AssignmentHandler{ private static final long serialVersionUID = 1L; //计算此任务的办理人,并分配任务 @Override public void assign(Assignable assignable, OpenExecution execution) throws Exception { System.out.println("AssignmentHandlerImpl============"); //计算办理人 //String userId = "李经理"; //分派任务 //assignable.setAssignee(userId); assignable.setAssignee("aa"); assignable.setAssignee("bb"); assignable.setAssignee("cc"); assignable.setAssignee("dd"); }}
配置文件
<process name="group" xmlns="http://jbpm.org/4.4/jpdl"> <start g="38,16,48,48" name="start1"> <transition name="to 维修2" to="维修2" g="-52,-22"/> </start> <!-- <task candidate-users="陈工,李工,钱工,牛工" g="16,180,92,52" name="维修"> <assignment-handler class="com.itcast.h_task.AssignmentHandlerImpl"></assignment-handler> <transition g="-50,-22" name="to end1" to="end1"/> </task> --> <task g="16,180,92,52" name="维修"> <assignment-handler class="com.itcast.h_task.AssignmentHandlerImpl"></assignment-handler> <transition g="-50,-22" name="to end1" to="end1"/> </task> <end g="38,264,48,48" name="end1"/> <task name="维修2" g="16,96,92,52" candidate-users="${userIds}"> <transition name="to 维修" to="维修" g="-45,-22"/> </task></process>
8、总结:
0 0
- Jbpm 分派任务的几种方式
- JBPM的任务分派机制
- JBPM的任务分派机制
- JBPM的任务分派机制
- JBPM的任务分派机制
- JBPM的任务分派机制
- JBPM的任务分派机制
- JBPM的任务分派机制
- JBPM的任务分派机制
- JBPM中任务分配的几种方式
- jBPM中任务分派和组织建模的分析
- 关于任务的分派
- nginx的upstream目前支持的几种分配(调度,分派)方式
- nginx的upstream目前支持的几种分配(调度,分派)方式
- Nginx的upstream目前支持的几种分配(调度,分派)方式
- jbpm中个人任务的指定方式
- 任务并行的几种方式
- java任务调度的几种方式
- hdu5391
- 从P1到P7——我在淘宝这7年
- linux下添加定时任务 详解示例
- 找出一组数据的不同数据
- 简单聊一下makefile中的 =, :=, ?=和+=
- Jbpm 分派任务的几种方式
- 将数据存储到SD卡上
- Java泛型与反射
- poj 2531 Network Saboteur
- 360加固(apk二次签名)
- Android Menu 单选设置
- 给开发者的10个忠告
- HTTP响应
- 161106