基于若依的ruoyi-nbcio流程管理系统里修正仿钉钉流程部门主管与多实例转xml的bug

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

演示地址:RuoYi-Nbcio后台管理系统

更多nbcio-boot功能请看演示系统

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

在线演示(包括H5) : http://122.227.135.243:9888
 

1、后端代码 createUserTask方法里修正如下:

根据不通类型进行分别判断出来xml生成

String assignType = properties.getString("assigneeType");
        		if(StringUtils.equalsAnyIgnoreCase("user", assignType)) {
	        		JSONArray approvers = properties.getJSONArray("approvers");
	        		JSONObject approver = approvers.getJSONObject(0);
	        		ExtensionAttribute extDataTypeAttribute =  new ExtensionAttribute();
	        		extDataTypeAttribute.setNamespace(ProcessConstants.NAMASPASE);
	        		extDataTypeAttribute.setName("dataType");
	        		extDataTypeAttribute.setValue("USERS");
	        		userTask.addAttribute(extDataTypeAttribute);
	        		ExtensionAttribute extTextAttribute =  new ExtensionAttribute();
	        		extTextAttribute.setNamespace(ProcessConstants.NAMASPASE);
	        		extTextAttribute.setName("text");
	        		extTextAttribute.setValue(approver.getString("nickName"));
	        		userTask.addAttribute(extTextAttribute);
	        		userTask.setFormKey(properties.getString("formKey"));
	        		userTask.setAssignee(approver.getString("userName"));
        		}
        		else if (StringUtils.equalsAnyIgnoreCase("director", assignType)) {
	        		ExtensionAttribute extDataTypeAttribute =  new ExtensionAttribute();
	        		extDataTypeAttribute.setNamespace(ProcessConstants.NAMASPASE);
	        		extDataTypeAttribute.setName("dataType");
	        		extDataTypeAttribute.setValue("MANAGER");
	        		userTask.addAttribute(extDataTypeAttribute);
	        		ExtensionAttribute extTextAttribute =  new ExtensionAttribute();
	        		extTextAttribute.setNamespace(ProcessConstants.NAMASPASE);
	        		extTextAttribute.setName("text");
	        		extTextAttribute.setValue("部门经理");
	        		userTask.addAttribute(extTextAttribute);
	        		userTask.setFormKey(properties.getString("formKey"));
	        		userTask.setAssignee("${DepManagerHandler.getUser(execution)}");
        		}
        		else if (StringUtils.equalsAnyIgnoreCase("role", assignType)) {
        			JSONArray approvers = properties.getJSONArray("approvers");
	        		JSONObject approver = approvers.getJSONObject(0);
	        		ExtensionAttribute extDataTypeAttribute =  new ExtensionAttribute();
	        		extDataTypeAttribute.setNamespace(ProcessConstants.NAMASPASE);
	        		extDataTypeAttribute.setName("dataType");
	        		extDataTypeAttribute.setValue("ROLES");
	        		userTask.addAttribute(extDataTypeAttribute);
	        		ExtensionAttribute extTextAttribute =  new ExtensionAttribute();
	        		extTextAttribute.setNamespace(ProcessConstants.NAMASPASE);
	        		extTextAttribute.setName("text");
	        		extTextAttribute.setValue(approver.getString("roleName"));
	        		userTask.addAttribute(extTextAttribute);
	        		userTask.setFormKey(properties.getString("formKey"));
	        		List<SysRole> sysroleslist = approvers.toJavaList(SysRole.class);
	        		List<String> roleslist = sysroleslist.stream().map(e->e.getRoleKey()).collect(Collectors.toList());
	        		userTask.setCandidateGroups(roleslist);
	        		userTask.setAssignee("${assignee}");
	        		MultiInstanceLoopCharacteristics loopCharacteristics = new MultiInstanceLoopCharacteristics();
	        		if(StringUtils.equalsAnyIgnoreCase(properties.getString("counterSign"), "true")) {//并行会签
	        			loopCharacteristics.setSequential(false);
	        			loopCharacteristics.setInputDataItem("${multiInstanceHandler.getUserNames(execution)}");
	        			loopCharacteristics.setElementVariable("assignee");
	        			loopCharacteristics.setCompletionCondition("${nrOfCompletedInstances &gt;= nrOfInstances}");
	        		}
	        		else {
	        			loopCharacteristics.setSequential(false);
	        			loopCharacteristics.setInputDataItem("${multiInstanceHandler.getUserNames(execution)}");
	        			loopCharacteristics.setElementVariable("assignee");
	        			loopCharacteristics.setCompletionCondition("${nrOfCompletedInstances &gt; 0}");
	        		}
	        		userTask.setLoopCharacteristics(loopCharacteristics);
        		}

