基于若依的ruoyi-nbcio流程管理系统增加流程节点配置(二)

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

gitee源代码地址

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

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

    上一节把数据库与相关基础数据字典准备好,下面就来实现相应的功能,目前先针对自定义业务表单的规则。

    1、前端部分

     在流程模型的列表里增加配置,如下图

 相应前端代码如下:

<el-buttontype="text"size="mini"icon="el-icon-setting"v-hasPermi="['workflow:model:config']"@click.native="handleConfig(scope.row)">配置</el-button>

    下面的组件可以通过生成的流程配置代码修改,具体下一节再说。

<el-dialog :title="flowConfigData.title" :visible.sync="flowConfigOpen" append-to-body fullscreen><flow-config:key="flowConfigOpen"style="border:1px solid rgba(0, 0, 0, 0.1);"ref="flowConfig"v-loading="flowConfigData.loading":flowConfigData="flowConfigData"/></el-dialog>
/** 配置流程 */handleConfig(row) {this.loading = true;console.log("row=",row);getAppType(row.category).then(res => {console.log("res=",res);configModel(row.modelId,res.data[0].id).then(response => {this.$modal.msgSuccess(response.msg);this.flowConfigOpen = true;this.flowConfigData.modelId = row.modelId;console.log("response=",response);}).finally(() => {this.loading = false;})}).finally(() => {this.loading = false;})},

2、后端接口

