作者:友为软件 · 后端开发工程师
技术栈:Spring Boot + MyBatis Plus + Activiti + MinIO + Vue3
最近半年,我主导开发了一套企业知识产权(IP)管理系统,核心模块之一就是专利全生命周期管理。
和市面上通用OA不同,这套系统要同时满足:
- 业务灵活性(专利/软著/商标三类IP独立又关联)
- 流程严谨性(提案→审批→跟踪→验收→付款闭环)
- 合规可审计(每一步操作留痕,支持IPO尽调)
今天想从技术实现角度,聊聊我们是怎么设计的,踩了哪些坑,又有哪些值得借鉴的设计。
一、核心模型设计:一个IP,三种形态
我们抽象出ip_proposal(知识产权提案)作为主表,通过ip_type字段区分:
PATENT(发明/实用新型/外观/布图设计)COPYRIGHT(软件著作权/作品)TRADEMARK
但每种类型有独立扩展表,比如:
patent_detail:含申请号、IPC分类号、优先权日等copyright_detail:含作品类型、首次发表日期trademark_detail:含类别、图样存储路径
✅ 优势:
- 共用审批流、状态机、权限控制
- 扩展字段隔离,避免大宽表
- 新增IP类型只需加一张detail表 + 配置路由
二、流程引擎选型:为什么用 Activiti?
最初考虑自研状态机,但发现:
- 审批节点动态(会签/或签/退回)
- 需要支持“发起验收”“重新提交”等跨阶段跳转
最终选用Activiti 7,原因:
- 支持 BPMN 2.0 标准,流程可视化
- 与 Spring Boot 集成成熟
- 可动态挂起/恢复流程(应对UAT变更)
⚠️ 坑点:Activiti 默认不支持“多实例并行会签+部分同意即过”,我们通过自定义
TaskListener实现。
三、文件管理:如何安全存证?
专利过程需上传:
- 技术交底书
- 受理通知书
- 授权证书
- 缴费凭证
我们采用:
- MinIO 对象存储(私有化部署,替代OSS)
- 文件与提案ID强绑定
- 上传时自动记录哈希值,防篡改
- 验收环节校验“是否已上传必要文件”(通过规则引擎 Drools 配置)
四、状态同步:如何让“业务跟踪”不混乱?
每个提案有主状态(如“审批中”“实审中”“已授权”),
但业务人员还需维护子信息(如缴费截止日、代理机构)。
我们设计:
- 主状态由流程引擎驱动(不可手动改)
- 业务字段由用户维护,但每次更新触发事件通知
- 系统自动计算“下次官方 deadline”,提前7天发预警(集成 Quartz)
五、付款联动:如何对接财务?
验收通过后,自动生成ip_payment_request记录,
包含:
- 关联提案ID
- 费用类型(官费/代理费/年费)
- 预算科目
- 发票状态
财务在“IP付款单”列表中一键发起报销,
数据同步至费控系统(通过 REST API + 消息队列保证一致性)。
💡 总结:技术为业务服务
这套系统最难的不是代码,而是理解IP管理的业务逻辑:
- 法务关心权属和风险
- 财务关心费用和凭证
- 管理层关心资产和布局
而我们的角色,就是用技术把模糊的“管理要求”,变成清晰的“系统规则”。
如果你也在做类似系统,欢迎交流架构设计!
(附:系统界面脱敏截图 + 流程图)
#专利管理系统 #知识产权 #Activiti #SpringBoot #企业级应用 #CSDN