基于若依的ruoyi-nbcio流程管理系统中自定义业务流程发布动态更新业务流程关联信息

更多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、对应发布流程中,自定业务流程做特殊处理,就是下面这个方法

@Overridepublic boolean saveCustomDeployForm(String procDefKey, String deployId, String deployName, BpmnModel bpmnModel) {// 获取开始节点StartEvent startEvent = ModelUtils.getStartEvent(bpmnModel);if (ObjectUtil.isNull(startEvent)) {throw new RuntimeException("开始节点不存在,请检查流程设计是否有误!");}// 更新开始节点表单信息与流程信息到自定义业务关联表WfCustomFormBo customFormBo = buildCustomForm(procDefKey, deployId, deployName, startEvent);if (ObjectUtil.isNotNull(customFormBo)) {updateByBo(customFormBo);return true;}return false;}

2、其中buildCustomForm修改一下,同时增加一个proDefKey参数

/*** 构建部署表单关联信息对象* @param procDefKey 流程定义Key* @param deployId 部署ID* @param deployName 部署名称ID* @param node 节点信息* @return 部署表单关联对象。若无表单信息(formKey),则返回null*/private WfCustomFormBo buildCustomForm(String procDefKey, String deployId, String deployName, FlowNode node) {//获取业务流程关联表信息,以便更新// 创建流程查询条件ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery().processDefinitionKey(procDefKey).orderByProcessDefinitionVersion().desc();long defTotal = processDefinitionQuery.count();if (defTotal > 1L) {//有老版本,搜索业务流程关联表List<ProcessDefinition> definitionList = processDefinitionQuery.list();//获取上一个版本的流程发布idString preDeployId = definitionList.get(1).getDeploymentId();WfCustomFormBo wfCustomFormbo = selectSysCustomFormByDeployId(preDeployId);if (ObjectUtil.isNotEmpty(wfCustomFormbo)) {//找到有就用最新的deployId进行更新wfCustomFormbo.setDeployId(deployId);updateByBo(wfCustomFormbo);}}//获取流程模型的表单信息String formKey = ModelUtils.getFormKey(node);if (StringUtils.isEmpty(formKey)) {return null;}Long formId = Convert.toLong(StringUtils.substringAfter(formKey, "key_"));WfCustomFormVo customFormVo = queryById(formId);if (ObjectUtil.isNull(customFormVo)) {throw new ServiceException("表单信息查询错误");}WfCustomFormBo customFormBo = new WfCustomFormBo();customFormBo.setId(formId);customFormBo.setBusinessName(customFormVo.getBusinessName());customFormBo.setBusinessService(customFormVo.getBusinessService());customFormBo.setCreateBy(customFormBo.getCreateBy());customFormBo.setRouteName(customFormVo.getRouteName());customFormBo.setDeployId(deployId);customFormBo.setFlowName(deployName);return customFormBo;}

3、WfCustomFormMapper.xml

<select id="selectSysCustomFormByDeployId" parameterType="String" resultType="com.ruoyi.workflow.domain.bo.WfCustomFormBo">select id, business_name, business_service, deploy_id, route_name,component,authorize,create_time, update_time, create_by, update_by from wf_custom_form where deploy_id = #{deployId}</select>

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

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

相关文章

代码随想录-动态规划5(1049. 最后一块石头的重量 II、494. 目标和、474. 一和零)

1049. 最后一块石头的重量 II class Solution { public:int lastStoneWeightII(vector<int>& stones) {int target 0;int flag 0;for (int i0; i<stones.size();i){target stones[i];}vector<int> dp(target/21, 0);for (int i0; i<stones.size();i)…

信息系统三级等保安全解决方案(46页Word)

1、系统定级与安全域 2、实施方案设计 3、安全防护体系建设规划 软件开发全系资料分享下载&#xff1a;软件项目开发全套文档下载_软件开发文档下载-CSDN博客

安全防御第七次作业

拓扑图如图所示&#xff1a; 问题&#xff1a;在FW7和FW8之间建立一条IPSEC通道保证10.0.2.0/24网段 可以正常访问到192.168.1.0/24 注&#xff1a;基础配置我在此省略了 一、NAT配置 FW4&#xff1a; FW6&#xff1a; 二、在FW4上做服务器映射 三、配置IPSEC FW5&#xff…

MessAuto-让验证码提取更加丝滑

专注于web漏洞挖掘、内网渗透、免杀和代码审计&#xff0c;感谢各位师傅的关注&#xff01;网安之路漫长&#xff0c;与君共勉&#xff01; MessAuto MessAuto 是一款 macOS 平台自动提取短信和邮箱验证码到粘贴板的软件&#xff0c;由Rust开发&#xff0c;适用于任何APP 下面展…

这个简历你给几分?

求大家给给建议&#x1f62d;&#x1f62d; 自己算法几乎没刷过&#xff0c;项目也不咋好 打算21号开始投日常实习 好慌

MySQL将两条记录根据相同条件合并

知识点&#xff1a;在MySQL中&#xff0c;可以使用GROUP BY子句和聚合函数如CONCAT或CONCAT_WS来将多条记录基于相同条件合并为一条记录 【主要是GROUP_CONCAT这个函数的运用】 例如将员工信息表中相同门店的员工信息合并为一条记录 MySQL语句如下&#xff1a; SELECT dept_…

Flask python 开发篇:项目布局

一、背景简介 Flask应用程序可以像单个文件一样简单。就像上一篇简单实现一个接口一样&#xff0c;所有的东西都在一个python文件内&#xff1b; 然而&#xff0c;当项目越来越大的时候&#xff0c;把所有代码放在单个文件中就有点不堪重负了。 Python 项目使用 包 来管理代码…

Oracle将归档日志从 ASM 拷贝到 Linux 文件系统中操作步骤

Oracle–将归档日志从 ASM 拷贝到 Linux 文件系统中操作步骤 适用场景&#xff1a; 备份出现问题&#xff0c;ASM 中归档日志磁盘组空间不足&#xff0c;暂时无法扩容&#xff0c;数据库不可用。 操作前提&#xff1a; 可以备份情况下&#xff0c;先备份之后直接清理日志文件…

windows server 2019 服务器配置的方法步骤

一、启用远程功能二、测试三、解决多用户登录的问题 一、启用远程功能 右键点击【此电脑】–【属性】&#xff0c;进入“【控制面板\系统和安全\系统】”&#xff0c;点击-【远程设置】(计算机找不到就使用【winE】快捷键) 2、在“远程桌面”下方&#xff0c;点击【允许远程连…

Power Shell中更改策略以确保复杂的脚本能够顺利执行?

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned Set-ExecutionPolicy -ExecutionPolicy RemoteSigned Set-ExecutionPolicy -ExecutionPolicy RemoteSigned 是一个在 Windows PowerShell 中使用的命令&#xff0c;它用于设置 PowerShell 脚本的执行策略。这个命令对你如何…

【MySQL】1.在Centos 7上如何卸载/安装/配置MySQL(保姆级教程)

MySQL 在 Centos 7环境安装 说明&#xff1a; • 安装与卸载中&#xff0c;用户全部切换成为root&#xff0c;⼀旦安装&#xff0c;普通用户能使用的 • 初期练习&#xff0c;mysql不进行用户管理&#xff0c;全部使用root进行&#xff0c;尽快适应mysql语句&#xff0c;后⾯学…

联想小新电脑出现蓝屏问题解决(暂时没有解决)

电脑出现蓝屏&#xff0c;如下 搜索FAULTY_HARDWARE_CORRUPTED_PAGE寻找解决方案&#xff0c;找到较为靠谱的文章&#xff1a;记录蓝屏问题FAULTY_HARDWARE_CORRUPTED_PAGE 根据文章提示找到官方解答&#xff1a;Bug 检查 0x12B&#xff1a;FAULTY_HARDWARE_CORRUPTED_PAGE&…

C++的萃取技术

一、什么是traits 在《模板类型的自动推导》中提到了c是一门静态编译语言&#xff0c;不支持动态类型的获取&#xff0c;也就更不用说提供类似c#&#xff0c;Java等语言的反射机制。但是&#xff0c;没有类型获取的接口不代表没有这种实际的需求&#xff0c;那么怎么解决这种需…

路由器动态路由配置

本博客为观看湖科大的教书匠系列计算机网络视频的学习笔记。 静态路由选择动态路由选择采用人工配置的方式给路由器添加网络路由、默认路由和特定主机路由等路由条目。路由器通过路由选择协议自动获取路由信息。静态路由选择简单、开销小&#xff0c;但不能及时适应网络状态(流…

[VulnHub靶机渗透] Nullbyte

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

【MATLAB第98期】基于MATLAB的MonteCarlo蒙特卡罗结合kriging克里金代理模型的全局敏感性分析模型(有目标函数)

【MATLAB第98期】基于MATLAB的Monte Carlo蒙特卡罗结合kriging克里金代理模型的全局敏感性分析模型&#xff08;有目标函数&#xff09;【更新中】 PS:因内容涉及较多&#xff0c;所以一时半会更新不完 后期会将相关原理&#xff0c;以及多种功能详细介绍。 麻烦点赞收藏&#…

多核多cluster多系统之间缓存一致性概述

目录 1.思考和质疑2.怎样去维护多核多系统缓存的一致性2.1多核缓存一致性2.2多Master之间的缓存一致性2.3dynamIQ架构同一个core中的L1和L2 cache 3.MESI协议的介绍4.ACE维护的缓存一致性5.软件定义的缓存和替换策略6.动图示例 本文转自 周贺贺&#xff0c;baron&#xff0c;代…

Unity Timeline在编辑器下正常,真机(模拟器、手机)不正常播放问题

出现这个问题很大可能是因为设置了 Managed Stripping Level > Low 只需要改成 Managed Stripping Level > Medium就可以正常播 或者改Assets/link.xml没有就新建 <linker><assembly fullname"Unity.Timeline" preserve"all" /> </l…

02.JavaScript的运算符和语句

JavaScriptt的运算符和语句 一.运算符 算术运算符 数字是用来计算的&#xff0c;比如&#xff1a;乘法 * 、除法 / 、加法 、减法 - 等等&#xff0c;所以经常和算术运算符一起。 算术运算符&#xff1a;也叫数学运算符&#xff0c;主要包括加、减、乘、除、取余&#xff…

Unity 中的 PlayFab 入门

要开始在 Unity 中使用 PlayFab,你只需执行以下两个简单步骤即可。第一步是设置 PlayFab 帐户。第二步是通过安装 Unity 编辑器扩展将其连接到 Unity。或者,你也可以下载 PlayFab SDK 并在没有扩展的情况下进行配置。 设置你的 PlayFab 帐户 访问 PlayFab 的网站并创建你的…