@Override@Transactional(rollbackFor = Exception.class)public String configModel(String modelId, String appType) {// 获取流程模型Model model = repositoryService.getModel(modelId);if (ObjectUtil.isNull(model)) {throw new RuntimeException("流程模型不存在!");}// 获取流程图byte[] bpmnBytes = repositoryService.getModelEditorSource(modelId);if (ArrayUtil.isEmpty(bpmnBytes)) {throw new RuntimeException("请先设计流程图!");}String bpmnXml = StringUtils.toEncodedString(bpmnBytes, StandardCharsets.UTF_8);BpmnModel bpmnModel = ModelUtils.getBpmnModel(bpmnXml);String processName = model.getName();Process process = bpmnModel.getMainProcess();Collection<FlowElement> flowElements = process.getFlowElements();for (FlowElement flowElement : flowElements) {WfFlowConfigBo flowConfigBo = new WfFlowConfigBo();if (flowElement instanceof StartEvent) {StartEvent startEvent =  (StartEvent)flowElement;WfFlowConfigVo flowConfigVo = new WfFlowConfigVo();flowConfigVo.setModelId(modelId);flowConfigVo.setNodeKey(startEvent.getId());if(ObjectUtils.isEmpty(flowConfigService.selectByModelIdAndNodeKey(flowConfigVo))) {flowConfigBo.setModelId(modelId);flowConfigBo.setAppType(appType);flowConfigBo.setFormKey(startEvent.getFormKey());flowConfigBo.setNodeName(startEvent.getName());flowConfigBo.setNodeKey(startEvent.getId());flowConfigService.insertByBo(flowConfigBo);}else {flowConfigVo.setAppType(appType);flowConfigVo.setFormKey(startEvent.getFormKey());flowConfigVo.setNodeName(startEvent.getName());flowConfigService.updateFlowConfig(flowConfigVo);}}if (flowElement instanceof UserTask) {UserTask userTask = (UserTask)flowElement;WfFlowConfigVo flowConfigVo = new WfFlowConfigVo();flowConfigVo.setModelId(modelId);flowConfigVo.setNodeKey(userTask.getId());if(ObjectUtils.isEmpty(flowConfigService.selectByModelIdAndNodeKey(flowConfigVo))) {flowConfigBo.setModelId(modelId);flowConfigBo.setAppType(appType);flowConfigBo.setFormKey(userTask.getFormKey());flowConfigBo.setNodeName(userTask.getName());flowConfigBo.setNodeKey(userTask.getId());flowConfigService.insertByBo(flowConfigBo);}else {flowConfigVo.setAppType(appType);flowConfigVo.setFormKey(userTask.getFormKey());flowConfigVo.setNodeName(userTask.getName());flowConfigService.updateFlowConfig(flowConfigVo);}}}return modelId;}

3、相应界面如下:

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

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

相关文章

实现了父类 纯虚函数为什么还有 无法解析外部符号错误

使用背景&#xff1a; 将C 的函数或接口使用 pybind11 封装成可以供python 使用调用的接口或函数&#xff0c;使用了CMake 编译&#xff08;若之前可以编译通过&#xff0c;现在编译不通过&#xff0c;重新选择 source code 路径&#xff09;成 VS 2019 可使用的目标解决方案&a…

ThinkPHP6学生选课管理系统

有需要请加文章底部Q哦 可远程调试 ThinkPHP6学生选课管理系统 一 介绍 此学生选课管理系统基于ThinkPHP6框架开发&#xff0c;数据库mysql8&#xff0c;前端bootstrap。系统角色分为学生&#xff0c;教师和管理员。学生登录后可进行选课&#xff0c;教师登录后可查看选课情况…

碧莲盛 x Tapdata:实时数据如何赋能医疗美容行业,助力医疗决策及个性化服务升级

使用 Tapdata&#xff0c;化繁为简&#xff0c;轻量代替 OGG、DSG 这样的同步工具&#xff0c;以及 Kettle、Informatica、Python 这样的 ETL 工具或脚本&#xff0c;帮助企业在五花八门的数据需求面前&#xff0c;实现“做且仅做最后一次 ETL”的目标&#xff0c;这绝非纸上谈…

Win7 SP1 x64 Google Chrome 字体模糊

1 打开 Google Chrome &#xff0c;地址栏输入 chrome://version/ &#xff0c;字体模糊。 2 Microsoft Update Catalog 搜索现在更新 kb2670838 &#xff0c;安装&#xff0c;重启电脑。 3 打开 Google Chrome&#xff0c;地址栏输入 chrome://version/ &#xff0c;字体正常。…

AI生成技术威胁版权保护,水印技术和法律完善是关键/安圭拉小岛以.ai域名注册赚得3000万美元 |魔法半周报​

我有魔法✨为你劈开信息大海❗ 高效获取AIGC的热门事件&#x1f525;&#xff0c;更新AIGC的最新动态&#xff0c;生成相应的魔法简报&#xff0c;节省阅读时间&#x1f47b; &#x1f525;资讯预览 AI生成技术威胁版权保护&#xff0c;水印技术和法律完善是关键 Sam Altman对…

记录一次如何查询mysql分库分表数据

一、前言 本次查询是在未知如何分库分表的情况下&#xff0c;对表数据进行查询&#xff0c;其中有的字段为JSON结构。需要提取JSON中某个字段的内容。 二、查询步骤 1、第一方式是将所有分表数据进行union all select * from apporder.ord_shopping_order union all sel…

vue跨域请求

vue.config.js devServer:{proxy:"http://localhost:8081"}main.js中定义 import axios from "axios"; axios&#xff0c; App.vue中引用 <template><Article/> </template><script> import Article from "/components/Ar…

才聚免费为你招聘,用人单位看过来!

才聚团队从1998年开始从事项目管理的推广工作&#xff0c;20多年来培训学员超30万人次&#xff0c;分布全国各地、服务企业超过5000家。拥有大批 PMP &#xff08;项目管理专业人员资格&#xff09; NPDP&#xff08;产品经理国际资格&#xff09; 软考 &#xff08;信息系统…

五丶openlayer之LOD和分辨率

LOD是Levels of Detail的简写&#xff0c;用于根据当前的环境&#xff0c;渲染不同的图像&#xff0c;用于降低非重要的细节度&#xff0c;从而提高渲染效率&#xff0c;在电子游戏中经常运用&#xff0c;对于需要显示全球地图的GIS系统而言&#xff0c;更需要应用这项技术。 …

UE5学习(游戏存档,两种适应性的射线检测,时间膨胀)

游戏存档 0.建立游戏存档类 1.建立存档 命名要用规律&#xff0c;读档时根据命名调用 2.读取存档 这里是用存档时间&#xff08;秒&#xff09;验证是否有存档成功。 两种鼠标位置射线检测方法 两种适用性未使用大量项目验证&#xff0c;为个人观点 1.适用于游戏中 2.适用于…

Ubuntu20.04部署TVM流程及编译优化模型示例

前言&#xff1a;记录自己安装TVM的流程&#xff0c;以及一个简单的利用TVM编译模型并执行的示例。 1&#xff0c;官网下载TVM源码 git clone --recursive https://github.com/apache/tvmgit submodule init git submodule update顺便完成准备工作&#xff0c;比如升级cmake版本…

YOLOv8 onnx 文件推理多线程加速视频流

运行环境&#xff1a; MacOS&#xff1a;14.0Python 3.9Pytorch2.1onnx 运行时 模型文件&#xff1a; https://wwxd.lanzouu.com/iBqiA1g49pbc 密码:f40v 下载 best.apk后将后缀名修改为 onnx 即可模型在英伟达 T4GPU 使用 coco128 训练了 200 轮如遇下载不了可私信获取 代码…

个人投资白银收益怎么样?

个人投资白银是可以带来丰厚的收益&#xff0c;但收益的具体情况取决于多种因素。以下是一些明确的答案和举例&#xff0c;帮助投资者更好地理解个人投资白银的收益情况。 白银市场的价格波动是决定投资收益的主要因素之一&#xff0c;白银价格受全球经济形势、地缘局势风险、…

Cesium 可视化深度纹理

Cesium 可视化深度纹理 // 创建纹理辅助器图元const textureHelper new TextureHelperPrimitive(viewer.scene)viewer.scene.primitives.add(textureHelper)viewer.scene.postRender.addEventListener(function () {const framebuffer viewer.scene.view.pickDepths[0]?.fra…

设计前中后队列 : 图解极简队列解法 [Deque + 纯数组](含进阶链表)

题目描述 这是 LeetCode 上的 「1670. 设计前中后队列」 &#xff0c;难度为 「中等」。 Tag : 「数据结构」、「双端队列」、「队列」、「链表」 请你设计一个队列&#xff0c;支持在前&#xff0c;中&#xff0c;后三个位置的 push 和 pop 操作。 请你完成 FrontMiddleBack 类…

easyexcel指定sheet页动态给行列加背景色

easyexcel&#xff0c;有多个sheet页&#xff0c;某些sheet页的行、列动态需要加背景色 import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.write.handler.CellWriteHandler; import com.alibaba.excel.write.m…

了解FastSam:一个通用分割模型(草记)

想尝试这个FastSam的部署&#xff0c;但至今还没跑通&#xff0c;一个问题能带出一片问题&#xff0c;感觉挺心情挺郁闷的。后来和学长交流的时候&#xff0c;说那就是学少了&#xff0c;没必要急着将跑通它作为目的。也很有道理&#xff0c;这个任务还不太适合我当前的水平&am…

「Verilog学习笔记」信号发生器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 方波的实现&#xff0c;较为简单&#xff0c;只需要设置一个计数器&#xff0c;使输出保持10个时钟为0&#xff0c;跳变为20&#xff0c;再保持10个时钟。依次循环。可以按…

基于Webserver的工业数据采集控制

http协议 http简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写&#xff0c;是用于Web Browser&#xff08;浏览器&#xff09;到Web Server&#xff08;服务器&#xff09;进行数据交互的传输协议。 HTTP是应用层协议 HTTP是一个基于…

蓝桥杯每日一题2023.11.28

题目描述 三羊献瑞 - 蓝桥云课 (lanqiao.cn) 题目分析 本题首先进行观察可以确定 1.“三”为 1 &#xff08;十进制数字要进位进一位&#xff09; 2.“祥”一定不为 0 &#xff08;有前导0就不能算为 4 位数&#xff09; 使用搜索时将其特判 #include<bits/stdc.h> …