1.源码地址:https://github.com/heidaodageshiwo/springbootactivity
方式一 直接流程图配置中写死,
直接在流程图中 Main config Assignee 中写死具体分配的任务执行人;
查看张三任务:
完成任务:
没有数据了:
@Autowired
RepositoryService repositoryService;
@Autowired
RuntimeService runtimeService;
@Autowired
TaskService taskService;
// Activiti之个人任务分配
@RequestMapping("/Assignee_deploy")
public String deploy(){
Deployment deployment=repositoryService.createDeployment()
.addClasspathResource("StudentLeaveProcess/StudentLeaveProcess5/gerenrenwu1.bpmn") // 加载资源文件
.name("学生请假流程6") // 流程名称
.deploy();
System.out.println("流程部署ID:"+deployment.getId());
System.out.println("流程部署Name:"+deployment.getName());
return "Assignee_deploy";
}
@RequestMapping("/Assignee_start")
public String start() {
Map<String,Object> variables=new HashMap<String,Object>();
variables.put("userId", "张三");
ProcessInstance processInstance=runtimeService.
startProcessInstanceByKey("gerenrenwu1",variables);
System.out.println("流程实例ID:"+processInstance.getId());
System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId());
return "Assignee_start";
}
/**
* 查看任务
*/
@RequestMapping("/Assignee_findTask")
public String findTask(){
List<Task> taskList=taskService // 任务相关Service
.createTaskQuery() // 创建任务查询
.taskAssignee("张三") // 指定某个人
.list();
for(Task task:taskList){
System.out.println("任务ID:"+task.getId());
System.out.println("任务名称:"+task.getName());
System.out.println("任务创建时间:"+task.getCreateTime());
System.out.println("任务委派人:"+task.getAssignee());
System.out.println("流程实例ID:"+task.getProcessInstanceId());
}
return "Assignee_findTask";
}
/**
* 完成任务
*/
@RequestMapping("/Assignee_completeTask")
public String completeTask(){
taskService // 任务相关Service
.complete("92511");
return "Assignee_completeTask";
}
方式二 使用流程变量
我们设置流程变量 Assignee ${userid}
我们在启动流程的时候设置流程变量即可;
部署:
启动设置变量:
查看任务:
完成任务:
@Autowired
RepositoryService repositoryService;
@Autowired
RuntimeService runtimeService;
@Autowired
TaskService taskService;
// Activiti之个人任务分配
@RequestMapping("/Assignee_deploy12")
public String deploy(){
Deployment deployment=repositoryService.createDeployment()
.addClasspathResource("StudentLeaveProcess/StudentLeaveProcess5/gererenwu2.bpmn") // 加载资源文件
.name("学生请假流程6") // 流程名称
.deploy();
System.out.println("流程部署ID:"+deployment.getId());
System.out.println("流程部署Name:"+deployment.getName());
return "Assignee_deploy12";
}
@RequestMapping("/Assignee_start12")
public String start() {
Map<String,Object> variables=new HashMap<String,Object>();
variables.put("userid", "张三");
ProcessInstance processInstance=runtimeService.
startProcessInstanceByKey("gererenwu2",variables);
System.out.println("流程实例ID:"+processInstance.getId());
System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId());
return "Assignee_start12";
}
/**
* 查看任务
*/
@RequestMapping("/Assignee_findTask12")
public String findTask(){
List<Task> taskList=taskService // 任务相关Service
.createTaskQuery() // 创建任务查询
.taskAssignee("张三") // 指定某个人
.list();
for(Task task:taskList){
System.out.println("任务ID:"+task.getId());
System.out.println("任务名称:"+task.getName());
System.out.println("任务创建时间:"+task.getCreateTime());
System.out.println("任务委派人:"+task.getAssignee());
System.out.println("流程实例ID:"+task.getProcessInstanceId());
}
return "Assignee_findTask12";
}
/**
* 完成任务
*/
@RequestMapping("/Assignee_completeTask12")
public String completeTask(){
taskService // 任务相关Service
.complete("100007");
return "Assignee_completeTask12";
}
方式三 TaskListener监听实现
我们定义一个监听类 MyTaskListener 实现 TaskListener接口:
package com.zhangqiang.activity.StudentLeaveProcess.StudentLeaveProcess5;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener;
public class MyTaskListener implements TaskListener {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void notify(DelegateTask delegateTask) {
// TODO Auto-generated method stub
delegateTask.setAssignee("李四"); // 指定办理人
}
}
这边指定下 定义的类
然后走完流程即可。