基于若依的ruoyi-nbcio流程管理系统增加流程设计器支持自定义表单的选择与处理

news2024/12/23 22:22:04

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

gitee源代码地址

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

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

因为之前不支持在流程设计器进行自定义业务表单的关联选择,所以这部分实现这个。

1、前端

对不同应用类型做不同的处理

 /** 查询表单列表 */
    getFormList() {
      if(this.appType[0].id === 'OA' ) {
        listForm().then(response => {
          this.formOptions = response.rows;
          console.log("listForm this.formOptions=",this.formOptions);
        });
      }
      else if(this.appType[0].id === 'ZDYYW') {
        listCustomForm().then(response => {
          this.formOptions = response.rows;
          console.log("listCustomForm this.formOptions=",this.formOptions);
        });
      }

    },

同时自定义业务表单类型,只能在开始节点进行选择,用户节点不能选择

2、后端

发布的时候增加一个自定义业务表单的关联处理

if(StrUtil.equalsAnyIgnoreCase(appType, "OA")) {
        	return deployFormService.saveInternalDeployForm(deployment.getId(), bpmnModel);
        } else if(StrUtil.equalsAnyIgnoreCase(appType, "ZDYYW")) {
        	return customFormService.saveCustomDeployForm(deployment.getId(), deployment.getName(), bpmnModel);
        }

具体处理实现如下:

