張家銘,周 杰,2,周北平
(1.南京信息工程大學 電子與信息工程學院,江蘇 南京 210044;2.日本國立新瀉大學 電氣電子工學科,日本 新瀉 950-2181;3.南京信息工程大學 圖書館,江蘇 南京 210044)
近年來,中國高度重視勞動教育的發展,并指出“把勞動教育納入人才培養的全過程,貫通大中小學各學段”[1]。教育部明確提出要整體優化學校課程設置,將勞動教育納入普通高等學校人才培養方案[2]。普通高等學校要明確勞動教育主要依托課程,其中本科階段不少于32 學時[3]。除勞動教育必修課程外,其他課程結合學科、專業特點,有機融入勞動教育內容[4]。根據以上,勞動教育平臺被設計并實現,主要目的是提高學校對學生勞動實踐、勞動文化學習的管理質量,方便學生學習勞動教育。
隨著高校信息化平臺建設快速發展,部分平臺為高校信息化進程做出了一定貢獻。苗陽[5]等人給出系統的基本架構并提出系統與相關服務體系數據共享、在線互聯,但是系統采用傳統的單體版結構,可擴展性受到一定限制,可靠性和容錯性比較低,若引用新技術棧需要對整個系統進行重構,而且團隊開發協調困難,部署較為復雜。李永成[6]等人提出包含多種推薦引擎的智能微服務為底層的高校隱性教育資源云共享系統,通過智能推薦算法來建立推薦模型,結合AI、大數據等技術實現以海量數據支持為特點的云共享系統。這種設計貼合實際,但是實現起來比較繁瑣,需要耗費大量的開發成本,且后期維護成本較高。
為避免單體版的缺點,并簡化開發成本,加快開發速度,本文設計了基于RuoYi-Cloud 快速開發平臺的勞動教育系統。本系統通過使用RuoYi-Cloud 框架,實現勞動教育系統的高度集成和模塊化,降低了開發難度和維護成本。同時,模塊化設計使得系統具有更好的可擴展性和靈活性。此外,利用平臺的可視化設計工具,為勞動教育系統打造了直觀、易用的用戶界面,給用戶帶來良好體驗。
RuoYi 是一個企業級快速開發框架,基于經典技術組合,主要目的是讓開發者專注業務,縮短項目周期,提高軟件安全質量[7]。RuoYi 開發框架包含單體版、前后分離版RuoYi-Vue、微服務版RuoYi-Cloud,本平臺使用的是微服務版本。
框架主要的特性包括完全響應式布局,支持多端移動設備;支持多數據源,比如MySQL、Oracle 等,簡單配置即可切換;二次封裝JS,簡化JS 代碼,方便后期維護;提供了SQL 注入、XSS 攻擊等安全防護機制,保證了系統的安全性;Maven 多項目依賴,模塊及插件分項目,盡量松耦合,方便模塊升級、增減模塊[8];支持操作日志和異常日志的記錄,方便開發者進行問題定位和系統優化;支持內存監控、CPU 監控、磁盤監控等功能。
RuoYi-Cloud 微服務框架的技術架構如圖1 所示,微服務框架代替傳統單體結構,主要面向內在服務,模塊間邊緣結構清晰[9],通過輕量API 接口互相調用,前端通過微服務網關調用后端,實現集群的負載。

圖1 RuoYi 框架架構
平臺使用微服務分布式系統架構,將選課、在線學習、成績統計等功能細化到離散的服務中,減少系統間的耦合性,系統架構如圖2 所示。分離的微服務減少各層之間的依賴,可以獨立部署,服務之間可以通過標準化的輕量級互聯網協議(如HTTP)或者消息傳遞協議(如RabbitMQ)通信,每個微服務都包含各自的用戶處理功能、業務邏輯和后端功能,微服務架構極大地提升了系統的擴展性,降低了系統的維護成本。微服務具有一定的容錯性,松耦合的架構決定某一組件的故障不一定會導致整個系統的癱瘓,其正常運行的服務還可以滿足用戶的請求[10]。

圖2 微服務分布式系統架構
API 網關層是微服務結構中的入口,可以提供身份驗證、授權、請求轉換、緩存等功能。服務應用層是整個架構的核心,包含一組獨立、自治的微服務[11]。每個微服務負責特定的業務功能,可以獨立開發、部署和擴展,微服務之間通過輕量級的通信機制進行交互?;A服務層包括服務注冊與發現,負載均衡、故障恢復、監控和日志等基礎設施組件,這些組件支持微服務的運行和管理。存儲技術層中使用存儲數據庫MySQL 和緩存數據庫Redis,每個微服務都有獨立的數據存儲,主要負責存儲和管理微服務所需要的數據。支持服務層提供了一些基礎設施和支持服務,幫助微服務的開發、部署和運行[12],包括服務注冊與發現、配置管理、負載均衡、故障恢復等。運行資源層提供了運行微服務的服務器和網絡基礎設施,包括交換機和路由器。CI/CD 層提供了自動化構建、測試、部署和交付流程,以支持微服務的快速迭代。
2.2.1 角色和用戶的設計
勞動教育系統為滿足學校、教師對學生的勞動教育管理,以及學生使用勞動教育系統的需求,設定分層登錄用戶,分別是系統管理員、學校管理員、學院管理員、教師、學生5 種角色??紤]到用戶的角色定位不同,需要給用戶授權自己職責范圍內的功能,角色功能如圖3所示。其中系統管理員的權限最高,可以對登錄的用戶進行操作,并且授權一定的數據權限給教師和學生。

