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("李四"); // 指定辦理人
}
}
這邊指定下 定義的類
然後走完流程即可。