Activiti7 组任务
需求:在流程定义中在任务节点的assignee固定设置任务负责人,这种情况不是很好,如果有天任务负责人请假了,你想请假,等着吧..没人审批,针对这种情况,可以给任务设置多个候选人,可以从候选中选择参与者来完成任务
设置候选人:画图
候选人 采用Candidate Users字段设置 多人使用逗号隔开
画完图之后,部署,然后启动流程实例,提交zhangsan的任务,接下来的看代码注释吧
package com.itheima.test; import org.activiti.engine.*;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.junit.Before;
import org.junit.Test; import java.util.List; public class ActivitiGroupTest { ProcessEngine processEngine;
TaskService taskService;
String candidateUser = "lisan";
static String KEY = "holiday"; @Before
public void init() {
processEngine = ProcessEngines.getDefaultProcessEngine();
taskService = processEngine.getTaskService();
} /**
* 部署流程定义
*/
@Test
public void deployment(){ RepositoryService repositoryService = processEngine.getRepositoryService(); Deployment deploy = repositoryService.createDeployment()
.addClasspathResource("pic/holidayGroup.bpmn")
.addClasspathResource("pic/holidayGroup.png")
.name("请假流程")
.deploy(); System.out.println(deploy);
} /**
* 启动流程实例
*/
@Test
public void startProcessInstance(){ RuntimeService runtimeService = processEngine.getRuntimeService(); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(ActivitiGroupTest.KEY); System.out.println(processInstance); } /**
* 查询组任务
*/
@Test
public void queryGroupTask() { queryTaskByCandidateUser(candidateUser, null, false).forEach(task -> {
System.out.println(task);
}); } /**
* 用户拾取组任务
*/
@Test
public void claimTask() { queryTaskByCandidateUser(candidateUser, null, false).forEach(task -> {
taskService.claim(task.getId(), candidateUser);
System.out.println(candidateUser + "用户拾取了[" + task.getName() + "]任务");
});
} /**
* 用户归还组任务
*/
@Test
public void unClaimTask(){
queryTaskByCandidateUser(null, candidateUser, true).forEach(task -> {
taskService.setAssignee(task.getId(),null);
System.out.println(candidateUser + "用户丢弃了[" + task.getName() + "]任务");
});
} /**
* 用户任务交接,委托
*/
@Test
public void toAssignee(){
queryTaskByCandidateUser(null,candidateUser,true).forEach(task -> {
taskService.setAssignee(task.getId(),"lisi");
System.out.println(candidateUser+"用户将["+task.getName()+"]任务交接给了lisi用户");
});
} /**
* 查询并处理自己的任务
*/
@Test
public void queryCompletTask() { queryTaskByCandidateUser(null, "lisi", true).forEach(task -> {
taskService.complete(task.getId());
System.out.println(candidateUser+"处理了["+task.getName()+"]任务");
});
} /**
* 根据候选人查询任务
*
* @param candidateUser 候选人
* @param assignee 指定人
* @param isAssignee 是否是指定人
* @return 任务列表
*/
public List<Task> queryTaskByCandidateUser(String candidateUser, String assignee, Boolean isAssignee) { TaskQuery taskQuery = taskService.createTaskQuery().processDefinitionKey(ActivitiGroupTest.KEY); if (isAssignee) {
taskQuery.taskAssignee(assignee);
} else {
taskQuery.taskCandidateUser(candidateUser);
} return taskQuery.list(); } }
作者:彼岸舞
时间:2020\09\06
内容关于:Activiti工作流
本文来源于网络,只做技术分享,一概不负任何责任
Activiti7 组任务的更多相关文章
- activiti7组任务测试
package com.zcc.activiti05; import org.activiti.engine.*;import org.activiti.engine.repository.Deplo ...
- Activiti7 与 Spring Boot 及 Spring Security 整合 踩坑记录
1. 前言 实话实说,网上关于Activiti的教程千篇一律,有参考价值的不多.很多都是老早以前写的,基本都是直接照搬官方提供的示例,要么就是用单元测试跑一下,要么排除Spring Security ...
- Activiti7基本介绍
官方地址 官方地址 官方最新用户文档-V6.0.0 码云镜像-activiti-7-developers-guide 关于BPMN BPMN(Business Process Model AndNot ...
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- SQL Server 大数据搬迁之文件组备份还原实战
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...
- SQLSERVER将一个文件组的数据移动到另一个文件组
SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...
- SQL Server中的高可用性(2)----文件与文件组
在谈到SQL Server的高可用性之前,我们首先要谈一谈单实例的高可用性.在单实例的高可用性中,不可忽略的就是文件和文件组的高可用性.SQL Server允许在某些文件损坏或离线的情况下,允 ...
- 微信小程序的机会在于重新理解群组与二维码
历时一年,唯一一个尚未发布就获得Pony Ma与Allen Zhang站台的产品:微信小程序,将于2017年1月9日正式上线了.我很期待.唯一要警惕的是:防止长考出臭棋. 在上线前夕,我对于如何借助小 ...
- jmeter之线程组的使用
线程组 在使用jmeter性能测试时,我们都得先添加个线程组,右键testplan-->添加-->Threads-->线程组.在线程组下执行. 问题:为了能够让jmeter在做性能测 ...
随机推荐
- 用python分析1225万条淘宝数据,终于搞清楚了我的交易行为
大家好,我是黄同学
- NIO(二):Channel通道
一.Channel概述 channel(通道):进行IO的连接通道,为NIO的几个核心(Buffer,selector,channel)之一,相比于IO的stream具有较高的性能. IO 单向传输 ...
- JDK 1.8 中文 API CHM
链接: https://pan.baidu.com/s/1AiJn6RM1KoEL1n_96qoQhQ 提取码: n2ya
- ReentrantLock与synchronized 源码解析
一.概念及执行原理 在 JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并 ...
- 为什么我们需要Q#?
原文地址:https://blogs.msdn.microsoft.com/visualstudio/2018/11/15/why-do-we-need-q/ 本文章为机器翻译. 你可能熟悉微软量子的 ...
- Deep learning-based personality recognition from text posts of online social networks 阅读笔记
文章目录 一.摘要 二.模型过程 1.文本预处理 1.1 文本切分 1.2 文本统一 2. 基于统计的特征提取 2.1 提取特殊的语言统计特征 2.2 提取基于字典的语言特征 3. 基于深度学习的文本 ...
- dota2输入法无候选框?
win10自带的微软拼音在dota2中不会显示候选框,或者说是选词框. 这种情况下只能选择其他输入法. 我选择的是搜狗输入法(此随笔添加时的最新版),在dota2中有选词框. 网上有些人说要改兼容性, ...
- 浏览器自动化的一些体会2 webBrowser控件之ajax
上个帖子简要讨论了浏览器自动化的几种方法.现在讨论webBrowser控件使用中的一些问题.基本的操作就不详细说了,随便网上找个帖子或找本书都有介绍的.这里只写点网上似乎少有人总结过的内容,以及自己的 ...
- python 去除Excel中的重复行数据
导入pandas import pandas as pd 1.读取excel中的数据: frame = pd.DataFrame(pd.read_csv('excel的绝对路径.csv'', 'She ...
- Spring Boot系列(二):Spring Boot自动装配原理解析
一.Spring Boot整合第三方组件(Redis为例) 1.加依赖 <!--redis--> <dependency> <groupId>org.springf ...