Spring activiti如何实现指定任务处理者
作者:Y_wee 时间:2023-04-08 05:53:16
指定委托那些办理者处理任务节点,也就是只有此办理者才有操作此节点的操作权限
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());
}
}
来源:https://www.cnblogs.com/Y-wee/p/13920019.html
标签:activiti,指定,任务,处理者
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java二维数组查找功能代码实现
2023-01-04 19:47:17
Android实现ViewPager无限循环效果(一)
2022-08-02 18:58:34
一文详解Java中的Stream的汇总和分组操作
2021-12-24 17:32:54
![](https://img.aspxhome.com/file/2023/3/61313_0s.png)
SpringBoot中使用多线程的方法示例
2021-05-24 19:56:04
![](https://img.aspxhome.com/file/2023/0/71690_0s.png)
Android中使用自定义ViewGroup的总结
2021-12-18 04:25:39
![](https://img.aspxhome.com/file/2023/0/116050_0s.jpg)
Spring @Bean注解的使用场景与案例实现
2023-11-20 04:44:22
Java String转换时为null的解决方法
2022-08-25 08:16:00
C#实现的Win32控制台线程计时器功能示例
2022-12-19 20:29:20
ExpandableListView实现二级列表购物车
2022-07-27 05:54:13
![](https://img.aspxhome.com/file/2023/4/90154_0s.jpg)
Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例
2022-08-19 20:58:06
![](https://img.aspxhome.com/file/2023/3/76323_0s.png)
你真的了解Java的多线程方法吗
2022-02-01 22:55:40
![](https://img.aspxhome.com/file/2023/4/69344_0s.png)
java解决动态配置字段需求问题
2022-08-03 17:38:30
![](https://img.aspxhome.com/file/2023/1/80211_0s.png)
Java实现简单猜数字小游戏
2023-11-28 08:10:07
![](https://img.aspxhome.com/file/2023/2/59052_0s.jpg)
android view转Bitmap生成截图的方法
2022-11-07 13:41:53
IDEA集成JProfiler11可视化工具的详细流程(安装、集成、测试)
2021-12-12 04:05:35
![](https://img.aspxhome.com/file/2023/0/83140_0s.jpg)
java实现ftp上传 如何创建文件夹
2021-06-10 10:49:17
Android动画之逐帧动画(Frame Animation)实例详解
2023-02-27 06:12:56
二叉搜索树实例练习
2022-09-20 22:03:06
关于Java中修饰符的总结(fina除外)
2023-11-22 23:15:57
C# 鼠标穿透窗体功能的实现方法
2021-09-26 04:24:38