@Override
	@Transactional(rollbackFor = Exception.class)
	public boolean saveCustomDeployForm(String deployId, String deployName, BpmnModel bpmnModel) {
        // 获取开始节点
        StartEvent startEvent = ModelUtils.getStartEvent(bpmnModel);
        if (ObjectUtil.isNull(startEvent)) {
            throw new RuntimeException("开始节点不存在,请检查流程设计是否有误!");
        }
        // 更新开始节点表单信息与流程信息到自定义业务关联表
        WfCustomFormBo customFormBo = buildCustomForm(deployId, deployName, startEvent);
        if (ObjectUtil.isNotNull(customFormBo)) {
        	updateByBo(customFormBo);
        	return true;
        }
		return false;
	}
	/**
     * 构建部署表单关联信息对象
     * @param deployId 部署ID
     * @param node 节点信息
     * @return 部署表单关联对象。若无表单信息(formKey),则返回null
     */
    private WfCustomFormBo buildCustomForm(String deployId, String deployName, FlowNode node) {
        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、效果图如下:

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

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

相关文章

使用jedis连接虚拟机redis报错 Failed to connect to any host resolved for DNS name

问题描述: 导致该问题发生的原因可能是虚拟机没有开放6379端口。 解决方案: 首先检查redis.conf的bing配置是否被注释了,如果没有将其注释 第二步,将保护模式设置为no 第三步,接下来可以使用命令查看6379端口是否…

聚观早报 |京东11.11公布成绩单;2023数字科技生态大会

【聚观365】11月13日消息 京东11.11公布成绩单 2023数字科技生态大会 TikTok深受英国中小企业青睐 周鸿祎称大模型2年内可“进”智能汽车 双11全国快递业务量达 6.39 亿件 京东11.11公布成绩单 京东11.11公布成绩单:截至11月11日晚23:59,2023年京东…

ASD光谱仪使用

ASD光谱仪使用 光谱仪机器和电脑用来实时查看光谱曲线,以及控制光谱仪采集的时间、条数等各项参数。 在采集时,需要面向太阳,将待测的对象完全暴露于阳光下(下图站位是错误的挡住光线了)。探头放置于对象正上方50cm处…

Linux进程之通过系统调用创建进程[fork()函数]

文章目录 0.PID是什么?1.通过代码创建子进程--fork1.1fork()初识1.2通过系统调用创建进程1.3perror()函数的了解 2.fork()的进一步了解2.1通过代码了解2.2查看进程的指令 0.PID是什么? 进程PID(Process ID)是操作系统为每个正在运行的进程分配的唯一标…

jquery的$

jQuery是什么 jQuery是一个快速、简洁的JavaScript框架,jQuery设计的宗旨是“write Less,Do More”。 jQuery的$ 使用过jQuery的应该都知道jQuery的$,看到源码中的这一段就能知道相当于jquery的简写, jquery有两种用法&#x…

Python 日志记录器logging 百科全书 之 日志回滚

Python 日志记录器logging 百科全书 之 日志回滚 前言 在之前的文章中,我们学习了关于Python日志记录的基础配置。 本文将深入探讨Python中的日志回滚机制,这是一种高效管理日志文件的方法,特别适用于长时间运行或高流量的应用。 知识点&…

【OS】操作系统课程笔记 第七章 内存管理

目录 7.1 内存管理的功能 7.1.1 内存分配 7.1.2 地址转换 1. 空间的概念 2. 地址转换 7.1.3 存储保护 7.1.4 存储共享 7.1.5 存储扩充 7.2 程序的链接和加载 7.2.1 程序的链接 链接的分类 7.2.2 程序的加载 1. 加载器的功能 2. 装入方式分类 7.3 连续分配方式 7.…

CentOS 7镜像下载;VMware安装CentOS 7;解决新安装的虚拟机没有网络,无法ping通网络的问题

CentOS 7镜像下载;VMware安装CentOS 8.5;解决新安装的虚拟机没有网络,无法ping通网络的问题 CentOS 8.5镜像下载VMware安装CentOS 7解决新安装的虚拟机没有网络,无法ping通网络的问题写入配置文件 CentOS 8.5镜像下载 阿里提供的…

排序 算法(第4版)

本博客参考算法(第4版):算法(第4版) - LeetBook - 力扣(LeetCode)全球极客挚爱的技术成长平台 本文用Java实现相关算法。 我们关注的主要对象是重新排列数组元素的算法,其中每个元素…

NSSCTF题库——web

[SWPUCTF 2021 新生赛]gift_F12 f12后ctrlf找到flag [SWPUCTF 2021 新生赛]jicao——json_decode() 加密后的格式 $json {"a":"php","b":"mysql","c":3}; json必须双引号传输 构造:GET里json{"x"…

【JUC】三、集合的线程安全

文章目录 1、ArrayList集合线程安全问题分析2、解决方式一:Vector或synchronizedList( )3、解决方式二:CopyOnWriteArrayList 写时复制4、HashSet集合线程不安全的分析与解决5、HashMap集合线程不安全的分析与解决 1、ArrayList集合线程安全问题分析 对…

TLP超线程技术

在实现IPL指令级并行的同时实现TLP(Thread Level Parallelism)线程级并行实现多线程有两种主要的方法超线程即同时多线程,在单个处理器或单个核中设置了两套线程状态部件,共享高速缓存和功能部件当两个线程同时需要某个资源时,其中一个线程必…

VuePress介绍及使用指南

VuePress是一个基于Vue.js的静态网站生成工具,它专注于以Markdown为中心的项目文档。VuePress具有简单易用的特性,同时提供了强大的自定义和扩展性。在本文中,我们将介绍VuePress的基本概念,并提供一个简单的使用指南。 什么是Vue…

【C语言】

C语言 1. C语言基础1.1 数据类型和占位符1.2 异或1.3 关键字1.4 const1.5 extern1.6 typedef1.7 static1.8 左值和右值1.9 位进行操作赋值 2. C指针3. 二维数组和指针4. 函数传递二维数组4.1 形参给出第二维的长度。4.2 形参声明为指向数组的指针。4.3 形参声明为指针的指针。 …

快速掌握队列的基础知识

目录 队列的特点基于链表实现队列用栈实现队列用队列实现栈 队列是一种线性数据结构,它只允许在一边进行插入操作(队尾),另一边进行删除操作(队头)。插入操作称为入队,删除操作称为出队。队列遵…

【网络奇缘】我和英特网再续前缘

🌈个人主页: Aileen_0v0🔥系列专栏: 一见倾心,再见倾城 --- 计算机网络~💫个人格言:"没有罗马,那就自己创造罗马~" 目录 计算机网络的概念 计算机网络的功能 ⭐1.数据通信 ⭐2.资源共享 ⭐3.分布式处理 ⭐4.提高可靠性 ⭐…

Java17新增特性

前言 前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15、Java16 的特性进行了介绍,对应的文章如下 Java9新增特性 Java10新增特性 Java11新增特性 Java12新增特性 Java13新增特性 Java14新增特性 Java15新增特性 Java16新增特…

Eclipse打包Springboot项目

首先&#xff0c;在pom.xml文件中添加配置&#xff0c;修改mainClass主函数&#xff1a; <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configurat…

【电路笔记】-戴维南定理(Thevenin‘s Theorem)

戴维南定理&#xff08;Thevenin’s Theorem&#xff09; 文章目录 戴维南定理&#xff08;Thevenins Theorem&#xff09;1、概述与定义2、戴维南模型确定3、一些线性电路的戴维南模型3.1 单电压源3.2 单电流源3.3 多电流/电压源 4、结论 在本文中&#xff0c;我们将介绍一种强…

LLaMA模型之中文词表的蜕变

在目前的开源模型中&#xff0c;LLaMA模型无疑是一颗闪亮的⭐️&#xff0c;但是相对于ChatGLM、BaiChuan等国产大模型&#xff0c;其对于中文的支持能力不是很理想。原版LLaMA模型的词表大小是32K&#xff0c;中文所占token是几百个左右&#xff0c;这将会导致中文的编解码效率…