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

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

(0)

相关推荐

  • Activiti流程文件部署过程解析

    用bpmn规范定义好一个流程得到流程定义文件后,需要把该文件部署到activiti的数据库后,这个流程才可以使用. activiti中和流程定义相关的操作都需要使用RepositoryService这个服务组件来进行. activiti中所有的服务组件都需要通过流程引擎对象来获取 一.RepositoryService服务组件 这个组件中提供了一系列管理流程定义和流程部署的api,我们可以使用这个组件中的api来部署流程 1.1 RepositoryService实例对象的获取 使用流程引擎对象

  • SpringBoot2整合activiti6环境搭建过程解析

    这篇文章主要介绍了SpringBoot2整合activiti6环境搭建过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </d

  • SpringBoot整合Activiti7的实现代码

    Activiti7发布正式版之后,它与SpringBoot2.x已经完全支持整合开发.我们可以将Activiti7与SpringBoot整合开发的坐标引入到工程中,从而达到SpringBoot支持Activti7整合. 1.使用IDEA创建SpringBoot项目 在工程的pom.xml文件中引入相关的依赖,具体依赖如下所示 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht

  • IDEA安装Activiti插件并解决乱码问题

    一:通过IDEA直接安装插件 1:打开IDEA,File->Settings->Plugins:搜索actiBPM,点击Installed,安装成功重启IDEA即可:如下图: 2:重启IDEA之后,即可看到可以创建bpmn文件了 二:通过从官网下载jar包安装插件 1:有些版本的IDEA,可能从Plugins里搜索actiBPM,找不到结果,如下图: 2:需要从IDEA官网下载actiBPM.jar包,IDEA官网:https://plugins.jetbrains.com/,官网搜索acti

  • Activiti如何启动流程并使流程前进

    一.流程和任务的关系 以下是一个简单的请假流程图,其中有一个开始事件,两个用户任务,一个结束事件. 启动流程后,activiti会自动创建第一个流程节点的用户任务,然后我们完成第一个用户任务流程就会前进到下一个流程节点,创建第二个节点的流程任务并删除第一个流程任务. 二.开启流程 activiti提供了一个RuntimeService服务组件来在流程运行时对流程实例进行管理与控制.开启流程就需要使用其中的api 2.1根据流程定义key开启流程 上一篇博客中说道了一个流程部署成功后,会在部署信息

  • Activiti explorer.war示例工程使用过程图解

    工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档.信息或者任务. activiti官方提供了一个示例工程activiti-explorer.war,运行这个工程可以体验activiti的基本功能,了解工作流的基本使用. 本文中使用的是activiti-5.22.0的官方包, 下载地址 一.搭建开发环境 要运行示例工程,需要安装jdk8和tomcat.其中jdk需要jdk8或以上,tomcat我使用的是tomcat8,使用tomcat7时启动会

  • Activiti流程引擎对象及配置原理解析

    流程引擎对象和其配置对象都是activiti的核心对象 一.activiti的简单使用流程 activiti在工作时,一般有以下几个步骤: 创建一个流程引擎配置对象ProcessEngineConfiguration对流程引擎进行配置 通过流程引擎配置对象来获取流程引擎对象ProcessEngine 通过流程引擎对象来部署流程图 启动流程 二.流程引擎配置对象ProcessEngineConfiguration的介绍 activiti用ProcessEngineConfiguration对象来配

  • Activiti如何动态获取流程图过程详解

    本文中使用的activiti版本是5.22.0 一.绘图原理 activiti中提供了一个可以用来绘制流程图的类DefaultProcessDiagramGenerator,这个类在5.22.0及以上的版本中 是以一个单独jar包的方式提供的,所以还需要引入相应的依赖. <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-image-generator</artifactI

  • Spring Boot中使用Activiti的方法教程(二)

    前言 前面一节我们已经了解了Activiti的基础概念,包括流程定义的用语和它的API功能,已经如何入手Activiti,在这一节我们将结合代码具体学习使用.小图是我们需要完成的请假流程图: 正如我们在图中看到的,这是一个非常简单的流程:员工提出休假请求,提供休假天数和开始日期.请求发送给经理.他们可以批准/拒绝该请求. 如果获得批准,则会定义一个服务任务serviceTask来发送确认电子邮件.如果被拒绝,员工可以选择修改并重新发送请求,也可以不执行任何操作. 此流程的BPMN 2.0定义文件

  • spring boot activiti工作流的搭建与简单使用

    前言 最近一直研究springboot,根据工作需求,工作流需要作为一个单独的微服务工程来提供给其他服务调用,现在简单的写下工作流(使用的activiti)微服务的搭建与简单使用 jdk:1.8 数据库:mysql  5.7 IDE:eclipse springboot:1.5.8 activiti:6.0.0 1.新建空白的maven微服务架构 新建maven项目的流程不在阐述,这里添加上activiti.myslq连接的依赖,只贴主要代码 pox.xml <project xmlns="

  • Spring Boot中使用activiti的方法教程(一)

    前言 Activiti API是一个工作流程(workflow)和业务流程管理(BPM)系统,可以定义流程.执行流程并以不同方式对其实现运行.使用API​​的开发可以在任何IDE中完成,但是要使用Activiti Designer需要Eclipse,IDEA中使用actiBPM插件. 定义流程有几种方式: 1. 使用BPMN 2.0标准在定义一个流程XML. 2. 使用StartEvent,EndEvent,UserTask,SequenceFlow等Java类. 如果我们想要运行进程或访问任何

随机推荐