Spring activiti如何實(shí)現(xiàn)指定任務(wù)處理者
指定委托那些辦理者處理任務(wù)節(jié)點(diǎn),也就是只有此辦理者才有操作此節(jié)點(diǎn)的操作權(quán)限
1、直接指定
流程圖配置實(shí)現(xiàn):在流程圖屬性欄設(shè)置Assignee屬性值為任務(wù)的處理者
流程圖xml文件配置實(shí)現(xiàn):在流程圖對(duì)應(yīng)的xml文件指定activiti:assignee屬性值為任務(wù)的處理者
<userTask activiti:assignee="yl01" activiti:exclusive="true" id="_3" name="部長(zhǎng)"/>
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(); //管理流程文件的對(duì)象 RepositoryService repositoryService=processEngine.getRepositoryService(); //管理流程實(shí)例的對(duì)象 RuntimeService runtimeService=processEngine.getRuntimeService(); //管理任務(wù)節(jié)點(diǎn)的對(duì)象 TaskService taskService=processEngine.getTaskService(); //流程實(shí)例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()); } /** * 啟動(dòng)流程實(shí)例 */ @Test public void start(){ //啟動(dòng)流程實(shí)例 ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1"); processInstanceId=processInstance.getId(); System.out.println("流程實(shí)例id="+processInstanceId); } /** * 獲取當(dāng)前任務(wù)節(jié)點(diǎn)對(duì)象及完成此任務(wù)節(jié)點(diǎn) */ @Test public void complete(){ //獲取任務(wù)節(jié)點(diǎn)對(duì)象 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、通過變量指定
流程圖配置實(shí)現(xiàn):在流程圖屬性欄設(shè)置Assignee屬性值為任務(wù)的處理者,屬性值設(shè)置為變量,eg:#{name}
流程圖xml文件配置實(shí)現(xiàn):在流程圖對(duì)應(yīng)的xml文件指定activiti:assignee屬性值為任務(wù)的處理者
<userTask activiti:assignee="#{name1}" activiti:exclusive="true" id="_3" name="部長(zhǎng)"/>
示例
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(); //管理流程文件的對(duì)象 RepositoryService repositoryService=processEngine.getRepositoryService(); //管理流程實(shí)例的對(duì)象 RuntimeService runtimeService=processEngine.getRuntimeService(); //管理任務(wù)節(jié)點(diǎn)的對(duì)象 TaskService taskService=processEngine.getTaskService(); //流程實(shí)例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()); } /** * 啟動(dòng)流程實(shí)例 */ @Test public void start(){ //存儲(chǔ)任務(wù)處理者 Map<String,Object> variables=new HashMap<>(); variables.put("name1","yl01"); //啟動(dòng)流程實(shí)例并指定任務(wù)處理對(duì)象 ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1",variables); processInstanceId=processInstance.getId(); System.out.println("流程實(shí)例id="+processInstanceId); } /** * 獲取當(dāng)前任務(wù)節(jié)點(diǎn)對(duì)象及完成此任務(wù)節(jié)點(diǎn) */ @Test public void complete(){ //獲取任務(wù)節(jié)點(diǎn)對(duì)象 Task task= taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee("yl01").singleResult(); System.out.println("待辦事務(wù)="+task.getName()); //完成此任務(wù)節(jié)點(diǎn) taskService.complete(task.getId()); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- IDEA安裝Activiti插件并解決亂碼問題(推薦)
- Activiti如何動(dòng)態(tài)獲取流程圖過程詳解
- Activiti如何啟動(dòng)流程并使流程前進(jìn)
- Activiti流程文件部署過程解析
- Activiti流程引擎對(duì)象及配置原理解析
- Activiti explorer.war示例工程使用過程圖解
- SpringBoot整合Activiti7的實(shí)現(xiàn)代碼
- SpringBoot2整合activiti6環(huán)境搭建過程解析
- spring boot activiti工作流的搭建與簡(jiǎn)單使用
- Spring Boot中使用Activiti的方法教程(二)
- Spring Boot中使用activiti的方法教程(一)
相關(guān)文章
Java實(shí)現(xiàn)的簡(jiǎn)單數(shù)字處理類及用法示例
這篇文章主要介紹了Java實(shí)現(xiàn)的簡(jiǎn)單數(shù)字處理類及用法,涉及java數(shù)字運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-01-01Java調(diào)用第三方接口示范的實(shí)現(xiàn)
這篇文章主要介紹了Java調(diào)用第三方接口示范的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Java中Json字符串直接轉(zhuǎn)換為對(duì)象的方法(包括多層List集合)
下面小編就為大家?guī)硪黄狫ava中Json字符串直接轉(zhuǎn)換為對(duì)象的方法(包括多層List集合)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08spring-boot報(bào)錯(cuò)java: 程序包javax.servlet.http不存在
當(dāng)springboot項(xiàng)目從2.7.x的升級(jí)到3.0.x的時(shí)候,會(huì)遇到一個(gè)問題java: 程序包javax.servlet.http不存在,下面就來具體介紹一下,感興趣的可以了解一下2024-08-08解決Lombok使用@Builder無法build父類屬性的問題
這篇文章主要介紹了解決Lombok使用@Builder無法build父類屬性的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09SpringBoot基于HttpMessageConverter實(shí)現(xiàn)全局日期格式化
這篇文章主要介紹了SpringBoot基于HttpMessageConverter實(shí)現(xiàn)全局日期格式化,使用Jackson消息轉(zhuǎn)換器,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-12-12springBoot 插件工具熱部署 Devtools的步驟詳解
這篇文章主要介紹了springBoot 插件工具 熱部署 Devtools,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10