Spring activiti如何實現(xiàn)指定任務(wù)處理者
指定委托那些辦理者處理任務(wù)節(jié)點(diǎn),也就是只有此辦理者才有操作此節(jié)點(diǎn)的操作權(quán)限
1、直接指定
流程圖配置實現(xiàn):在流程圖屬性欄設(shè)置Assignee屬性值為任務(wù)的處理者
流程圖xml文件配置實現(xiàn):在流程圖對應(yīng)的xml文件指定activiti:assignee屬性值為任務(wù)的處理者
<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 {
//創(chuàng)建工作流引擎
ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
//管理流程文件的對象
RepositoryService repositoryService=processEngine.getRepositoryService();
//管理流程實例的對象
RuntimeService runtimeService=processEngine.getRuntimeService();
//管理任務(wù)節(jié)點(diǎn)的對象
TaskService taskService=processEngine.getTaskService();
//流程實例id
private String processInstanceId;
/**
* 部署流程文件
*/
@Test
public void deployment() {
//部署bpmn文件到數(shù)據(jù)庫表
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);
}
/**
* 獲取當(dāng)前任務(wù)節(jié)點(diǎn)對象及完成此任務(wù)節(jié)點(diǎn)
*/
@Test
public void complete(){
//獲取任務(wù)節(jié)點(diǎn)對象
List<Task> taskList= taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee("yl01").list();
for(Task task:taskList){
System.out.println("待辦事務(wù)="+task.getName());
}
//完成此任務(wù)節(jié)點(diǎn)
taskService.complete(task.getId());
}
}
2、通過變量指定
流程圖配置實現(xiàn):在流程圖屬性欄設(shè)置Assignee屬性值為任務(wù)的處理者,屬性值設(shè)置為變量,eg:#{name}
流程圖xml文件配置實現(xiàn):在流程圖對應(yīng)的xml文件指定activiti:assignee屬性值為任務(wù)的處理者
<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 {
//創(chuàng)建工作流引擎
ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
//管理流程文件的對象
RepositoryService repositoryService=processEngine.getRepositoryService();
//管理流程實例的對象
RuntimeService runtimeService=processEngine.getRuntimeService();
//管理任務(wù)節(jié)點(diǎn)的對象
TaskService taskService=processEngine.getTaskService();
//流程實例id
private String processInstanceId;
/**
* 部署流程文件
*/
@Test
public void deployment() {
//部署bpmn文件到數(shù)據(jù)庫表
Deployment deployment=repositoryService.createDeployment().addClasspathResource("hello.bpmn").deploy();
System.out.println("部署文件id="+deployment.getId());
}
/**
* 啟動流程實例
*/
@Test
public void start(){
//存儲任務(wù)處理者
Map<String,Object> variables=new HashMap<>();
variables.put("name1","yl01");
//啟動流程實例并指定任務(wù)處理對象
ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1",variables);
processInstanceId=processInstance.getId();
System.out.println("流程實例id="+processInstanceId);
}
/**
* 獲取當(dāng)前任務(wù)節(jié)點(diǎn)對象及完成此任務(wù)節(jié)點(diǎn)
*/
@Test
public void complete(){
//獲取任務(wù)節(jié)點(diǎn)對象
Task task= taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee("yl01").singleResult();
System.out.println("待辦事務(wù)="+task.getName());
//完成此任務(wù)節(jié)點(diǎn)
taskService.complete(task.getId());
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- IDEA安裝Activiti插件并解決亂碼問題(推薦)
- Activiti如何動態(tài)獲取流程圖過程詳解
- Activiti如何啟動流程并使流程前進(jìn)
- Activiti流程文件部署過程解析
- Activiti流程引擎對象及配置原理解析
- Activiti explorer.war示例工程使用過程圖解
- SpringBoot整合Activiti7的實現(xiàn)代碼
- SpringBoot2整合activiti6環(huán)境搭建過程解析
- spring boot activiti工作流的搭建與簡單使用
- Spring Boot中使用Activiti的方法教程(二)
- Spring Boot中使用activiti的方法教程(一)
相關(guān)文章
淺談java中異步多線程超時導(dǎo)致的服務(wù)異常
下面小編就為大家?guī)硪黄獪\談java中異步多線程超時導(dǎo)致的服務(wù)異常。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
Java數(shù)據(jù)結(jié)構(gòu)及算法實例:選擇排序 Selection Sort
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實例:選擇排序 Selection Sort,本文直接給出實現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-06-06
springboot集成ES實現(xiàn)磁盤文件全文檢索的示例代碼
這篇文章主要介紹了springboot集成ES實現(xiàn)磁盤文件全文檢索的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
spring根據(jù)controller中接收請求參數(shù)不同走不同service的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于spring實現(xiàn)根據(jù)controller中接收請求參數(shù)不同走不同service的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2018-11-11
springboot如何通過SSH連接遠(yuǎn)程服務(wù)器
這篇文章主要介紹了springboot如何通過SSH連接遠(yuǎn)程服務(wù)器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot讀取自定義配置文件方式(properties,yaml)
這篇文章主要介紹了SpringBoot讀取自定義配置文件方式(properties,yaml),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

