flowable工作流设置审批人为指定角色+部门的实现方式

news2024/11/15 8:27:37

一、绘制流程图页面配置

 

1、指定固定审批角色+组织的实现

如上图红框部分,需要修改此处为需求对应。比如此时红框不支持指定某个部门下的指定角色这种组合判断的审批人。则需要修改页面变成选完角色同时也选择上部门统一生成一个group标识。

修改完后,生成类似 ROLE001DEPT130000 的group标识。

在xml中设置 CandidateGroup时,设置为固定值就可以。

2、指定审批人为发起人所在部门的指定角色

此时,用方式1显然不支持,因为发起人是变化的,dept也会跟着变,只能在发起审批流程时读取到传入发起人信息后进行设置。

在xml中设置 CandidateGroup时,需要指定为可变参数,类似下图这种

 设置这个参数有几种方式:

2.1直接基于框架进行表单设置

 

 2.2 在后端代码中发起流程这个步骤时,通过setVariable()的方式设置deptId这个参数

二、流程查询时找到对应审批人

我们设置好对应审批人后,还需要在该查到的时候查到,比如 有一个部门d1,里面有 张三-员工 李四-部门领导 两个人。张三发起了一个审批,审批人设置的是本部门领导角色。此时,在李四登录时应该在待办列表里看到这条审批。

查询这块包含了发起中所有情况,因为查的时候要遵循宁可把可能的群组都查,也不能漏掉。

直接上代码吧:

// 定义的一些标识
public class TaskConstants {

    /**
     * 流程发起人
     */
    public static final String PROCESS_INITIATOR = "initiator";

    /**
     * 角色候选组前缀
     */
    public static final String ROLE_GROUP_PREFIX = "ROLE";

    /**
     * 部门候选组前缀
     */
    public static final String DEPT_GROUP_PREFIX = "DEPT";

    /**
     * 分割符
     */
    public static final String SPLIT = "-";
}
    /**
     * 获取用户组信息,包含了当前所有组合:role、dept、role+dept作为群组
     *
     * @return candidateGroup
     */
    public static List<String> getCandidateGroup() {
        List<String> list = new ArrayList<>();
// 获取当前登录人信息,不同框架有不同的获取方法,适当修改
        LoginUser user = LoginHelper.getLoginUser();
        if (ObjectUtil.isNotNull(user)) {
            if (ObjectUtil.isNotEmpty(user.getRoles())) {
                user.getRoles().forEach(role -> {
                    list.add(TaskConstants.ROLE_GROUP_PREFIX + role.getRoleId());
                    list.add(TaskConstants.ROLE_GROUP_PREFIX + role.getRoleId() + TaskConstants.SPLIT
                        + TaskConstants.DEPT_GROUP_PREFIX + user.getDeptId());
                });
            }
            if (ObjectUtil.isNotNull(user.getDeptId())) {
                list.add(TaskConstants.DEPT_GROUP_PREFIX + user.getDeptId());
            }
        }
        return list;
    }
// 查询待办事项列表        
TaskQuery taskQuery = taskService.createTaskQuery()
            .active()
            .includeProcessVariables()
            .taskCandidateOrAssigned(TaskUtils.getUserId())
            .taskCandidateGroupIn(TaskUtils.getCandidateGroup())
            .orderByTaskCreateTime().desc();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1677772.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海思Hi3065H 200MHz 高性能 RISCV32 A² MCU

这是一款海思自研的RISCV32内核的高性能实时控制专用MCU&#xff0c; 具有高性能、高集成度、高可靠性、易开发的特点&#xff0c;同时还有嵌入式AI能力。 CPU • RISC-V200MHzFPU 存储 • Up to 152KB Code Flash • 8KB Data Flash • 16KB SRAM 个人认为这是MCU梯队非常…

MES系统在电线电缆行业生产上的应用

MES系统在线缆行业的应用可以带来多重价值&#xff0c;包括提高生产效率、降低生产成本、提高产品质量、优化库存管理、改善生产环境和提高企业竞争力等方面。因此&#xff0c;在电线电缆行业中广泛应用MES系统可以提高企业的经济效益和社会效益&#xff0c;推动企业发展和行业…

Windows本地部署直播录屏利器Bililive-go并实现远程添加直播间录屏

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 1. Bililive-go与套件下载1.1 获取ffmpeg1.2 获取Bililive-go1.3 配置套件 2. 本地运行测试3. 录屏…

5 特征筛选

5 特征筛选 学习目标 掌握单特征分析的衡量指标知道 IV,PSI等指标含义知道多特征筛选的常用方法掌握Boruta,VIF,RFE,L1等特征筛选的使用方法1 单特征分析 什么是好特征?从几个角度衡量:覆盖度,区分度,相关性,稳定性 覆盖度 采集类,授权类,第三方数据在使用前都会分析…

java AOP环绕通知记录操作日志

