梁海祥,禤順,鄧建婷,洪麗娜,陳正銘*
(1.廣東煙草韶關(guān)市有限公司,廣東 韶關(guān) 512005;2.韶關(guān)學(xué)院,廣東 韶關(guān) 512005)
信息驅(qū)動社會發(fā)展,成為社會發(fā)展的“助推器”。傳統(tǒng)線下的黨建活動模式隨著活動需求的增多,變得愈發(fā)煩瑣,逐漸發(fā)酵出各支點審核耗費時間長、活動數(shù)據(jù)標準統(tǒng)一難、黨建工作管理和服務(wù)水平有待提高等問題。應(yīng)社會信息化、智能化、網(wǎng)絡(luò)化之景,通過設(shè)計智慧黨建平臺,把現(xiàn)實中的黨組織體系映射到智慧空間,將黨建工作“橫向到邊,縱向到底”全面覆蓋,實現(xiàn)用數(shù)據(jù)記錄、用數(shù)據(jù)決策、用數(shù)據(jù)創(chuàng)新,實現(xiàn)黨組織信息化全覆蓋、多層級管理結(jié)構(gòu)、多支流交辦業(yè)務(wù),實現(xiàn)對下級黨組織、黨員以及黨務(wù)活動底子清、情況明、數(shù)據(jù)實、工作落實到位,切實提升基層黨建工作成效。
設(shè)計目標為實現(xiàn)將黨員工作進行網(wǎng)絡(luò)化、數(shù)字化和智能化,為基層黨組織和黨員提供便捷的網(wǎng)上辦事功能,如黨建宣傳、黨建學(xué)習(xí)、黨組織生活等,提高了黨建效率和黨務(wù)工作的透明度。具體設(shè)計原則如下:
1)安全性。系統(tǒng)采用全面的身份驗證模式,設(shè)計時借鑒市場上成熟的身份鑒權(quán)模式,實現(xiàn)讓“正確的人”通過“正確的終端”在“授權(quán)的網(wǎng)絡(luò)位置”基于“正確的權(quán)限”訪問到“正確的業(yè)務(wù)和數(shù)據(jù)”,保證了系統(tǒng)運行安全和數(shù)據(jù)安全。
2)規(guī)范性。系統(tǒng)中所采用的網(wǎng)絡(luò)傳輸協(xié)議、接口協(xié)議、媒體文件協(xié)議等符合國家標準、行業(yè)標準、公安部頒發(fā)的技術(shù)規(guī)范,保證了系統(tǒng)各個模塊可以順利協(xié)作。
3)成熟性。設(shè)計開發(fā)時,借鑒市面上成熟且市場占有率高的信息管理平臺,采用開源的、使用率高的、擁有良好生態(tài)的技術(shù)框架進行系統(tǒng)搭建,創(chuàng)建出一個符合實際業(yè)務(wù)需求且成熟可靠的黨建信息平臺。
4)可拓展性。系統(tǒng)設(shè)計秉承低耦合高內(nèi)聚的設(shè)計思想,在保證系統(tǒng)各個功能模塊的正常運行下,盡可能減少模塊之間的依賴程度,可以輕松擴展模塊的新功能,而不對其他模塊造成重大影響,使得系統(tǒng)具有高實用性和高可拓展性。
開發(fā)采用Visual Studio Code,框架采用Vue、Vuex、Vue-Router、ElementUI。Vue 是一套漸進式框架,主要用于構(gòu)建用戶界面,它可以通過雙向綁定數(shù)據(jù)使數(shù)據(jù)的操作變得方便,通過組件化開發(fā)來減少代碼的編寫量,通過自身響應(yīng)式的優(yōu)勢,使網(wǎng)頁跨設(shè)備也能盡顯其美。Vuex是為vue.js開發(fā)提供的狀態(tài)管理工具,項目開發(fā)時會頻繁地使用組件傳參的方式來同步data 中的值,但一旦項目變得很龐大,管理和維護這些值將是相當(dāng)棘手的工作。因此需要使用Vuex 對項目進行統(tǒng)一管理。而在交互體驗方面,使用Vue-Router路由很好起到防止頁面刷新的效果。ElementUI是一個簡潔、直觀、豐富的前端組件,能減少程序員對常用組件的封裝,能更快速、簡單地開發(fā)Web 應(yīng)用程序。
服務(wù)端開發(fā)采用選用Java 語言,開發(fā)框架采用SpringBoot、MyBatis、Shiro、Maven、Hutool。Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java 語言具有功能強大和簡單易用兩個特征[1]。SpringBoot是一個基于Spring 框架的開發(fā)框架[2],旨在簡化Spring 應(yīng)用程序的開發(fā)和部署,它提供了一系列開箱即用的功能,如自動配置、內(nèi)置的依賴管理、安全性配置等。MyBatis是一個Java 的持久化框架,它通過配置文件和注解將SQL 語句與Java 代碼解耦。Apache Shiro是一個Java的安全框架,它提供了身份認證、授權(quán)、加密和會話管理等功能。Maven是一個Java的構(gòu)建工具,它用于自動化構(gòu)建、測試、發(fā)布等開發(fā)過程中的任務(wù)。Maven 提供了一個中央倉庫,可以方便地管理項目的依賴關(guān)系,并且具有豐富的插件生態(tài),可以方便地定制構(gòu)建流程。Hutoo是一個Java 的工具類庫,它提供了大量的實用工具類和方法,涵蓋了日期處理、文件操作、HTTP 請求、圖片操作等各個方面。
進行智慧黨建系統(tǒng)架構(gòu)時,根據(jù)現(xiàn)有的網(wǎng)絡(luò)信息技術(shù)和黨建業(yè)務(wù)實際需要,選擇以Web服務(wù)為設(shè)計基礎(chǔ),采用Browser/Web/DataBase 三層結(jié)構(gòu)設(shè)計,采用前后端分離+RESTful 架構(gòu)進行開發(fā),前后端通過JSON格式的數(shù)據(jù)進行數(shù)據(jù)交互[3]。
前端系統(tǒng)為用戶提供一個良好的交互頁面,基于Vue.js 框架進行開發(fā),采用MVVM(Model、View、View-Model)模型提高頁面渲染性能。使用Vue-cli 工具構(gòu)建開啟本地服務(wù)器、熱模塊替換、集成通用依賴和創(chuàng)建基礎(chǔ)目錄結(jié)構(gòu)等開發(fā)環(huán)境。Vue.js采用觀察者模式(Observe 模式)搭建了一套“數(shù)據(jù)響應(yīng)式系統(tǒng)”,結(jié)合Vue-Router管理前端路由映射表,為本系統(tǒng)的開發(fā)提供更加便捷、完整、可靠的技術(shù)支持[4]。
后端系統(tǒng)的主要功能是提供API 接口服務(wù),采用Java 語言進行編寫,選擇主流的JavaEE 框架Spring-Boot 開發(fā),整合對象關(guān)系映射(Object Relational Mapping,簡稱ORM)框架MyBatis、基于角色的權(quán)限訪問控制(Role-Based Access Control,簡稱RBAC)框架shiro、由阿里巴巴開源的擁有強大監(jiān)控和拓展功能的druid 連接池等技術(shù)架構(gòu)建出MVC 三層架構(gòu),為控制層、業(yè)務(wù)層、持久層提供一套完善的解決方案。
數(shù)據(jù)庫選擇開源的MySQL數(shù)據(jù)庫并結(jié)合Redis等NoSQL中間件作分布式緩存[5]。
3.2.1 系統(tǒng)架構(gòu)設(shè)計
智慧黨建系統(tǒng)采取前后端分離的系統(tǒng)架構(gòu),采用B/S 架構(gòu),主要分為訪問層、前端UI 層、交互層、后端管理層、數(shù)據(jù)層、數(shù)據(jù)庫層、基礎(chǔ)支持層。訪問層:主要通過個人PC 和華為一體機訪問前端UI 層,展示相關(guān)可視化頁面;前端UI 層:使用ElementUI 框架進行頁面設(shè)計與開發(fā),通過Axios組件獲取數(shù)據(jù),并進行相應(yīng)數(shù)據(jù)渲染;交互層:采用vue.js 框架進行搭建,結(jié)合Vuex 與Vue-router 開展相關(guān)業(yè)務(wù)處理,使用Axios 組件向后臺api 接口發(fā)送GET、POST 請求進行數(shù)據(jù)交互;后端管理層:主要分為認證模塊和業(yè)務(wù)模塊,認證模塊主要功能為身份驗證、權(quán)限驗證、登錄過期驗證;業(yè)務(wù)模塊主要功能為業(yè)務(wù)處理、數(shù)據(jù)管理、數(shù)據(jù)監(jiān)控;其中權(quán)限控制基于輕量級安全框架Shiro 進行,日志記錄基于logback 組件進行歸檔記錄并存儲在MySQL數(shù)據(jù)庫中,七天自動清除;數(shù)據(jù)層:數(shù)據(jù)層是對持久層的業(yè)務(wù)抽象,將具體業(yè)務(wù)抽象為緩存、存儲、事務(wù)三大部分,使得業(yè)務(wù)結(jié)構(gòu)層次分明,具有易擴展、高復(fù)用的特點;數(shù)據(jù)庫層:對數(shù)據(jù)層抽象地具體實施,緩存采取Key-Value 型存儲數(shù)據(jù)庫Redis,數(shù)據(jù)存儲采用輕量級關(guān)系型數(shù)據(jù)庫MySQL;基礎(chǔ)支持層:規(guī)定系統(tǒng)運行所使用的支撐環(huán)境,主要包括ECS 云服務(wù)、操作系統(tǒng)采用Linux環(huán)境、語言環(huán)境支持為Java環(huán)境、Tomcat支持后端Api 服務(wù)運行、輕量級Web服務(wù)器為展示頁面提供支持。

