Spring activiti如何實現指定任務處理者
阿新 • • 發佈:2020-11-19
指定委託那些辦理者處理任務節點,也就是隻有此辦理者才有操作此節點的操作許可權
1、直接指定
流程圖配置實現:在流程圖屬性欄設定Assignee屬性值為任務的處理者
流程圖xml檔案配置實現:在流程圖對應的xml檔案指定activiti:assignee屬性值為任務的處理者
<userTask activiti:assignee="yl01" activiti:exclusive="true" id="_3" name="部長"/>
activiti外掛不支援idea2020版本,所以2020版idea可能看不到流程圖屬性欄,可以採用第二種直接修改xml檔案配置方式
示例
package com.yl; import org.activiti.engine.*; import org.activiti.engine.repository.Deployment; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.junit.Test; import java.util.HashMap; import java.util.Map; public class ActivitiTest { //建立工作流引擎 ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine(); //管理流程檔案的物件 RepositoryService repositoryService=processEngine.getRepositoryService(); //管理流程例項的物件 RuntimeService runtimeService=processEngine.getRuntimeService(); //管理任務節點的物件 TaskService taskService=processEngine.getTaskService(); //流程例項id private String processInstanceId; /** * 部署流程檔案 */ @Test public void deployment() { //部署bpmn檔案到資料庫表 Deployment deployment=repositoryService.createDeployment().addClasspathResource("hello.bpmn").deploy(); System.out.println("部署檔案id="+deployment.getId()); } /** * 啟動流程例項 */ @Test public void start(){ //啟動流程例項 ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1"); processInstanceId=processInstance.getId(); System.out.println("流程例項id="+processInstanceId); } /** * 獲取當前任務節點物件及完成此任務節點 */ @Test public void complete(){ //獲取任務節點物件 List<Task> taskList= taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee("yl01").list(); for(Task task:taskList){ System.out.println("待辦事務="+task.getName()); } //完成此任務節點 taskService.complete(task.getId()); } }
2、通過變數指定
流程圖配置實現:在流程圖屬性欄設定Assignee屬性值為任務的處理者,屬性值設定為變數,eg:#{name}
流程圖xml檔案配置實現:在流程圖對應的xml檔案指定activiti:assignee屬性值為任務的處理者
<userTask activiti:assignee="#{name1}" activiti:exclusive="true" id="_3" name="部長"/>
示例
package com.yl; import org.activiti.engine.*; import org.activiti.engine.repository.Deployment; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.junit.Test; import java.util.HashMap; import java.util.Map; public class ActivitiTest { //建立工作流引擎 ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine(); //管理流程檔案的物件 RepositoryService repositoryService=processEngine.getRepositoryService(); //管理流程例項的物件 RuntimeService runtimeService=processEngine.getRuntimeService(); //管理任務節點的物件 TaskService taskService=processEngine.getTaskService(); //流程例項id private String processInstanceId; /** * 部署流程檔案 */ @Test public void deployment() { //部署bpmn檔案到資料庫表 Deployment deployment=repositoryService.createDeployment().addClasspathResource("hello.bpmn").deploy(); System.out.println("部署檔案id="+deployment.getId()); } /** * 啟動流程例項 */ @Test public void start(){ //儲存任務處理者 Map<String,Object> variables=new HashMap<>(); variables.put("name1","yl01"); //啟動流程例項並指定任務處理物件 ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1",variables); processInstanceId=processInstance.getId(); System.out.println("流程例項id="+processInstanceId); } /** * 獲取當前任務節點物件及完成此任務節點 */ @Test public void complete(){ //獲取任務節點物件 Task task= taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee("yl01").singleResult(); System.out.println("待辦事務="+task.getName()); //完成此任務節點 taskService.complete(task.getId()); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。