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

 更新时间:2020年11月18日 10:51:16   作者:Y_wee  
这篇文章主要介绍了Spring activiti如何实现指定任务处理者,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

指定委托那些办理者处理任务节点,也就是只有此办理者才有操作此节点的操作权限

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • MyBatis-Plus实现连表查询的方法实例

    MyBatis-Plus实现连表查询的方法实例

    这篇文章主要给大家介绍了关于MyBatis-Plus实现连表查询的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • 基于Process#waitFor()阻塞问题的解决

    基于Process#waitFor()阻塞问题的解决

    这篇文章主要介绍了Process#waitFor()阻塞问题的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 浅谈java中异步多线程超时导致的服务异常

    浅谈java中异步多线程超时导致的服务异常

    下面小编就为大家带来一篇浅谈java中异步多线程超时导致的服务异常。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Java数据结构及算法实例:选择排序 Selection Sort

    Java数据结构及算法实例:选择排序 Selection Sort

    这篇文章主要介绍了Java数据结构及算法实例:选择排序 Selection Sort,本文直接给出实现代码,代码中包含详细注释,需要的朋友可以参考下
    2015-06-06
  • Java中DecimalFormat用法及符号含义

    Java中DecimalFormat用法及符号含义

    DecimalFormat是NumberFormat的一个具体子类,用于格式化十进制数字。这篇文章介绍了DecimalFormat的用法及符号含义,需要的朋友可以收藏下,方便下次浏览观看
    2021-12-12
  • springboot集成ES实现磁盘文件全文检索的示例代码

    springboot集成ES实现磁盘文件全文检索的示例代码

    这篇文章主要介绍了springboot集成ES实现磁盘文件全文检索的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • spring根据controller中接收请求参数不同走不同service的实现方法

    spring根据controller中接收请求参数不同走不同service的实现方法

    这篇文章主要给大家介绍了关于spring实现根据controller中接收请求参数不同走不同service的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2018-11-11
  • jdk11 jdk17多版本共存切换方式

    jdk11 jdk17多版本共存切换方式

    这篇文章主要介绍了jdk11 jdk17多版本共存切换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • springboot如何通过SSH连接远程服务器

    springboot如何通过SSH连接远程服务器

    这篇文章主要介绍了springboot如何通过SSH连接远程服务器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • SpringBoot读取自定义配置文件方式(properties,yaml)

    SpringBoot读取自定义配置文件方式(properties,yaml)

    这篇文章主要介绍了SpringBoot读取自定义配置文件方式(properties,yaml),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07

最新评论