1. 项目背景与核心需求
科技学院OA系统的设计与实现是一个典型的校园信息化建设项目。作为在高校信息化领域深耕多年的从业者,我参与过多个类似系统的开发实施。这类项目最核心的需求可以归纳为三点:流程电子化、数据集中化和服务移动化。
传统高校行政办公存在纸质审批流转慢、数据孤岛严重、跨部门协作效率低等痛点。以科技学院为例,日常涉及的请假审批、科研经费报销、设备采购等流程,过去完全依赖纸质单据流转,一个简单审批可能耗时数周。而OA系统的核心价值就在于将这些线下流程全面数字化。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术选型考量
在架构设计阶段,我们采用了经典的B/S三层架构:
- 前端:Vue.js + Element UI
- 后端:Spring Boot + MyBatis
- 数据库:MySQL 8.0
选择这套技术栈主要基于以下考虑:
- 高校IT团队技术储备普遍以Java为主,Spring Boot的学习曲线平缓
- Vue+Element UI组合能快速构建符合高校审美的管理界面
- MySQL在高校场景下的license成本优势明显
特别要说明的是,我们没有选择微服务架构。虽然微服务在理论上更适合OA这类多模块系统,但考虑到科技学院实际运维能力和日均2000左右的并发量,单体架构+模块化设计反而是更务实的选择。
2.2 核心模块设计
系统主要包含6个核心模块:
- 统一身份认证
- 流程引擎
- 文档中心
- 消息通知
- 移动端适配
- 数据看板
其中流程引擎模块采用了Activiti工作流引擎,这是经过多个项目验证的稳定选择。相比自行开发工作流引擎,Activiti提供了完整的流程定义、执行和监控能力,大幅降低了开发风险。
3. 关键实现细节
3.1 流程引擎集成
Activiti与Spring Boot的集成有几个技术要点需要注意:
java复制// 配置数据源时需要指定activiti专用schema
spring:
activiti:
database-schema-update: true
db-history-used: true
history-level: audit
在流程定义环节,我们采用了XML+可视化设计器双模式。
