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在做性能测 ...
随机推荐
- JS 留言板案例
css代码 ul { list-style: none; } ul li { background-color: pink; line-height: 40px; margin: 10px; widt ...
- RabbitMQ 基础概念进阶
上一篇 RabbitMQ 入门之基础概念 介绍了 RabbitMQ 的一些基础概念,本文再来介绍其中的一些细节和其它的进阶的概念. 一.消息生产者发送的消息不可达时如何处理 RabbitMQ 提供了消 ...
- day12 异常 模块 单例
1.异常 处理 在程序执行过程中 ,发生,影响程序的正常运行 在python中 异常就是一个错误 try .... except....捕获异常 try 用来检测t ...
- c++知识点 2006-10-14 12:59
这是自己开发一个简易的监控系统时的所用到的知识点. 第一个问题 在网络传输数据时可以传int,float,doule,char,等包括结构体类型但是除类类型外. 在调试中要常用merry寄存器. 应用 ...
- offer收割机也有方法论
秋招的战火就像这夏天的温度一样炙热,陆陆续续很多学弟学妹问我秋招的注意事项,作为温暖型大叔的我此刻必须出场了. 看仔细了,接下来龙叔就把这offer收割机的秘密都告诉你们. 如果你还没点关注的话,记得 ...
- 【Hyeri】上传本地代码到Github
个人摸索出的上传本地代码到Github的办法 首先配置SSH Key(首次需要配置) 1.设置本地ssh key,打开git bash,输入命令: ssh -keygen -t rsa -C &quo ...
- ES6中的变量的解构赋值, 解放我们的双手,实现变量的批量赋值
ES6--变量的解构赋值 引言 正文 一.数组的解构赋值 解构失败 不完全解构 默认值 二.对象的解构赋值 三.字符串的解构赋值 结束语 引言 变量的解构赋值, 听起来很复杂, 简单点说可以理解成批量 ...
- SpringBoot--- Shiro(拦截,认证)、Thymeleaf(模板引擎)
SpringBoot--- Shiro(拦截,认证).Thymeleaf(模板引擎) 环境 IDEA :2020.1 SpringBoot: 2.3.3 Java : 8 版本依赖: shiro- ...
- 02 . Go开发一个日志收集平台之Context及etcd简单使用
Context简单使用 context设置,获取value值 应用于全局通用参数传递 package main import ( "context" "fmt" ...
- 【小白学AI】GBDT梯度提升详解
文章来自微信公众号:[机器学习炼丹术] 文章目录: 目录 0 前言 1 基本概念 2 梯度 or 残差 ? 3 残差过于敏感 4 两个基模型的问题 0 前言 先缕一缕几个关系: GBDT是gradie ...