2、部门主管效果图

3、多实例效果图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python机器学习】用于回归的决策树

用于回归的决策树与用于分类的决策树类似&#xff0c;在DecisionTreeRegressor中实现。DecisionTreeRegressor不能外推&#xff0c;也不能在训练数据范围之外的数据进行预测。 利用计算机内存历史及格的数据进行实验&#xff0c;数据展示&#xff1a; import pandas as pd im…

HarmonyOS4.0系列——05、状态管理之@Prop、@Link、@Provide、@Consume,以及@Watch装饰器

状态管理 看下面这张图 Components部分的装饰器为组件级别的状态管理&#xff0c;Application部分为应用的状态管理。开发者可以通过StorageLink/LocalStorageLink 实现应用和组件状态的双向同步&#xff0c;通过StorageProp/LocalStorageProp 实现应用和组件状态的单向同步。…

关于图像分类任务中划分数据集,并且生成分类类别的josn字典文件

1. 前言 在做图像分类任务的时候&#xff0c;数据格式是文件夹格式&#xff0c;相同文件夹下存放同一类型的类别 不少网上的数据&#xff0c;没有划分数据集&#xff0c;虽然代码简单&#xff0c;每次重新编写还是颇为麻烦&#xff0c;这里记录一下 如下&#xff0c;有的数据…

Java项目:114SSM图书管理系统

博主主页&#xff1a;Java旅途 简介&#xff1a;分享计算机知识、学习路线、系统源码及教程 文末获取源码 一、项目介绍 图书管理系统基于SpringSpringMVCMybatis开发&#xff0c;系统主要实现了图书馆借书还书功能&#xff0c;系统分为管理员和读者两种角色。 管理员功能如下…

【vue3中状态管理工具pinia的使用】pinia状态三(actions)

csdn关于pinia学习文章 index.js 有三个状态&#xff1a;state、getters 和 actions 并且可以安全地假设这些概念等同于组件中的“数据”、“计算”和“方法”。 import {defineStore} from pinia;export const useStore defineStore(main,{// 定义statestate:( )>{retur…

14:00面试,14:07就出来了,问的问题有点变态。。。

前言 刚从小厂出来&#xff0c;没想到在另一家公司我又寄了。 在这家公司上班&#xff0c;每天都要加班&#xff0c;但看在钱给的比较多的份上&#xff0c;也就不太计较了。但万万没想到一纸通知&#xff0c;所有人不准加班了&#xff0c;不仅加班费没有了&#xff0c;薪资还…

Windows server——部署DNS服务(2)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.配置DNS服务 1.安装步骤教程 &#xff08;1&#xff09;安装必要条件 &…

AI教我学编程之C#入门程序详解与拓展

与AI肩并肩 前言一、一个简单的C#程序补充说明对话AI 二、标识符三、关键字四、Main五、空白1. 缩进2. 代码块的间距3. 操作符的空格4. 换行5. 一致性 六、语句七、从程序输出文本主题&#xff1a;从程序中输出文本1. Write 和 WriteLine 方法2. 格式字符串3. 多重标记和值4. 格…