一.创建数据库日志表 CREATE TABLE uc_system_log (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 主键ID,user_code varchar(64) DEFAULT NULL COMMENT 用户编码,user_name varchar(128) DEFAULT NULL COMMENT 用户名称,is_login tinyint(4) NOT NULL DEFAULT 0 COMMENT 是…

吴恩达深度学习笔记:优化算法 (Optimization algorithms)2.3-2.5

目录 第二门课: 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第二周&#xff1a;优化算法 (Optimization algorithms)2.3 指数加权平均数&#xff08;Exponential…

Java-数据库连接(JDBC小白教学)

&#xff01;文章最后附有完整代码&#xff01; 目录 &#x1f516;JDBC概述 &#x1f516;JDBC连接数据库 &#x1f516;添加数据&#xff08;insert&#xff09; &#x1f516;修改数据&#xff08;Update&#xff09; &#x1f516;删除数据&#xff08;delete&#x…

边缘计算教学实训解决方案

一、引言 随着物联网、5G通信技术的快速发展&#xff0c;边缘计算作为云计算的延伸和补充&#xff0c;正逐渐成为支撑智能物联网、实时数据分析等领域的重要技术。唯众旨在为职业院校设计一套全面的边缘计算教学实训体系&#xff0c;通过理论与实践相结合的方式&#xff0c;培…

深度剖析MyBatis的二级缓存

二级缓存的原理 MyBatis 二级缓存的原理是什么&#xff1f; 二级缓存的原理和一级缓存一样&#xff0c;第一次查询会将数据放到 缓存 中&#xff0c;然后第二次查询直接去缓存读取。但是一级缓存是基于 SqlSession 的&#xff0c;二级缓存是基于 mapper 的 namespace 的。也就是…

webhook 和 API:你了解吗

Webhooks 是许多 API 的补充。通过设置 webhook 系统&#xff0c;系统 B 可以注册接收有关系统 A 某些更改的通知。当更改发生时&#xff0c;系统 A 推送 更改到系统 B&#xff0c;通常是以发出 HTTP POST 请求的形式。 Webhooks 旨在消除或减少不断轮询数据的需要。但根据我的…

如何购买RAKsmart的国外高防服务器?

随着互联网的快速发展&#xff0c;网络安全问题日益凸显&#xff0c;特别是对于拥有在线业务的企业或个人来说&#xff0c;选择一款高防服务器显得尤为关键。美国RAKsmart作为知名的服务器提供商&#xff0c;其高防服务器因其卓越的性能和安全性&#xff0c;受到了广大用户的青…

一步一步带你做网络工程

网络工程怎么做 一、网络设备交换机的应用&#xff1a; 要求&#xff1a;在此接入交换机S3700&#xff0c;上划分两个vlan&#xff0c;vlan10和vlan20分别有两个PC&#xff0c;按拓扑图完成要求&#xff1a; 划分vlan添加端口 sys [Huawei]sys S1 [S1]undo in e [S1]undo t…

【全开源】JAVA同城圈子达人交友系统源码支持微信小程序+微信公众号+H5+APP

同城达人 精准匹配&#xff1a;系统通过用户填写的个人信息和兴趣爱好&#xff0c;运用智能算法进行精准匹配&#xff0c;推荐合适的同城朋友。多种互动方式&#xff1a;提供在线聊天、语音通话、视频交流等多种互动方式&#xff0c;让用户能够随时随地与朋友保持联系。本地生…

人工智能AI聊天chatgpt系统openai对话创作文言一心源码APP小程序功能介绍

你提到的是一个集成了多种智能AI创作能力的系统&#xff0c;它结合了OpenAI的ChatGPT、百度的文言一心&#xff08;ERNIE Bot&#xff09;以及可能的微信WeLM&#xff08;或其他类似接口&#xff09;等。这样的系统确实能够极大地提高创作效率&#xff0c;并且在各种场景下为用…

SpringBoot接收参数的19种方式

https://juejin.cn/post/7343243744479625267?share_token6D3AD82C-0404-47A7-949C-CA71F9BC9583

秋招算法——AcWing101——拦截导弹

文章目录 题目描述思路分析实现源码分析总结 题目描述 思路分析 目前是有一个笨办法&#xff0c;就是创建链表记录每一个最长下降子序列所对应的节点的链接&#xff0c;然后逐个记录所有结点的访问情况&#xff0c;直接所有节点都被访问过。这个方法不是很好&#xff0c;因为需…

【Qt】Qt组件设置背景图片

1. 方法1&#xff08;paintEvent方式&#xff09; 使用paintEvent()实现 1. .h文件中添加虚函数 protected:void paintEvent(QPaintEvent *event) override;添加虚函数方法&#xff1a; 选中父类&#xff0c;点击鼠标右键点击重构点击 Insert Virtual Funtion of Base Class…

小朋友台灯什么品牌好,分享最好的台灯品牌排行榜

小朋友台灯什么品牌好&#xff1f;台灯作为我们日常生活中重要的桌面照明工具&#xff0c;对于办公族的工作和学生的学习都扮演着关键角色。长期使用质量不佳的台灯可能会对我们的视力健康造成不利影响&#xff0c;尤其是对于眼睛尚在发育阶段的青少年来说&#xff0c;这种影响…

5G技术相关部分图解

1、面向5G商用网络的全系列解决方案 面向5G商用网络的全系列解决方案涵盖了从核心网到接入网的各个方面&#xff0c;确保网络的高性能、高可靠性和高安全性 2、2\3\4\5G带宽图解 G带宽的提升将推动许多新型应用的发展&#xff0c;并提供更快速、更可靠的移动通信体验。然而…