若依工作流模型管理模块 - 需求分析+设计文档+接口文档

若依工作流模型管理模块 - 需求分析+设计文档+接口文档

一、需求分析

1. 核心业务背景

该模块是若依(RuoYi-Vue-Plus)框架集成Activiti工作流引擎的核心模块,聚焦流程模型全生命周期管理,解决从模型创建、编辑、部署到导出、转换的全流程管理需求,适配企业级流程设计与执行的业务场景。

2. 核心业务需求

需求分类具体需求点业务价值
模型基础管理1. 新建流程模型(含参数校验)
2. 查询模型列表(分页)
3. 删除模型(批量)
实现流程模型的增删查基础操作,支撑模型库管理
模型编辑与存储1. 保存模型XML配置
2. 查询模型XML编辑内容
适配流程设计器(如bpmn-js)的在线编辑场景,持久化设计结果
模型部署通过模型ID部署流程定义将设计好的模型转换为可执行的流程定义,落地业务流程
模型导出导出模型为ZIP压缩包支持模型备份、离线传输或跨环境迁移
模型转换将已部署的流程定义反向转换为模型支持对已上线流程的二次编辑,无需重新设计

3. 非功能需求

  • 参数校验:所有入参(如模型ID、流程定义ID)需做非空/格式校验,避免无效请求;
  • 防重复提交:新增、修改、删除操作需防重复提交,避免数据异常;
  • 事务控制:批量删除模型需保证事务一致性,失败则回滚;
  • 日志记录:核心操作(新增、修改、部署、删除)需记录业务日志,便于审计;
  • 异常处理:所有操作需返回统一格式结果(成功/失败),前端可友好展示;
  • 兼容性:适配Activiti引擎的模型/流程定义数据结构,保证数据互通。

4. 边界约束

  • 仅管理Activiti的Model(模型)对象,不直接操作流程实例/任务;
  • 模型部署后生成ProcessDefinition(流程定义),需关联模型ID便于追溯;
  • 仅支持单模型导出ZIP,暂不支持批量导出;
  • 反向转换仅支持“流程定义→模型”,不支持模型→流程实例的直接转换。

二、设计文档

1. 架构设计

1.1 分层设计

遵循若依框架的分层架构,模块内部分层如下:

Controller层:ModelController

Service层:IModelService

ServiceImpl层:ModelServiceImpl

Activiti核心API:RepositoryService

数据库:Activiti核心表+若依扩展表

  • Controller层:接收前端请求,做参数校验、请求分发,返回统一响应;
  • Service层:封装核心业务逻辑(如模型部署、转换、导出);
  • Activiti API层:调用Activiti的RepositoryService操作模型/流程定义;
  • 数据层:基于Activiti原生表(act_re_model/act_re_procdef)存储核心数据。
1.2 核心类设计
类名作用核心依赖
ModelController模型管理接口入口IModelServiceRepositoryService
IModelService模型业务逻辑接口-
ModelServiceImpl模型业务逻辑实现RepositoryServiceObjectMapperHttpServletResponse
ModelBo模型请求参数BO封装前端入参(模型名称、key、分类、版本等)
1.3 数据模型设计(核心关联表)
表名作用核心字段
act_re_model存储流程模型基础信息ID_(模型ID)、NAME_(名称)、KEY_(标识)、CATEGORY_(分类)、DEPLOYMENT_ID_(关联部署ID)
act_re_procdef存储部署后的流程定义ID_(流程定义ID)、KEY_(模型标识)、DEPLOYMENT_ID_(部署ID)、VERSION_(版本)
act_ge_bytearray存储模型XML/流程图二进制内容ID_NAME_(资源名称)、BYTES_(二进制内容)、DEPLOYMENT_ID_

2. 核心流程设计

2.1 新建模型流程

前端提交模型参数(名称/key/分类)

Controller参数校验(AddGroup)

Service创建空Model对象

设置模型元信息(名称/key/分类/版本)

校验模型key唯一性

保存模型到act_re_model

初始化模型XML配置并存储到act_ge_bytearray

返回模型信息给前端

2.2 模型部署流程

前端传入模型ID

Controller参数校验(非空)

Service查询模型基础信息

读取模型XML配置并转换为BpmnModel

调用Activiti API创建部署

更新模型的DEPLOYMENT_ID_字段

返回部署结果给前端

3. 关键设计要点

  • 参数校验:通过@Validated+分组(AddGroup/EditGroup)实现新增/编辑场景的差异化校验;
  • 防重复提交:通过@RepeatSubmit注解拦截重复请求,避免重复创建/修改模型;
  • 事务控制:批量删除模型添加@Transactional,保证删除操作的原子性;
  • 统一响应:通过R(若依统一响应类)返回结果,前端可统一解析;
  • 日志审计:通过@Log注解记录操作日志,包含操作类型、标题,支撑审计需求。