圖3 角色功能
2.2.2 模塊功能的設計
系統包括三大模塊:課程管理模塊、成績管理模塊、系統管理模塊,課程管理模塊如圖4 所示。課程管理模塊包括學習功能、選課功能、已選課程管理功能等;成績管理模塊包括成績統計功能、成績考核功能、課程預警功能等;系統管理模塊主要分為用戶和角色管理功能、部門和崗位管理功能、登錄日志管理功能、系統監控和系統工具、通知公告、校園地圖以及數據分析。

圖4 課程管理模塊流程圖
RuoYi 框架的持久層基于MyBatis,支持定制化SQL、存儲過程以及高級映射。MyBatis 高度自動化,幾乎避免所有的JDBC 代碼和手動參數設置以及獲取結果集的過程[13]。MyBatis 只需簡單注解,實現類即可調用Mapper,Mapper 再映射到XML 文件中的SQL 語句與數據庫交互。
數據庫由52 張表構成,分為RuoYi-Cloud 框架基本表、業務模塊表以及中間表,52 個數據庫表如圖5所示。

圖5 數據庫表
系統采用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。
以學習管理模塊為例,模塊主要從下面幾個層面來實現上述功能。
控制層:SysPracticeController 類上標有注解@Controller 表示此類是控制層,注解@RequestMapping(“/system/prac”)表示請求映射路徑。方法上也標有注解 @Post-Mapping、@GetMapping、@PutMapping、@DeleteMapping是RESTFUL 風格[15],表示不同的請求方法。
Domain 層:對應數據庫字段的JavaBean 類。包括屬性、get 和set 方法以及toString 方法。
業務層:業務層包括接口和實現類,主要處理模塊的功能邏輯和具體業務,以實現完整的功能結構。
Mapper 接口:Mapper 接口可以實現業務與數據庫的交互。Mapper 接口方法對應的XML 文件中SQL語句。
學生選課一般集中在同一時間,這種高并發場景下,系統會瞬時增加大量的請求給數據持久層造成較大壓力。如果直接響應這些請求,取出數據庫中的數據,很容易造成持久層崩潰。為緩解數據持久層的壓力,在數據庫上層增加一層緩存Biz Cache,使用Redis 緩存提高數據訪問效率和性能。
Redis 存儲方案有兩種。第一種是緩存局部數據[16],如圖6 所示,只壓縮存儲關鍵字段的信息。優點是節省Redis 的存儲空間。缺點是需要二次回查獲取更細致的信息。

圖6 緩存局部數據邏輯
第二種是緩存完整數據,如圖7 所示,壓縮存儲所有字段信息。優點是數據交互和redis 有關系,持久層只具備數據備份的功能,持久層緩存失效。缺點是所需要的存儲成本和設備成本要求更高。

圖7 緩存完整數據邏輯
一般查詢情況下,除選課等查詢量較大情形之外,可以不加入Biz Cache,只需要數據庫負責數據交互。當選課人數較多時,開發人員可以利用服務監控判斷是否加入Biz Cache,以此提高系統性能。
在線學習功能需要提供技術支持,要滿足包括平臺的穩定性、學習資源的可靠性、學習過程的流暢性等方面的要求。實現在線視頻學習功能主要有下面幾個流程。
(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 等找到學習視頻開始播放學習。
校園地圖模塊中支持校園3D 地圖和2D 地圖,如圖9 所示,3D 地圖具有查看建筑的細節及形狀的功能,2D地圖具有總攬學校建筑分布情況的功能,兩種類型地圖都可以點擊建筑、區域等查看具體的建筑信息。模塊還加入交通導航、街景、360 實景等功能。

圖9 校園地圖界面
數據分析界面中直觀展示學生的學習數據,如圖10所示。根據界面上的數據可以有效分析學生的學習情況,方便教師及時掌握學生的學習狀態。

圖10 學習情況分析界面
學生選課界面如圖11 所示。

圖11 學生端選課界面
學生在線學習界面如圖12 所示。

圖12 學生端在線學習界面
教師查看學生選課情況的界面如圖13 所示。

圖13 教師端查看學生選課情況界面
教師查看學生所選課程成績的界面如圖14 所示。

圖14 教師端查看學生課程成績界面
教師查看學生所選課程完成情況的界面如圖15所示。

圖15 教師端查看學生課程完成情況界面
本文設計的勞動教育管理系統已經通過測試。本系統通過Docker 部署運行,學生和教師通過瀏覽器端登錄系統。學生可以使用本系統進行選課、在線學習,教師可以發布選課信息、發布成績信息、管理選課信息,系統實現的功能達到預期目標。基于RuoYi-Cloud 開發平臺的勞動教育管理系統具有適用范圍廣、可擴展性強、穩定性高、開發成本低等特點,為高校信息化建設和學生勞動教育的推廣提供有益的探索。
本系統使用RuoYi-Cloud 企業級開發平臺,相較于傳統的開發方式,平臺有簡化開發步驟、節省開發成本等優點,開發者使用本平臺可以達到快速開發的目的。系統具有良好的用戶體驗和功能完善性,滿足日常勞動教育管理的需求。勞動教育系統能夠提高勞動教育的管理效率,促進學生勞動教育的全面發展。理論意義上,本研究為RouYi 開發平臺在勞動教育領域的應用提供了實踐經驗??傊赗uoYi-Cloud 開發平臺設計的勞動教育系統為勞動教育管理提供了一種有效的解決方案,有望推動勞動教育事業的持續發展。