Spring activiti如何实现指定任务处理者

网友投稿 430 2023-03-10

Spring activiti如何实现指定任务处理者

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 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属性值为任务的处理者

示例

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=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());

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序调用其他小程序插件(微信小程序调用其他小程序)
下一篇:小程序技术标准有哪些方面(小程序的技术)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~