基于RuoYi-Cloud 的劳动教育平台建设*
2024-04-18张家铭周北平
张家铭,周 杰,2,周北平
(1.南京信息工程大学 电子与信息工程学院,江苏 南京 210044;2.日本国立新泻大学 电气电子工学科,日本 新泻 950-2181;3.南京信息工程大学 图书馆,江苏 南京 210044)
0 引言
近年来,中国高度重视劳动教育的发展,并指出“把劳动教育纳入人才培养的全过程,贯通大中小学各学段”[1]。教育部明确提出要整体优化学校课程设置,将劳动教育纳入普通高等学校人才培养方案[2]。普通高等学校要明确劳动教育主要依托课程,其中本科阶段不少于32 学时[3]。除劳动教育必修课程外,其他课程结合学科、专业特点,有机融入劳动教育内容[4]。根据以上,劳动教育平台被设计并实现,主要目的是提高学校对学生劳动实践、劳动文化学习的管理质量,方便学生学习劳动教育。
随着高校信息化平台建设快速发展,部分平台为高校信息化进程做出了一定贡献。苗阳[5]等人给出系统的基本架构并提出系统与相关服务体系数据共享、在线互联,但是系统采用传统的单体版结构,可扩展性受到一定限制,可靠性和容错性比较低,若引用新技术栈需要对整个系统进行重构,而且团队开发协调困难,部署较为复杂。李永成[6]等人提出包含多种推荐引擎的智能微服务为底层的高校隐性教育资源云共享系统,通过智能推荐算法来建立推荐模型,结合AI、大数据等技术实现以海量数据支持为特点的云共享系统。这种设计贴合实际,但是实现起来比较繁琐,需要耗费大量的开发成本,且后期维护成本较高。
为避免单体版的缺点,并简化开发成本,加快开发速度,本文设计了基于RuoYi-Cloud 快速开发平台的劳动教育系统。本系统通过使用RuoYi-Cloud 框架,实现劳动教育系统的高度集成和模块化,降低了开发难度和维护成本。同时,模块化设计使得系统具有更好的可扩展性和灵活性。此外,利用平台的可视化设计工具,为劳动教育系统打造了直观、易用的用户界面,给用户带来良好体验。
1 RuoYi-Cloud 开发框架
1.1 RuoYi-Cloud 开发框架特点
RuoYi 是一个企业级快速开发框架,基于经典技术组合,主要目的是让开发者专注业务,缩短项目周期,提高软件安全质量[7]。RuoYi 开发框架包含单体版、前后分离版RuoYi-Vue、微服务版RuoYi-Cloud,本平台使用的是微服务版本。
框架主要的特性包括完全响应式布局,支持多端移动设备;支持多数据源,比如MySQL、Oracle 等,简单配置即可切换;二次封装JS,简化JS 代码,方便后期维护;提供了SQL 注入、XSS 攻击等安全防护机制,保证了系统的安全性;Maven 多项目依赖,模块及插件分项目,尽量松耦合,方便模块升级、增减模块[8];支持操作日志和异常日志的记录,方便开发者进行问题定位和系统优化;支持内存监控、CPU 监控、磁盘监控等功能。
1.2 RuoYi-Cloud 开发框架技术选型
RuoYi-Cloud 微服务框架的技术架构如图1 所示,微服务框架代替传统单体结构,主要面向内在服务,模块间边缘结构清晰[9],通过轻量API 接口互相调用,前端通过微服务网关调用后端,实现集群的负载。
图1 RuoYi 框架架构
2 劳动教育系统设计
2.1 系统架构设计
平台使用微服务分布式系统架构,将选课、在线学习、成绩统计等功能细化到离散的服务中,减少系统间的耦合性,系统架构如图2 所示。分离的微服务减少各层之间的依赖,可以独立部署,服务之间可以通过标准化的轻量级互联网协议(如HTTP)或者消息传递协议(如RabbitMQ)通信,每个微服务都包含各自的用户处理功能、业务逻辑和后端功能,微服务架构极大地提升了系统的扩展性,降低了系统的维护成本。微服务具有一定的容错性,松耦合的架构决定某一组件的故障不一定会导致整个系统的瘫痪,其正常运行的服务还可以满足用户的请求[10]。
图2 微服务分布式系统架构
API 网关层是微服务结构中的入口,可以提供身份验证、授权、请求转换、缓存等功能。服务应用层是整个架构的核心,包含一组独立、自治的微服务[11]。每个微服务负责特定的业务功能,可以独立开发、部署和扩展,微服务之间通过轻量级的通信机制进行交互。基础服务层包括服务注册与发现,负载均衡、故障恢复、监控和日志等基础设施组件,这些组件支持微服务的运行和管理。存储技术层中使用存储数据库MySQL 和缓存数据库Redis,每个微服务都有独立的数据存储,主要负责存储和管理微服务所需要的数据。支持服务层提供了一些基础设施和支持服务,帮助微服务的开发、部署和运行[12],包括服务注册与发现、配置管理、负载均衡、故障恢复等。运行资源层提供了运行微服务的服务器和网络基础设施,包括交换机和路由器。CI/CD 层提供了自动化构建、测试、部署和交付流程,以支持微服务的快速迭代。
2.2 系统功能设计
2.2.1 角色和用户的设计
劳动教育系统为满足学校、教师对学生的劳动教育管理,以及学生使用劳动教育系统的需求,设定分层登录用户,分别是系统管理员、学校管理员、学院管理员、教师、学生5 种角色。考虑到用户的角色定位不同,需要给用户授权自己职责范围内的功能,角色功能如图3所示。其中系统管理员的权限最高,可以对登录的用户进行操作,并且授权一定的数据权限给教师和学生。
图3 角色功能
2.2.2 模块功能的设计
系统包括三大模块:课程管理模块、成绩管理模块、系统管理模块,课程管理模块如图4 所示。课程管理模块包括学习功能、选课功能、已选课程管理功能等;成绩管理模块包括成绩统计功能、成绩考核功能、课程预警功能等;系统管理模块主要分为用户和角色管理功能、部门和岗位管理功能、登录日志管理功能、系统监控和系统工具、通知公告、校园地图以及数据分析。
图4 课程管理模块流程图
2.3 持久层与存储设计
RuoYi 框架的持久层基于MyBatis,支持定制化SQL、存储过程以及高级映射。MyBatis 高度自动化,几乎避免所有的JDBC 代码和手动参数设置以及获取结果集的过程[13]。MyBatis 只需简单注解,实现类即可调用Mapper,Mapper 再映射到XML 文件中的SQL 语句与数据库交互。
数据库由52 张表构成,分为RuoYi-Cloud 框架基本表、业务模块表以及中间表,52 个数据库表如图5所示。
图5 数据库表
3 劳动教育系统实现
3.1 技术选型
系统采用RuoYi-Cloud 企业级开发框架开发,使用Java 语言编写,系统环境是Java EE、Servlet、Apache Maven。后端框架使用SpringBoot、SpringMVC 以及Apache Shrio,SpringBoot 技术相对于Spring 极大简化配置,方便开发[14]。持久层框架是Apache MyBatis、Hibernate Validation 以及Alibaba Druid,前端使用Thymeleaf引擎模板、Bootstrap 框架和Vue3,存储数据库采用MySQL,缓存数据库使用Redis,开发工具主要使用IDEA 和Navicat。
3.2 模块实现
以学习管理模块为例,模块主要从下面几个层面来实现上述功能。
控制层:SysPracticeController 类上标有注解@Controller 表示此类是控制层,注解@RequestMapping(“/system/prac”)表示请求映射路径。方法上也标有注解 @Post-Mapping、@GetMapping、@PutMapping、@DeleteMapping是RESTFUL 风格[15],表示不同的请求方法。
Domain 层:对应数据库字段的JavaBean 类。包括属性、get 和set 方法以及toString 方法。
业务层:业务层包括接口和实现类,主要处理模块的功能逻辑和具体业务,以实现完整的功能结构。
Mapper 接口:Mapper 接口可以实现业务与数据库的交互。Mapper 接口方法对应的XML 文件中SQL语句。
3.3 选课系统
学生选课一般集中在同一时间,这种高并发场景下,系统会瞬时增加大量的请求给数据持久层造成较大压力。如果直接响应这些请求,取出数据库中的数据,很容易造成持久层崩溃。为缓解数据持久层的压力,在数据库上层增加一层缓存Biz Cache,使用Redis 缓存提高数据访问效率和性能。
Redis 存储方案有两种。第一种是缓存局部数据[16],如图6 所示,只压缩存储关键字段的信息。优点是节省Redis 的存储空间。缺点是需要二次回查获取更细致的信息。
图6 缓存局部数据逻辑
第二种是缓存完整数据,如图7 所示,压缩存储所有字段信息。优点是数据交互和redis 有关系,持久层只具备数据备份的功能,持久层缓存失效。缺点是所需要的存储成本和设备成本要求更高。
图7 缓存完整数据逻辑
一般查询情况下,除选课等查询量较大情形之外,可以不加入Biz Cache,只需要数据库负责数据交互。当选课人数较多时,开发人员可以利用服务监控判断是否加入Biz Cache,以此提高系统性能。
3.4 在线学习模块
在线学习功能需要提供技术支持,要满足包括平台的稳定性、学习资源的可靠性、学习过程的流畅性等方面的要求。实现在线视频学习功能主要有下面几个流程。
(1)在Controller 层调用方法Video,最后返回Thymeleaf 模板的Video 页面,Video 方法时序逻辑如图8所示。请求参数是课程ID,根据课程ID 可以获取到课程信息和腾讯云中的AppID,将得到的课程信息和AppID分别放入Map 集合。
图8 Video 方法时序逻辑图
(2)课程信息得到的过程是:接口实现类中的方法先调用Mapper 方法,Mapper 方法在XML 文件中根据ID找到对应的SQL 语句在数据库执行。
(3)返回记录包括的字段有课时ID、课程ID、课时序号、课时名称、课时简介、文件路径、封面路径、在线播放URL 等。前端根据收到的文件路径、封面路径、在线播放URL 等找到学习视频开始播放学习。
4 前端实现
4.1 模块界面
校园地图模块中支持校园3D 地图和2D 地图,如图9 所示,3D 地图具有查看建筑的细节及形状的功能,2D地图具有总揽学校建筑分布情况的功能,两种类型地图都可以点击建筑、区域等查看具体的建筑信息。模块还加入交通导航、街景、360 实景等功能。
图9 校园地图界面
数据分析界面中直观展示学生的学习数据,如图10所示。根据界面上的数据可以有效分析学生的学习情况,方便教师及时掌握学生的学习状态。
图10 学习情况分析界面
4.2 学生端界面
学生选课界面如图11 所示。
图11 学生端选课界面
学生在线学习界面如图12 所示。
图12 学生端在线学习界面
4.3 教师端界面
教师查看学生选课情况的界面如图13 所示。
图13 教师端查看学生选课情况界面
教师查看学生所选课程成绩的界面如图14 所示。
图14 教师端查看学生课程成绩界面
教师查看学生所选课程完成情况的界面如图15所示。
图15 教师端查看学生课程完成情况界面
5 系统效果
本文设计的劳动教育管理系统已经通过测试。本系统通过Docker 部署运行,学生和教师通过浏览器端登录系统。学生可以使用本系统进行选课、在线学习,教师可以发布选课信息、发布成绩信息、管理选课信息,系统实现的功能达到预期目标。基于RuoYi-Cloud 开发平台的劳动教育管理系统具有适用范围广、可扩展性强、稳定性高、开发成本低等特点,为高校信息化建设和学生劳动教育的推广提供有益的探索。
6 结论
本系统使用RuoYi-Cloud 企业级开发平台,相较于传统的开发方式,平台有简化开发步骤、节省开发成本等优点,开发者使用本平台可以达到快速开发的目的。系统具有良好的用户体验和功能完善性,满足日常劳动教育管理的需求。劳动教育系统能够提高劳动教育的管理效率,促进学生劳动教育的全面发展。理论意义上,本研究为RouYi 开发平台在劳动教育领域的应用提供了实践经验。总之,基于RuoYi-Cloud 开发平台设计的劳动教育系统为劳动教育管理提供了一种有效的解决方案,有望推动劳动教育事业的持续发展。