OpenHarmony之hdc

OpenHarmony之hdc 简介 hdc&#xff08;OpenHarmony Device Connector&#xff09;是 OpenHarmony 为开发人员提供的用于调试的命令行工具&#xff0c;通过该工具可以在Windows/Linux/MacOS等系统上与开发机或者模拟器进行交互。 类似于Android的adb&#xff0c;和adb类似&a…

买卖股票,会产生这些费用,你知道吗?

8月27日&#xff0c;财政部、税务总局发布公告&#xff0c;为活跃资本市场、提振投资者信心&#xff0c;自2023年8月28日起&#xff0c;证券交易印花税实施减半征收。 不少网友看到新闻后&#xff0c;摩拳擦掌、就等开盘。但在一条写到“这算是近期少有的重大短期利好&#xf…

007-可调脉冲数触发之FPGA实现(Zynq也可驱动,带启动停止及完成中断输出)

文章目录 前言一、设计思路二、代码及仿真1.资源消耗2.具体代码3.仿真波形 总结 前言 此代码是在做显微镜高速聚焦系统中自己写的步进电机电机驱动源码&#xff0c;为了达到最快的驱动速度&#xff0c;因此选用脉冲触发方式进行驱动。在电机驱动的过程中往往需要对脉冲进行使能…

开源分布式任务调度系统DolphinScheduler本地部署与远程访问

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

two-stream HANet

作者未提供代码

全光谱照明灯真的护眼吗?适合考公使用的全光谱台灯

全光谱护眼台灯是一种新型的台灯产品&#xff0c;其特点是能够提供全光谱照明&#xff0c;给用户带来更好的视觉体验和护眼效果。传统的台灯大多使用白炽灯或荧光灯作为光源&#xff0c;这种光源在光谱中只包含有限的波长&#xff0c;导致照明效果不够均匀&#xff0c;容易产生…

VSCode C/C++(gdb)调试指南

1、安装插件 2、F5开启调试 左侧侧边栏->确保打开回调栈 右键函数栈->查看反汇编 3、打印寄存器、函数反汇编等 命令&#xff1a; 查看main反汇编 -exec disassemble /m main 查看寄存器 -exec info r 打印某个变量 -exec print s 或者 --s 打印寄存器&#xff0c;如p…

人大金仓恒生电子助力湘财证券TA系统国产化升级

近日&#xff0c;人大金仓&恒生电子助力湘财证券TA&#xff08;登记过户&#xff09;系统国产化升级上线&#xff0c;系统在性能、稳定性、安全可靠性等方面均表现良好。自2022年至今&#xff0c;在金仓数据库的支撑下&#xff0c;湘财证券已完成TA及其他近30个系统的升级或…

社交距离 - 华为OD统一考试

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 疫情期间,需要大家保证一定的社交距离,公司组织开交流会议,座位有一排共N个座位,编号分别为[0…N-1],要求员工一个接着一个进入会议室,并且可以在任何时候离开会议室。 满足:每当一个员工进入时,…

Nginx实战 | 高性能HTTP和反向代理神器Nginx前世今生,以及它的“繁花之境”

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

翻页插件的bug不能被忽视

文章目录 概要翻页插件的构成&#xff1a;具体功能如下&#xff1a;简单设计的测试用例测试出来的bug如下&#xff1a;小结 概要 近几年测试过不少WEB管理平台类的项目&#xff0c;系统中只要有列表管理的模块&#xff0c;就免不了要引入翻页插件 。 但是基本上每一个项目涉及…

前端面试题集合四(html)

HTML 面试知识点总结 本部分主要是笔者在复习 HTML 相关知识和一些相关面试题时所做的笔记&#xff0c;如果出现错误&#xff0c;希望大家指出&#xff01; 目录 1. DOCTYPE 的作用是什么&#xff1f;2. 标准模式与兼容模式各有什么区别&#xff1f;3. HTML5 为什么只需要写…