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

更多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、效果图如下:

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

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

相关文章

ZooKeeper+Kafka+ELK+Filebeat集群搭建实现大批量日志收集和展示

大致流程:将nginx 服务器(web-filebeat)的日志通过filebeat收集之后,存储到缓存服务器kafka,之后logstash到kafka服务器上取出相应日志,经过处理后写入到elasticsearch服务器并在kibana上展示。 一、集群环…

lora微调模版

lora微调模版 1、版一:使用peft包的lora微调(1)设置超参方式一:代码中设置(便于debug)方式二: .sh文件指定 (2)加载数据集I、对应的.jsonl或json文件, 原始格式为&#x…

Kafka简单汇总

Kafka的结构图 多个Parttion共同组成这个topic的所有消息。每个consumer都属于一个consumer group,每条消息只能被consumer group中的一个Consumer消费, 但可以被多个consumer group消费。即组间数据是共享的,组内数据是竞争的。二、消费模型…

PO设计模式详解(Python+selenium+unittest)

一、什么是PO设计模式(Page Object Model) 1、Page Object是一种设计模式,它主要体现在对界面交互细节的封装上,使测试用例更专注于业务的操作,从而提高测试用例的可维护性。 2、一般PO设计模式有三层 第一层&#…

【紫光同创国产FPGA教程】【PGC1/2KG第六章】密码锁实验例程

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处 适用于板卡型号: 紫光同创PGC1/2KG开发平台(盘古1K/2K) 一:盘古1K/2K开发板(紫光同创PGC…

Git图形化界面GUI的使用SSH协议及idea集成Git

前言 图形化界面(GUI,Graphical User Interface)是一种用户与计算机程序或操作系统交互的方式,通过图形元素,如图标、按钮、窗口等,而不是通过命令行来完成操作。GUI的设计旨在让用户通过直观的图形界面进行…

MAC地址注册的原理和应用

MAC地址注册是指在网络设备中,将设备的物理地址(即MAC地址)与设备的IP地址进行关联和注册的过程。MAC地址是以太网卡硬件上的独特标识符,用于在局域网中标识网络设备。 MAC地址注册在网络管理中起到重要作用,它可以帮助…

vue3配置环境变量,小白简单易学

环境变量的意义就是防止我们更新打包的时候写错变量,合并代码这些一系列问题 首先看看效果 左边是本地测试环境,右边是打包后的生产环境,写这个环境变量的好处就是,你在本地开发的时候变量随便改,不会影响生产环境&am…

ChIP在植物领域中的应用

01 什么是ChIP? 染色质免疫共沉淀技术(Chromatin Immunoprecipitation assay,ChIP)是研究体内DNA与蛋白质相互作用的方法。其基本原理是在细胞生理状态下固定蛋白质-DNA复合物,将其随机打断为一定长度范围内的染色质小…

阿里云容器镜像服务的运维总结

一、背景 容器镜像服务,作为一个可选付费产品,主要作用是存储docker的镜像仓库,供k8s拉取到Pod节点里。 你可以自己搭建一个harbor镜像仓库,在公司的开发环境下,将image推送到仓库;然后在生产k8s从仓库拉取…

基于JAX-WS实现RESTful形式的web服务端点(endpoint)

RESTful形式的web服务使用XML/HTTP绑定,实现jakarta.xml.ws.Provider。 服务端的实现类用jakarta.xml.ws.WebServiceProvider和BindingType(valueHTTPBinding.HTTP_BINDING)注释。其中HTTPBinding.HTTP_BINDING表示使用XML/HTTP绑定。 例如: WebServic…

Cesium 点线面实体

1.点 const point viewer.entities.add({ id: point, position: Cesium.Cartesian3.fromDegrees(113, 30), point: { pixelSize: 20, //像素 color: Cesium.Color.DEEPPINK, outlineColor: Cesium.Color.fromCssColorString(#fff), outlineWidth: 2, // 像素 }, }); 2.图标标注…

10 # 手写 every 方法

every 使用 every() 方法测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值。 ele&#xff1a;表示数组中的每一个元素index&#xff1a;表示数据中元素的索引array&#xff1a;表示数组 <script>var arr [1, 3, 5, 7, 8];var result arr.ever…

EDA实验-----3-8译码器设计(QuartusII)

目录 一. 实验目的 二. 实验仪器 三. 实验原理及内容 1.实验原理 2.实验内容 四&#xff0e;实验步骤 五. 实验报告 六. 注意事项 七. 实验过程 1.创建Verilog文件&#xff0c;写代码 ​编辑 2.波形仿真 3.连接电路图 4.烧录操作 一. 实验目的 学会Verilog HDL的…

金融帝国实验室(Capitalism Lab)V10版本即将推出全新公司徽标(2023-11-13)

>〔在即将推出的V10版本中&#xff0c;我们将告别旧的公司徽标&#xff0c;采用全新光鲜亮丽、富有现代气息的设计&#xff0c;与金融帝国实验室&#xff08;Capitalism Lab&#xff09;的沉浸式体验完美互补&#xff01;〕 ————————————— >〔《公司详细信…

了解 SwiftUI 中 StoreKit 2 新功能

文章目录 前言配置项目构建支付功能总结 前言 StoreKit 为我们提供了通过应用程序获得收入的机会。它允许我们设置应用内购买和订阅的购买流程。StoreKit 2 引入了一种基于现代 Swift 的 API&#xff0c;用于构建类型安全的应用内购买。下面我们将开始关于 StoreKit 2 的系列文…

三、机器学习基础知识:Python常用机器学习库(中文文本分析相关库)

文章目录 1、Jieba库1.1 主要函数1.2 词性标注1.3 关键词提取 2、WordCloud库2.1 常见参数2.2 词云绘制 文本分析是指对文本的表示及其特征的提取&#xff0c;它把从文本中提取出来的特征词进行量化来表示文本信息&#xff0c;经常被应用到文本挖掘以及信息检索的过程当中。 1、…

毕业等于失业?那就早点做职业规划

大学生已经不再是稀罕物种了...最佳调侃就是&#xff1a;毕业等于失业....人艰.... 这个只是玩笑&#xff0c;却道破了实质...说到底&#xff0c;找工作依然是竞争关系&#xff0c;跟当年的高考没有什么本质区别....岗位就这么多&#xff0c;毕业生却年年量产.... 哪些找到好…

项目笔记记录

一、node下载版本报错&#xff1a;npm install --legacy-peer-deps 二、Scheduled: 任务自动化调度 Scheduled 标记要调度的方法的注解&#xff0c;必须指定 cron&#xff0c;fixedDelay或fixedRate属性之一 fixedDelay&#xff1a;固定延迟 延迟执行任务&#xff0c;任务在…

Linux ____03、文件类型、属性、修改文件属性(更改文件权限)(命令)

文件类型、属性、修改文件属性 一、文件类型二、文件属性三、修改文件属性1、chgrp&#xff1a;更改文件属组2、chown&#xff1a;更改文件属主&#xff0c;也可以同时更改文件属组3、chmod&#xff1a;更改文件9个属性————————如觉不错&#xff0c;随手点赞&#xff…