三、接口文档

1. 接口基础信息

项名内容
接口前缀/workflow/model
请求方式GET/PUT/POST/DELETE
响应格式JSON(统一响应体R
统一响应体结构```json
{
“code”: 200, // 状态码(200成功,500失败)
“msg”: “操作成功”, // 提示信息
“data”: {} // 业务数据(可选)
}
### 2. 接口详情 #### 2.1 新建模型 - **接口地址**:`POST /workflow/model` - **接口名称**:新建流程模型 - **接口描述**:创建空的流程模型,初始化基础元信息并存储 - **请求参数**(RequestBody): | 参数名 | 类型 | 是否必填 | 说明 | |--------|------|----------|------| | name | String | 是 | 模型名称 | | key | String | 是 | 模型标识(唯一) | | category | String | 否 | 模型分类 | | version | Integer | 否 | 模型版本 | | description | String | 否 | 模型描述 | - **请求示例**: ```json { "name": "采购审批流程", "key": "purchase_approval", "category": "采购管理", "version": 1, "description": "企业采购审批全流程" }
  • 响应示例
{"code":200,"msg":"操作成功","data":{"id":"150001","name":"采购审批流程","key":"purchase_approval","category":"采购管理","version":1,"deploymentId":null}}
2.2 查询模型列表
  • 接口地址GET /workflow/model/list
  • 接口名称:分页查询模型列表
  • 接口描述:根据条件分页查询流程模型列表
  • 请求参数(RequestParam):
    | 参数名 | 类型 | 是否必填 | 说明 |
    |--------|------|----------|------|
    | name | String | 否 | 模型名称(模糊查询) |
    | key | String | 否 | 模型标识(精确查询) |
    | category | String | 否 | 模型分类(精确查询) |
    | pageNum | Integer | 是 | 页码(默认1) |
    | pageSize | Integer | 是 | 页大小(默认10) |
  • 响应示例
{"code":200,"msg":"操作成功","data":{"total":50,"rows":[{"id":"150001","name":"采购审批流程","key":"purchase_approval","category":"采购管理","version":1,"deploymentId":"160001"}]}}
2.3 保存模型XML
  • 接口地址PUT /workflow/model
  • 接口名称:保存模型XML配置
  • 接口描述:保存流程设计器编辑后的模型XML内容
  • 请求参数(RequestBody):
    | 参数名 | 类型 | 是否必填 | 说明 |
    |--------|------|----------|------|
    | modelId | String | 是 | 模型ID |
    | xmlContent | String | 是 | 模型XML配置内容(BPMN 2.0格式) |
  • 请求示例
{"modelId":"150001","xmlContent":"<definitions xmlns=\"http://www.omg.org/spec/BPMN/20100524/MODEL\">...</definitions>"}
  • 响应示例
{"code":200,"msg":"操作成功","data":null}
2.4 查询模型XML内容
  • 接口地址GET /workflow/model/getInfo/{modelId}/xml
  • 接口名称:查询模型XML编辑内容
  • 接口描述:获取指定模型的XML配置,供流程设计器加载
  • 路径参数
    | 参数名 | 类型 | 是否必填 | 说明 |
    |--------|------|----------|------|
    | modelId | String | 是 | 模型ID |
  • 响应示例
{"code":200,"msg":"操作成功","data":{"xmlContent":"<definitions xmlns=\"http://www.omg.org/spec/BPMN/20100524/MODEL\">...</definitions>","modelInfo":{"name":"采购审批流程","key":"purchase_approval"}}}
2.5 模型部署
  • 接口地址POST /workflow/model/deploy/{id}
  • 接口名称:部署流程模型
  • 接口描述:将模型转换为可执行的流程定义
  • 路径参数
    | 参数名 | 类型 | 是否必填 | 说明 |
    |--------|------|----------|------|
    | id | String | 是 | 模型ID |
  • 响应示例
{"code":200,"msg":"部署成功","data":null}
2.6 批量删除模型
  • 接口地址DELETE /workflow/model/{ids}
  • 接口名称:批量删除模型
  • 接口描述:删除指定ID的流程模型(支持批量)
  • 路径参数
    | 参数名 | 类型 | 是否必填 | 说明 |
    |--------|------|----------|------|
    | ids | String[] | 是 | 模型ID数组(多个用逗号分隔,如150001,150002) |
  • 响应示例
{"code":200,"msg":"删除成功","data":null}
2.7 导出模型ZIP
  • 接口地址GET /workflow/model/export/zip/{modelId}
  • 接口名称:导出模型为ZIP包
  • 接口描述:将模型XML和基础信息导出为ZIP压缩包,支持下载
  • 路径参数
    | 参数名 | 类型 | 是否必填 | 说明 |
    |--------|------|----------|------|
    | modelId | String | 是 | 模型ID |
  • 响应说明:直接返回ZIP文件流,前端触发下载
2.8 流程定义转模型
  • 接口地址PUT /workflow/model/convertToModel/{processDefinitionId}
  • 接口名称:流程定义转模型
  • 接口描述:将已部署的流程定义反向转换为可编辑的模型
  • 路径参数
    | 参数名 | 类型 | 是否必填 | 说明 |
    |--------|------|----------|------|
    | processDefinitionId | String | 是 | 流程定义ID |
  • 响应示例
{"code":200,"msg":"转换成功","data":null}

3. 异常响应示例

{"code":500,"msg":"模型标识已存在","data":null}

四、总结

1. 核心亮点

  • 覆盖流程模型全生命周期管理,适配企业级流程设计场景;
  • 遵循若依框架规范,统一参数校验、响应格式、日志审计;
  • 深度集成Activiti引擎,保证模型与流程定义的互通;
  • 接口设计RESTful风格,语义清晰,便于前后端对接。

2. 扩展建议

  • 新增模型版本管理接口,支持模型版本回溯;
  • 新增模型复制接口,减少重复设计成本;
  • 新增模型权限控制,限制不同角色对模型的操作权限;
  • 补充接口入参的格式校验(如模型key的正则校验)。

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

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

相关文章

[独家原创]CPO-VMD-KPCA-CPO-LSTM单变量时序预测 (单输入单输出) matlab代码

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 [独家原创]CPO-VMD-KPCA-CPO-LSTM单变量时序预测 (单输入单输出) 基于冠豪猪算法优化变分模态分解-核主成分分析-冠豪猪算法-长短期记忆网络单变量时序预测 matlab代码 由于之前的图像分析太少&#xff0c;…

AI应用架构实战:上下文工程的数据预处理

AI应用架构实战&#xff1a;上下文工程的数据预处理——让模型“听懂”你的每一句话 关键词 上下文工程 | 数据预处理 | AI应用架构 | 对话系统 | 向量数据库 | 上下文窗口 | 语义分割 摘要 在AI应用&#xff08;如对话系统、知识库问答、个性化推荐&#xff09;中&#xf…

AI大模型产品经理6个月速成路线图:4大学习阶段+12个实战项目+30+学习资源,薪资涨幅超60%!

文章详解了AI大模型产品经理这一黄金岗位的培养路径&#xff0c;提供6个月速成路线图&#xff0c;分4大阶段掌握核心能力。数据显示该岗位平均月薪38K&#xff0c;大模型方向溢价45%&#xff0c;2025年缺口达72万。文章包含12个实战项目、30学习资源&#xff0c;同时提供避坑指…

自然语言处理(NLP)核心知识体系

自然语言处理&#xff08;NLP&#xff09;核心知识体系 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是人工智能&#xff08;AI&#xff09;的重要分支&#xff0c;专注于实现计算机与人类自然语言之间的有效交互&#xff0c;让计算机能够…

[原创]基于VMD-SE-LSTM+Transformer多变量时序预测 Matlab代码

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 [原创]基于变分模态分解结合样本熵结合长短期记忆神经网络Transformer(VMD-SE-LSTMTransformer)多变量时序预测 Matlab代码 采用VMD-SE对输出列进行分解&#xff0c;通过样本熵将个分量划分为高频分量和低频…

当RGB技术遇到高端视听:东芝电视在2026 CES展现对“感官真实”的极致追求

2026年1月6日至9日&#xff0c;全球消费电子行业的年度盛会——CES 2026国际消费电子展在美国拉斯维加斯正式启幕。作为深耕视听领域的领导品牌&#xff0c;东芝电视也亮相本次科技盛会&#xff0c;为来自全球各地的观展人士们精彩地展示了RGB显示技术、自研ZRα光色同控芯、AI…

Matlab 基于蜣螂算法优化高斯过程回归(DBO-GPR)的数据多变量回归预测+交叉验证 (多输入单输出)

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 Matlab 基于蜣螂算法优化高斯过程回归(DBO-GPR)的数据多变量回归预测交叉验证 (多输入单输出) 默认5折&#xff0c;折数可调&#xff01;采用交叉验证一定程度上抑制了过拟合的发生&#xff01; 1.程序已经…

Activiti工作流模型部署全解析(附实战代码)

从0到1&#xff1a;Activiti工作流模型部署全解析&#xff08;附实战代码&#xff09; 在企业级应用开发中&#xff0c;工作流引擎是实现业务流程自动化的核心组件&#xff0c;而Activiti作为开源工作流领域的标杆框架&#xff0c;其模型部署机制直接决定了流程从设计到落地的效…

查询指定任务的办理时间轴

一、接口核心需求分析 你提供的这段代码是Activiti工作流中查询指定任务的办理时间轴接口&#xff0c;核心业务需求如下&#xff1a; 关联查询&#xff1a;根据传入的任务ID&#xff08;taskId&#xff09;&#xff0c;先获取对应的流程实例ID&#xff08;processInstanceId&am…

Matlab 基于蚁群算法优化高斯过程回归(ACO-GPR)的数据多变量回归预测+交叉验证 (多输入单输出)

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 Matlab 基于蚁群算法优化高斯过程回归(ACO-GPR)的数据多变量回归预测交叉验证 (多输入单输出) 默认5折&#xff0c;折数可调&#xff01;采用交叉验证一定程度上抑制了过拟合的发生&#xff01; 1.程序已经…

通过`exclude`排除冲突的Security自动配置类,解决Activiti与若依权限体系的兼容性问题;

你提供的这段代码是若依&#xff08;RuoYi&#xff09;框架集成Activiti后的启动类核心配置&#xff0c;我会先解析这段配置的核心作用&#xff0c;再说明关键细节和扩展优化方向。 一、代码核心需求与作用解析 你编写的RuoYiApplication启动类通过SpringBootApplication的excl…

MYSQL 创建索引

目录 自动索引 手动创建 主键索引 唯一索引 普通索引 创建复合索引 查看索引 删除主键 自动索引 如果我们为一张表添加主键约束、外键约束、唯一约束时&#xff0c;MYSQL会为对应的列自动创建一个索引。如果不指定任何约束时&#xff0c;MYSQL会自动为每一列生成一个索…

Thinkphp和Laravel框架的流浪猫领养系统_ct8whxh8

目录 ThinkPHP与Laravel框架的流浪猫领养系统对比分析系统架构与开发效率功能模块设计数据库与性能优化安全性与社区支持部署与维护 项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理 ThinkPHP与Laravel框架的流浪猫领养系统对比分析 系统架构与开…

MySql 8.0安装教程(windows系统),全网最详细的教程

目录 前言安装步骤安装包下载 前言 MySQL数据库服务是一个完全托管的数据库服务&#xff0c;是目前比较流行的开源数据库来部署云原生应用程序&#xff0c;不管在企业开发&#xff0c;个人开发&#xff0c;学校做项目都是必备的一款工具&#xff0c;并且MySQL是开源的&#…

Tailwind CSS:告别传统CSS,拥抱原子化开发新时代

想象一下&#xff0c;你在开发一个项目时&#xff0c;不再需要为CSS命名而烦恼&#xff0c;不再需要频繁在HTML和CSS文件间切换&#xff0c;更不必担心样式冲突和重复代码——这一切都源于一个名为Tailwind CSS的工具类优先框架。 Tailwind CSS的核心理念是“功能类优先”&…

RK3576基于UVC协议USB摄像头配置指南,手把手教你搞定

瑞芯微RK3576芯片平台基于UVC协议&#xff0c;配置USB摄像头实现即插即用的适配采集功能。演示设备&#xff1a;触觉智能RK3576开发板Purple Pi OH2系统固件为&#xff1a;Buildroot2024其配套RK3576核心板&#xff0c;尺寸40.540.5mm&#xff0c;邮票孔封装&#xff0c;支持LP…

性能指标笔记

网络指标 TTFB Time to First Byte 衡量请求资源到响应第一个字节开始到达之间的时间&#xff0c;结合 网络 面吧的资源请求耗时&#xff0c;可以判断主要延迟在哪一层。 关于 Network 网络面板&#xff1a; Queued at&#xff1a;表示请求何时入队&#xff0c;如果是 HTTP/1…

Thinkphp和Laravel框架的海关出入口货物报关统筹管理系统_szdhjj06

目录摘要概述技术架构对比核心功能模块性能与安全优化实施效果与扩展性项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要概述 ThinkPHP和Laravel框架在海关出入口货物报关统筹管理系统中的应用&#xff0c;展现了现代PHP框架在复杂业务场景下的…

ubuntu系统_每天定时23:00 定时关机_怎么实现

在Ubuntu系统中设置每天23:00定时关机&#xff0c;最可靠的方法是使用系统内置的 cron 服务。下面的表格汇总了实现步骤和关键要点&#xff0c;你可以快速了解整个过程。步骤核心操作说明/命令示例1. 编辑计划任务终端中输入 sudo crontab -e使用 sudo 获取root权限&#xff0c…

HTML 表单元素与 React 中的其他 DOM 元素有所不同

React 表单与事件 本章节我们将讨论如何在 React 中使用表单。 HTML 表单元素与 React 中的其他 DOM 元素有所不同,因为表单元素生来就保留一些内部状态。 在 HTML 当中&#xff0c;像 <input>, <textarea>, 和 <select> 这类表单元素会维持自身状态&…