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、总结:
—————————————————–
(java 架构师全套教程,共760G, 让你从零到架构师,每月轻松拿3万)
请先拍 购买地址, 下载请用百度盘
目录如下:
01.高级架构师四十二个阶段高
02.Java高级系统培训架构课程148课时
03.Java高级互联网架构师课程
04.Java互联网架构Netty、Nio、Mina等-视频教程
05.Java高级架构设计2016整理-视频教程
06.架构师基础、高级片
07.Java架构师必修linux运维系列课程
08.Java高级系统培训架构课程116课时
(送:hadoop系列教程,java设计模式与数据结构, Spring Cloud微服务, SpringBoot入门)
01高级架构师四十二个阶段高内容:
—————————————————–