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在做性能测 ...
随机推荐
- Java异常机制,自定义异常以及spring boot异常设计方案
异常机制: 异常概念 异常分类 异常的处理方法 自定义异常 springboot 的异常解决方案
- 微信公众号添加zip
微信公众号添加zip的教程 我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件. 以下是公众号添加 ...
- 一个试图了解JVM内存模型的两年经验的初级程序员,透彻!
所有的编程语言中都有内存模型这个概念,区别于微架构的内存模型,高级语言的内存模型包括了编译器和微架构两部分.我试图了解了Java.C#和Go语言的内存模型,发现内容基本大同小异,只是这些语言在具体实现 ...
- 推荐:pyqt5入门教程
版权声明:本文为CSDN博主「AzureMouse」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/azure ...
- C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4098 访问. 给定一个二叉搜索树和一个目标结果,如果 BST 中 ...
- C#LeetCode刷题之#20-有效的括号(Valid Parentheses)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4018 访问. 给定一个只包括 '(',')','{','}',' ...
- 2、java数据类型转换
当数据类型不一样时,将会发生数据类型转换. 1.自动类型转换(隐式) 1. 特点:代码不需要进行特殊处理,自动完成. 2. 规则:数据范围从小到大. System.out.println(1024); ...
- eclipse中点击pre-commit Request to ReviewBoard,预提交框不显示问题
需要设置:
- [源码解析] 当 Java Stream 遇见 Flink
[源码解析] 当 Java Stream 遇见 Flink 目录 [源码解析] 当 Java Stream 遇见 Flink 0x00 摘要 0x01 领域 1.1 Flink 1.2 Java St ...
- python的一些使用体会
python刚开始接触,因为刚好有点需求,所以写了点小程序,一点点体会. 优点: 1. os.rename()方法不错,c#就没有这个方法 2.字符串的slice操作不错,取substring有时比较 ...