圖1 黨建系統(tǒng)前后端分離架構(gòu)圖
3.2.2 功能結(jié)構(gòu)設(shè)計
智慧黨建系統(tǒng)功能結(jié)構(gòu)分為前臺、后臺兩部分。前臺主要面向普通用戶,用戶能直視整個黨建系統(tǒng)效果,前臺主要包括用戶管理、黨建宣傳、黨建學(xué)習(xí)和活動管理四大模塊。用戶管理的身份驗證主要是驗證該用戶是否存在、用戶真實身份,防止網(wǎng)站被爬取以及惡意攻擊等;黨建宣傳主要用于介紹該黨組織的榮譽、先進事跡以及優(yōu)秀組織生活案例展示;黨建學(xué)習(xí)頁面為黨組織成員提供理論知識學(xué)習(xí)以及培訓(xùn)等;活動管理為黨員提供活動的報名、查詢活動參與情況等功能,使黨員能夠提前了解活動內(nèi)容和要求等詳細信息,做好準備工作,提高活動效率。后臺主要提供給管理級別用戶使用(即:黨委管理員、黨支部管理員、黨小組管理員),后臺主要用于統(tǒng)計用戶數(shù)據(jù)、活動管理、事務(wù)審批、文檔管理、系統(tǒng)管理。管理員用戶通過系統(tǒng)管理下的權(quán)限管理對下級用戶的權(quán)限進行管理,使用者根據(jù)級別的不同,能使用系統(tǒng)的功能不同,最高級別管理員則是能夠完全利用整個系統(tǒng)的能力的;事務(wù)審批主要對提交的活動申請和請假申請進行審批;文檔管理主要為用戶提供上傳、修改、刪除渲染到前臺的數(shù)據(jù)的功能。
通過平臺發(fā)布活動(會議)通知、上傳活動(會議)開展情況、圖片資料、會議記錄等,更加直觀地反映出基層組織生活落實情況,保證基層黨組織“三會一課”規(guī)范開展、質(zhì)量提升,極大地方便上級黨組織對基層黨組織工作的總體把握和指導(dǎo)調(diào)度。

