Spring activiti如何实现指定任务处理者
程序员文章站
2022-08-27 13:07:19
指定委托那些办理者处理任务节点,也就是只有此办理者才有操作此节点的操作权限1、直接指定流程图配置实现:在流程图属性栏设置assignee属性值为任务的处理者流程图xml文件配置实现:在流程图对应的xm...
指定委托那些办理者处理任务节点,也就是只有此办理者才有操作此节点的操作权限
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()); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。