栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/130423.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号