圖2 智慧黨建系統(tǒng)功能框架圖
系統(tǒng)主要業(yè)務(wù)流程,都采用如圖3所示的流程處理過程。在一個資源請求被后臺系統(tǒng)接收后,首先根據(jù)資源請求路徑對請求進行篩選,判斷請求是否需要驗證身份,若該請求不需要驗證身份則可以匿名訪問,此時直接跳轉(zhuǎn)至業(yè)務(wù)執(zhí)行過程并在業(yè)務(wù)執(zhí)行完成后返回對應(yīng)的數(shù)據(jù),若該請求訪問需要進行身份驗證,系統(tǒng)定義了一個過濾器(Filter)對這類請求進行統(tǒng)一處理。過濾器會從請求的請求頭中提取名為token的請求頭值(令牌),令牌是用戶登錄后系統(tǒng)返回的唯一身份憑證,若請求頭中不存在令牌則會直接返回錯誤數(shù)據(jù)提示,當(dāng)存在令牌時需要檢驗令牌是否合法,驗證合法直接執(zhí)行業(yè)務(wù)操作返回對應(yīng)業(yè)務(wù)數(shù)據(jù),若令牌檢驗不合法則直接返回錯誤數(shù)據(jù)提示,令牌合法時還需要判斷Redis 中是否存在該令牌,此操作的原因為考慮到令牌在初始定義時間內(nèi)過期但用戶仍在繼續(xù)使用系統(tǒng)發(fā)送資源請求,為保證用戶體驗,避免用戶使用時出現(xiàn)因令牌過期而需要重新登錄,在令牌生成時于Redis中備份令牌且保存時間比令牌定義的過期時間更長。若Redis 中依舊存在該令牌,此時首先進行令牌續(xù)期操作保證用戶體驗,再執(zhí)行對應(yīng)的業(yè)務(wù)操作返回業(yè)務(wù)數(shù)據(jù)。
3.4.1 路由設(shè)計
Vue Router 與Vue.js 核心深度集成,讓用Vue.js構(gòu)建單頁應(yīng)用變得輕而易舉[6]。系統(tǒng)通過Vue Router管理前端路由映射表,由開發(fā)者設(shè)定訪問路徑,并且將路徑和組件映射起來,實現(xiàn)組件之間的跳轉(zhuǎn)功能。Vue Router的使用方法如下:
1)導(dǎo)入并掛載路由:在項目的入口文件中將路由文件導(dǎo)入并且掛載至Vue中。
2)設(shè)計映射表:路由設(shè)計時考慮到項目的可讀性、擴展性以及可維護性,將路由插件的使用、路由映射表、導(dǎo)航守衛(wèi)等代碼統(tǒng)一放在路由文件中進行管理。
3)設(shè)置路由組件出口:映射表設(shè)計好后的關(guān)鍵一步是放置路由組件出口用于渲染組件的內(nèi)容。路由組件出口由Vue Router提供的內(nèi)置組件router-view實現(xiàn),在對應(yīng)的位置上放置該內(nèi)置組件即可。
3.4.2 請求進度管理
系統(tǒng)使用NProgress 對請求進度進行統(tǒng)一管理。NProgress 是一個輕量級的,用于Ajax 應(yīng)用程序的細長進度條,能夠輕便地為所有的請求提供進度條,以便將請求數(shù)據(jù)的過程具象化。本系統(tǒng)涉及大量資源請求以及表單發(fā)送,使用NProgress在頁面頂部顯示進度條能夠讓用戶每一次發(fā)起請求都能得到良好的使用體驗。在項目中的請求攔截器和響應(yīng)攔截器中調(diào)用它的start()方法以及done()方法即可實現(xiàn)監(jiān)聽一個請求的進度,并且使用進度條的形式以更直觀的方式展現(xiàn)出來。
本系統(tǒng)日常可在黨建活動室采用多媒體大屏一體機終端的形式使用,操作簡便,并可實現(xiàn)互動,能為黨建活動提供發(fā)布、報名及展示一整套的信息技術(shù)支持服務(wù)。不僅為公司的文化宣傳和通知告示提供一個優(yōu)秀的平臺,也提高了黨務(wù)工作人員的工作效率,具有很強的實用性和推廣性,為公司的發(fā)展規(guī)劃提供參考和數(shù)據(jù)支持。