小程序三方平台开发: 解析小程序开发的未来趋势和机遇
500
2023-03-10
Spring activiti如何实现指定任务处理者
指定委托那些办理者处理任务节点,也就是只有此办理者才有操作此节点的操作权限
1、直接指定
流程图配置实现:在流程图属性栏设置Assignee属性值为任务的处理者
流程图xml文件配置实现:在流程图对应的xml文件指定activiti:assignee属性值为任务的处理者
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
for(Task task:taskList){
System.out.println("待办事务="+task.getName());
}
//完成此任务节点
taskService.complete(task.getId());
}
}
2、通过变量指定
流程图配置实现:在流程图属性栏设置Assignee属性值为任务的处理者,属性值设置为变量,eg:#{name}
流程图xml文件配置实现:在流程图对应的xml文件指定activiti:assignee属性值为任务的处理者
示例
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
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());
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~