zoukankan      html  css  js  c++  java
  • activiti指定任务处理者

    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());
          }
      
      }
      
    记得快乐
  • 相关阅读:
    网络编程之Tcp,udp
    网络编程简介
    面向对象之高级篇 反射,元类
    面向对象 高级篇
    面向对象,继承
    初识面向对象
    包 hashlib,logging
    模块
    Dango生命周期回顾与forms组件
    Django中auth登录、注册、修改密码、退出、ORM自关联
  • 原文地址:https://www.cnblogs.com/Y-wee/p/13920019.html
Copyright © 2011-2022 走看看