基于jeecgboot-vue3的Flowable流程支持bpmn流程设计器与仿钉钉流程设计器-编辑多版本处理

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。

1、前端编辑带有仿钉钉流程的处理

/** 编辑流程设计弹窗页面 */const handleLoadXml = (row) => {console.log("handleLoadXml row",row)const params = {flowKey: row.key,version: row.version} queryByKeyAndVersion(params).then(res => {console.log("queryByKeyAndVersion res",res)if (res.code === 200 && res.result.hasOwnProperty("id")) {ddDesignerData.id = res.result.flowKeyddDesignerData.name = res.result.nameflowJsonData.value = JSON.parse(res.result.flowJson)flowJsonData.value.category = row.categoryflowJsonData.value.appType = row.appTypeddDesignerData.version = res.result.versiondesignerData.form.processType.push({id: row.category,appType: row.appType})ddDesignerOpen.value = true}else {designerData.title = "流程设计 - " + row.name;designerData.deploymentId = row.deploymentId;designerData.form = {processType: [],processName: row.name,processKey: row.key}if (row &&row.deploymentId) {const selectItem = categorys.value.find(item => item.id == row.category);modelForm.processType = selectItem; //以便编辑保存的时候获取到processTypedesignerData.form.processType.push(selectItem);designerData.loading = true;console.log("designerData",designerData)handleReadImage(row.deploymentId);designerData.title = "编辑流程图";  }xmlFrame.width = '90%'}})  }

2、后端检查是否有相应的仿钉钉flowKey和版本号相同的仿钉钉数据

<mapper namespace="org.jeecg.modules.flowable.FlowDd.mapper.FlowDdMapper"><select id="selectByKeyAndVersion" resultType="org.jeecg.modules.flowable.FlowDd.entity.FlowDd">select * from flow_ddwhere flow_key= #{flowKey} and version = #{version} limit 1</select>
</mapper>

3、前端编辑后保存

const ddSave = (data: any) => {console.log("ddSave data",data)saveXmlJson(data).then(res => {if(res.code === 200) {createMessage.success(res.message);ddDesignerData.loading = false;ddDesignerOpen.value = false;getList();}  })}  

其中前端数据如下:

const save = () => {const processModel = {code: pCode.value,name: pName.value,icon: {name: 'el:HomeFilled',color: '#409EFF'},process: props.process,flowJson: JSON.stringify(props.process),category: props.processType[0].id,appType: props.processType[0].appType,enable: true,version: props.version,sort: 0,groupId: '',remark: ''}emit('save', processModel);
}

4、后端保存跟原来差不多

@Override@Transactional(rollbackFor = Exception.class)public Result saveDdModel(ProcessModel processModel) {try {FlowSaveXmlVo vo = new FlowSaveXmlVo();BpmnModel bpmnModel = processModel.toBpmnModel();FlowDd flowDd = new FlowDd();flowDd.setId(processModel.getId());flowDd.setName(processModel.getName());flowDd.setFlowKey(processModel.getCode());flowDd.setVersion(processModel.getVersion()+1);//String flowJson = JSON.toJSONString(processModel);//有问题,会转换成大写的问题String flowJson = processModel.getFlowJson();flowDd.setFlowJson(flowJson);flowDdService.save(flowDd);String xml = new String(new BpmnXMLConverter().convertToXML(bpmnModel));vo.setAppType(processModel.getAppType());vo.setCategory(processModel.getCategory());vo.setXml(xml);vo.setDesignerType("DingDing");return this.saveXmlMode(vo);} catch (Exception e) {e.printStackTrace();throw new RuntimeException("创建失败: e=" + e.getMessage());}}

5、效果图

上面是v2版本了,对应bpmn图

编辑仿钉钉界面

仿钉钉保存后数据

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

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

相关文章

PDF Reader 编辑阅读软件 for Mac v4.0.4(办公必备,小白简单易上手)

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行测试1、打开软件 安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软…

redis其他类型和配置文件

很多博客只讲了五大基本类型&#xff0c;确实&#xff0c;是最常用的&#xff0c;而且百分之九十的程序员对于Redis只限于了解String这种最常用的。但是我个人认为&#xff0c;既然Redis官方提供了其他的数据类型&#xff0c;肯定是有相应的考量的&#xff0c;在某些特殊的业务…

51单片机嵌入式开发:11、 STC89C52RC 实现一个滑动的led点阵程序

STC89C52RC 实现一个滑动的led点阵程序 1 概述2 LED点阵介绍2.1 LED概述2.2 LED点阵注意事项 3 LED点阵原理3.1 Led点阵内部电路3.2 原理图电路 4 软件实现点阵图案的滑动4.1 软件工程代码4.2 Protues仿真 5 扩展74HC595&#xff08;后续专题开展&#xff09;6 总结 第十一节 1…

MySQL—— if/cast/case.... end/md5 函数

目录 1. if 使用 2. if 嵌套 ​3. case ... end 4. 类型转换 cast&#xff08;&#xff09; 5. 加密函数 md5&#xff08;&#xff09; 1. if 使用 将姓名为smith的员工工资上调10%&#xff1b; 2. if 嵌套 如果岗位是manager&#xff0c;工资上调10%&#xff0c;如果岗位是s…

camtasia怎么剪掉不用的部分 屏幕录制的视频怎么裁剪上下不要的部分 camtasia studio怎么裁剪视频时长 camtasia怎么剪辑视频教程

有时我们录制的屏幕内容&#xff0c;并不一定全部需要。那么&#xff0c;屏幕录制的视频怎么裁剪上下不要的部分&#xff1f;可以使用视频剪辑软件&#xff0c;或者微课制作工具来进行裁剪。屏幕录制的视频怎么旋转&#xff1f;录制视频的旋转也是一样的&#xff0c;均在编辑步…

10.1 标注、注记图层和注记整体说明

文章目录 前言标注、注记图层和注记QGis中的标注QGis中的注释(Annotation)图层QGis中的注记 总结 前言 介绍标注、注记图层和注记说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 标注、注记图层和注记 有时地图需要使用一些文字信息说明其中的地理要素或其…

Redis系列命令更新--Redis列表命令

Redis列表 1、Redis Blpop命令&#xff1a; &#xff08;1&#xff09;说明&#xff1a;Redis Blpop命令移出并获取列表的第一个元素&#xff1b;如果列表没有元素会阻塞列表直到等到超时或发现可弹出元素为止 &#xff08;2&#xff09;语法&#xff1a;redis 127.0.0.1:63…

IDEA快速生成项目树形结构图

下图用的IDEA工具&#xff0c;但我觉得WebStorm 应该也可以 文章目录 进入项目根目录下&#xff0c;进入cmd输入如下指令&#xff1a; 只有文件夹 tree . > list.txt 包括文件夹和文件 tree /f . > list.txt 还可以为相关包路径加上注释

程控电阻器

程控电阻器 由于要测试电阻型温度传感器&#xff0c;一个电阻箱又很贵&#xff0c;就想做一款 程控电阻器 来满足。 设计满足300Ω到400kΩ可调电阻。 设计思路 选择数字电位器去控制电阻输出&#xff0c;最好是精度高&#xff0c;范围大的数字电位器。经过寻找后&#xff0c;发…

CentOS 7 Web面板的文件管理器说明

在使用CentOS 7 Web Panel&#xff08;CWP7&#xff09;时&#xff0c;偶尔要求在服务器曲面上修改&#xff0c;创建&#xff0c;编辑或删除文件。 最简单&#xff0c;最直接的方式是通过利用CWP7的内置文件管理器。 本文将详细介绍如何启动它&#xff0c;使用它&#xff0c;以…

【D3.js in Action 3 精译】2.3 用 D3 选中页面元素

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可视化最佳实践&#xff08;下&#xff09;1.4 本章小结 第二章…

C语言基础and数据结构

C语言程序和程序设计概述 程序:可以连续执行的一条条指令的集合 开发过程:C源程序(.c文件) --> 目标程序(.obj二进制文件,目标文件) --> 可执行文件(.exe文件) -->结果 在任何机器上可以运行C源程序生成的 .exe 文件 没有安装C语言集成开发环境,不能编译C语言程…

【数据结构】二叉树全攻略,从实现到应用详解

​ &#x1f48e;所属专栏&#xff1a;数据结构与算法学习 &#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ ​ &#x1f341;1. 树形结构的介绍 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做…

Java18的主要新特性总结

目录 概述 变动说明 重要变更和信息 下载地址 Java18新特性总结 1、JEP 420: Switch 的模式匹配&#xff08;第二次预览&#xff09; 功能进化 Switch 模式匹配 类型标签 null标签 守卫标签 2、JEP 400&#xff1a;默认UTF-8编码 3、JEP 408&#xff1a;简易Web服务…

Java 虚拟线程:案例研究

一. 关键要点 虚拟线程是 Java 并发编程的一个重要进步&#xff0c;但在运行典型的云原生 Java 工作负载方面&#xff0c;它们并不比 Open Liberty 现有的自主线程池具有明显的优势。对于 CPU 密集型工作负载&#xff0c;由于目前尚不清楚的原因&#xff0c;虚拟线程的吞吐量低…

Idea如何快速高效的修改项目的包名

文章目录 前言一、全局替换的快捷键二、弹出如下的界面 前言 当我们有时候在做项目迁移的时候&#xff0c;需要快速的修改项目的包名&#xff01;那么如何快速高效的修改项目的报名呢&#xff1f; 经过尝试了很多方法&#xff01;最简单的方法就是利用全局替换来直接替换报名&…

QT实现带动态弹出动画的自定义通知提示框

Qt中经常会用到提示框&#xff0c;用于交互操作&#xff01;QMessageBox是被大多数人用到的&#xff0c;用起来是很方便&#xff0c;但是控件类型、大小、布局、样式、往往不是开发者想要的。本实例实现的Notification控件&#xff0c;是一种悬浮在角落的通知提醒框。 一、简述…

Day07-ES集群加密,kibana的RBAC实战,zookeeper集群搭建,zookeeper基本管理及kafka单点部署实战

Day07-ES集群加密&#xff0c;kibana的RBAC实战&#xff0c;zookeeper集群搭建&#xff0c;zookeeper基本管理及kafka单点部署实战 0、昨日内容回顾:1、基于nginx的反向代理控制访问kibana2、配置ES集群TSL认证:3、配置kibana连接ES集群4、配置filebeat连接ES集群5、配置logsta…

Mysql-错误处理: Found option without preceding group in config file

1、问题描述 安装MYSQL时&#xff0c;在cmd中“初始化”数据库时&#xff0c;输入命令&#xff1a; mysqld --initialize --consolecmd报错&#xff1a; D:\mysql-5.7.36-winx64\bin>mysql --initialize --console mysql: [ERROR] Found option without preceding group …

打印室预约小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;附近打印店管理&#xff0c;文件打印管理&#xff0c;当前预约管理&#xff0c;预约历史管理&#xff0c;打印记录管理 开发系统&#xff1a;Windows 架构模式&#xff1a;SSM JD…