欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring activiti如何實(shí)現(xiàn)指定任務(wù)處理者

 更新時(shí)間:2020年11月18日 10:51:16   作者:Y_wee  
這篇文章主要介紹了Spring activiti如何實(shí)現(xiàn)指定任務(wù)處理者,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

指定委托那些辦理者處理任務(wù)節(jié)點(diǎn),也就是只有此辦理者才有操作此節(jié)點(diǎn)的操作權(quán)限

1、直接指定

流程圖配置實(shí)現(xiàn):在流程圖屬性欄設(shè)置Assignee屬性值為任務(wù)的處理者

流程圖xml文件配置實(shí)現(xiàn):在流程圖對(duì)應(yīng)的xml文件指定activiti:assignee屬性值為任務(wù)的處理者

<userTask activiti:assignee="yl01" activiti:exclusive="true" id="_3" name="部長(zhǎng)"/>
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 {
  //創(chuàng)建工作流引擎
  ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
  //管理流程文件的對(duì)象
  RepositoryService repositoryService=processEngine.getRepositoryService();
  //管理流程實(shí)例的對(duì)象
  RuntimeService runtimeService=processEngine.getRuntimeService();
  //管理任務(wù)節(jié)點(diǎn)的對(duì)象
  TaskService taskService=processEngine.getTaskService();
  //流程實(shí)例id
  private String processInstanceId;

  /**
   * 部署流程文件
   */
  @Test
  public void deployment() {
    //部署bpmn文件到數(shù)據(jù)庫表
    Deployment deployment=repositoryService.createDeployment().addClasspathResource("hello.bpmn").deploy();

    System.out.println("部署文件id="+deployment.getId());
  }


  /**
   * 啟動(dòng)流程實(shí)例
   */
  @Test
  public void start(){
    //啟動(dòng)流程實(shí)例
    ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1");

    processInstanceId=processInstance.getId();

    System.out.println("流程實(shí)例id="+processInstanceId);
  }

  /**
   * 獲取當(dāng)前任務(wù)節(jié)點(diǎn)對(duì)象及完成此任務(wù)節(jié)點(diǎn)
   */
  @Test
  public void complete(){
    //獲取任務(wù)節(jié)點(diǎn)對(duì)象
    List<Task> taskList= taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee("yl01").list();
    for(Task task:taskList){
      System.out.println("待辦事務(wù)="+task.getName());
    }
    //完成此任務(wù)節(jié)點(diǎn)
    taskService.complete(task.getId());
  }
}

2、通過變量指定

流程圖配置實(shí)現(xiàn):在流程圖屬性欄設(shè)置Assignee屬性值為任務(wù)的處理者,屬性值設(shè)置為變量,eg:#{name}

流程圖xml文件配置實(shí)現(xiàn):在流程圖對(duì)應(yīng)的xml文件指定activiti:assignee屬性值為任務(wù)的處理者

<userTask activiti:assignee="#{name1}" activiti:exclusive="true" id="_3" name="部長(zhǎng)"/>

示例

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 {
  //創(chuàng)建工作流引擎
  ProcessEngine processEngine= ProcessEngines.getDefaultProcessEngine();
  //管理流程文件的對(duì)象
  RepositoryService repositoryService=processEngine.getRepositoryService();
  //管理流程實(shí)例的對(duì)象
  RuntimeService runtimeService=processEngine.getRuntimeService();
  //管理任務(wù)節(jié)點(diǎn)的對(duì)象
  TaskService taskService=processEngine.getTaskService();
  //流程實(shí)例id
  private String processInstanceId;

  /**
   * 部署流程文件
   */
  @Test
  public void deployment() {
    //部署bpmn文件到數(shù)據(jù)庫表
    Deployment deployment=repositoryService.createDeployment().addClasspathResource("hello.bpmn").deploy();

    System.out.println("部署文件id="+deployment.getId());
  }

  /**
   * 啟動(dòng)流程實(shí)例
   */
  @Test
  public void start(){
    //存儲(chǔ)任務(wù)處理者
    Map<String,Object> variables=new HashMap<>();
    variables.put("name1","yl01");

    //啟動(dòng)流程實(shí)例并指定任務(wù)處理對(duì)象
    ProcessInstance processInstance=runtimeService.startProcessInstanceByKey("myProcess_1",variables);

    processInstanceId=processInstance.getId();

    System.out.println("流程實(shí)例id="+processInstanceId);
  }

  /**
   * 獲取當(dāng)前任務(wù)節(jié)點(diǎn)對(duì)象及完成此任務(wù)節(jié)點(diǎn)
   */
  @Test
  public void complete(){
    //獲取任務(wù)節(jié)點(diǎn)對(duì)象
    Task task= taskService.createTaskQuery().processInstanceId(processInstanceId).taskAssignee("yl01").singleResult();

    System.out.println("待辦事務(wù)="+task.getName());

    //完成此任務(wù)節(jié)點(diǎn)
    taskService.complete(task.getId());
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論