李鵬
(寧夏希望信息股份有限公司 寧夏回族自治區(qū)銀川市 750001)
隨著信息技術(shù)的快速發(fā)展,軟件系統(tǒng)的規(guī)模和復(fù)雜度也越來越高,特別是企業(yè)級應(yīng)用平臺的開發(fā),涉及到的知識和內(nèi)容非常廣泛。為了使程序員能夠集中精力完成系統(tǒng)的業(yè)務(wù)邏輯設(shè)計,降低軟件開發(fā)難度,將信息系統(tǒng)中一些基礎(chǔ)通用功能,比如:事物處理,安全性,數(shù)據(jù)流控制等都交給平臺框架處理,從而解決軟件開發(fā)中依賴復(fù)雜、編碼復(fù)雜、配置復(fù)雜、部署復(fù)雜、監(jiān)控復(fù)雜等難題。
平臺采用“強規(guī)范式編程”思想,高標(biāo)準(zhǔn)的設(shè)計和編碼規(guī)范、高標(biāo)準(zhǔn)配置的開發(fā)環(huán)境;平臺簡化程序依賴、簡化部署、簡化配置、提供通用組件,是一個綜合型框架,致力于J2EE應(yīng)用的各層的解決方案,且保持開放性。
平臺采用快速原型技術(shù),有利于在一個項目內(nèi)多人協(xié)同工作。重用代碼大大增加,提高軟件生產(chǎn)效率和質(zhì)量。代碼結(jié)構(gòu)的規(guī)范化,降低程序員之間溝通以及日后維護(hù)的成本。讓經(jīng)驗豐富的開發(fā)人員去設(shè)計框架和領(lǐng)域構(gòu)件,而不必限于低層級的編程;參數(shù)化框架使得軟件的適應(yīng)性、靈活性增強。
權(quán)限管理包括:部門管理、用戶管理、角色管理、菜單管理、模塊管理、功能管理、操作管理、在線用戶。
權(quán)限管理做為一個可插拔的子平臺通過接口集成在開發(fā)平臺中,也就是說,權(quán)限管理子平臺不是必須的,當(dāng)開發(fā)平臺做為老舊系統(tǒng)的擴展系統(tǒng)集成到老舊系統(tǒng)中時,可去除權(quán)限管理子平臺而使用原老舊系統(tǒng)的權(quán)限管理。去除權(quán)限管理子平臺后,可被集成到原老舊系統(tǒng)中,這種可被集成的特性大大延長了老舊平臺的生命周期。
3.1.1 部門管理和用戶管理
部門為樹型結(jié)構(gòu),以樹型和子部門列表方式展現(xiàn),部門設(shè)置有順序、狀態(tài),可查看部門信息的詳細(xì)內(nèi)容,刪除為邏輯刪除;部門與用戶為一對多關(guān)系,可調(diào)整用戶的部門,可鎖定和邏輯刪除一個用戶,可給用戶重置密碼,可給用戶分配角色,也可對第三方應(yīng)用接入人員分配接口組權(quán)限。
3.1.2 角色管理
平臺采用RBAC(基于角色的訪問控制)方式控制權(quán)限。角色分成多組,每個角色可添加多個用戶,給角色分配可訪問的菜單及功能,還能給角色分配訪問數(shù)據(jù)的數(shù)據(jù)權(quán)限。
3.1.3 菜單管理和模塊管理
平臺增強的權(quán)限控制不僅前端控制(菜單、頁面、按鈕的顯示),而且每個操作后臺也做了權(quán)限控制及日志記錄,防范非法操作。菜單管理(及模塊管理)是權(quán)限管理的基礎(chǔ)部分。
3.1.4 功能管理和操作管理
平臺為了強化安全,細(xì)化了權(quán)限控制粒度,把權(quán)限控制做到了功能及操作的最細(xì)粒度。在角色分配功能中,雖然授權(quán)的是功能,真正后臺控制的是功能下的操作。
3.1.5 在線用戶
平臺加強了系統(tǒng)監(jiān)控和用戶監(jiān)控。在線用戶功能可顯示登錄歷史時長及以線用戶,也可以強制在線用戶下線。

圖1:多數(shù)據(jù)源讀寫分離示意圖

圖2:代碼生成流程
平臺管理有字典管理、參數(shù)管理、定時任務(wù)管理、任務(wù)歷史查詢、附件查詢、公告管理、(阿里云)短信管理、短信歷史查詢、服務(wù)監(jiān)控、服務(wù)器性能歷史、Druid監(jiān)控等。
3.2.1 字典管理
字典管理配置各模塊使用的字典項。字典與表字段強對應(yīng)。字典項給代碼生成工具提供靜態(tài)常量生成到模塊實體中;字典項前端選擇標(biāo)簽提供下拉列表選項。
3.2.2 參數(shù)管理
參數(shù)管理主要維護(hù)系統(tǒng)中所有配置參數(shù)。參數(shù)的新增由后臺代碼完成添加默認(rèn)值,由參數(shù)管理修改功能來改變默認(rèn)值。
3.2.3 分布式定時任務(wù)管理及運行歷史
定時任務(wù)管理的底層由Quartz分布式定時任務(wù)組件完成,添加了管理界面和底層任務(wù)封裝,運行期可掃描到所有的任務(wù)類方便維護(hù)。
3.2.4 附件管理
附件管理只完成附件查看、下載、刪除功能,新增和邏輯刪除功能由各業(yè)務(wù)模塊完成。附件管理給管理員提供一個處理附件的窗口。
3.2.5 公告管理
公告管理是管理員對所有在線用戶提供一些通知性的消息。當(dāng)有消息時,在線用戶在訪問新頁面時,會彈出提示消息。
3.2.6 短信管理、模板查詢及短信發(fā)送歷史短信管理提供管理員手動發(fā)送短信的機制。對接受眾最多的阿里云短信服務(wù),還可以查看阿里云上設(shè)置的模板、簽名情況,還可以查看業(yè)務(wù)發(fā)送的短信歷史。
3.2.7 服務(wù)監(jiān)控
服務(wù)監(jiān)控提供了分布式服務(wù)的健康情況以及服務(wù)所在服務(wù)器的情況,監(jiān)控分布式服務(wù)狀況,記錄服務(wù)啟動、停止等信息。
3.2.8 服務(wù)性能監(jiān)控
服務(wù)監(jiān)控的同時,也記錄了服務(wù)器性能情況,給后續(xù)的服務(wù)器調(diào)優(yōu)工作提供數(shù)據(jù)依據(jù)。
3.2.9 Druid監(jiān)控
集成了Druid組件提供的性能監(jiān)控,全面監(jiān)控系統(tǒng)運行期各種性能指數(shù),給排錯、調(diào)優(yōu)提供詳細(xì)信息。
日志管理子平臺以接口方式集成到了開發(fā)平臺,使用者可選擇是否使用。因為日志數(shù)據(jù)量大,并且需要長久保存,每日備份數(shù)據(jù)量太大,所以使用者可選擇日志輸出的數(shù)據(jù)庫及制定與系統(tǒng)主體不同的備份策略。
日志管理包含登錄日志、操作日志、錯誤日志。日志管理給項目審計工作提供支持,也是等級保護(hù)評測要求的基本內(nèi)容。
3.3.1 登錄日志
登錄日志記錄用戶詳細(xì)的登錄信息,提供給管理員或?qū)徲媶T做分析使用。
3.3.2 操作日志和錯誤日志
操作日志查詢功能記錄詳細(xì)的操作信息,也記錄了操作過程中的異常信息,結(jié)合全局異常處理微框架,提供“可查詢的異常”功能。開發(fā)平臺提供透明的操作日志記錄和異常日志記錄,提升開發(fā)平臺的易用性。
平臺部署時是分布式無狀態(tài)結(jié)構(gòu),以Redis或數(shù)據(jù)庫保存會話狀態(tài),支持以子系統(tǒng)為單位的多數(shù)據(jù)源和讀寫分離,支持Web服務(wù)的動態(tài)水平擴展。
平臺本身是多數(shù)據(jù)源讀寫分離的環(huán)境,修改配置可為單數(shù)據(jù)庫讀寫同源,不僅可用于小應(yīng)用部署,更方便開發(fā)期使用,如圖1。
代碼生成工具以數(shù)據(jù)庫設(shè)計為驅(qū)動,動態(tài)生成CRUD代碼,簡化開發(fā),如圖2。
代碼生成工具在平臺強規(guī)范的約束下,會覆蓋不可手動修改的基礎(chǔ)代碼,對可修改的代碼給出參考代碼供其復(fù)制粘貼。
在線代碼生成工具設(shè)置好ID前輟和生成路徑,在運行時直接把代碼生成到運行環(huán)境中,重啟服務(wù)后就可以使用。
針對最易變的查詢條件更改,封裝查詢(框架通過反射機制自動獲取查詢條件和類型)不僅能快速變更查詢條件,而且不需要修改類代碼。
封裝的查詢支持多種數(shù)據(jù)類型和查詢類型,如:eq、ne、ge、gt、le、lt、like、likeLeft、likeRight、notLike、in、notIn、orderBy等。
平臺使用OAuth2協(xié)議接入第三方應(yīng)用,同時平臺有被集成能力,可接入其他系統(tǒng)中。平臺的權(quán)限管理(部門、用戶、角色、模塊等)是與平臺主體脫耦的,去除權(quán)限管理后可被集成到其它有系統(tǒng)中。
文件存儲(附件、圖片等)是javaWeb系統(tǒng)不可或缺的一部分。分布式環(huán)境下的文件存儲一般借助于OSS這樣的文件系統(tǒng)。文件服務(wù)依靠自身來分布式文件存儲,通過修改配置可動態(tài)切換文件存儲的服務(wù),也可以單服務(wù)運行,給中小微系統(tǒng)提供可擴展支持。
單服務(wù)方式適用于小微應(yīng)用的部署。依賴少,完全掌握不受限;多服務(wù)方式適用于開發(fā)自測,每個開發(fā)電腦都是一個服務(wù),完成分布式環(huán)境自測;多服務(wù)方式適用于大中型應(yīng)用部署,依賴小,自控能力強;單服務(wù)可調(diào)整配置轉(zhuǎn)變?yōu)榉植际椒绞剑瑧?yīng)用擴展只需要修改配置文件。
分布式監(jiān)控分為在線用戶監(jiān)控、服務(wù)監(jiān)控、服務(wù)器監(jiān)控。分布式環(huán)境下,用戶由負(fù)載均衡服務(wù)器分散在各服務(wù)上,在線用戶監(jiān)控可登錄任一服務(wù)監(jiān)控到所有用戶,并可查看用戶登錄歷史以及強制用戶下線。
在權(quán)限管理和在線API接口文檔的基礎(chǔ)上,集合兩者的優(yōu)點,不添加額外服務(wù)及性能來提供系統(tǒng)對第三方接口的管理。
工作流是信息化平臺不可或缺的一部分,本開發(fā)平臺采用業(yè)務(wù)最常用的開源工作流Activity的升級版Flowable,版本為6.4.1。
工作流部分可分為流程設(shè)計、模型部署、任務(wù)待辦、任務(wù)已辦、流程業(yè)務(wù)、請假實例等。工作流的功能更多是提供給開發(fā)人員開發(fā)、調(diào)試、自測和二次開發(fā)使用,而非最終用戶使用。工作流子系統(tǒng)采用分庫、松耦合方式,提供了可調(diào)試的供二次開發(fā)使用的封裝。
即時通訊專為工作溝通定制。采用WebSocket技術(shù)及使用LayUI-LayMI組件,形式類似于QQ或微信,并嵌入了公司組織結(jié)構(gòu),使企業(yè)內(nèi)部溝通更容易。
3.14.1 國密加密集
開發(fā)平臺添加了國密SM2、SM3、SM4等加密工具類,還在此基礎(chǔ)上添加了加密版本號及限時策略,使加密工具也可以向下兼容式升級。
3.14.2 策略緩存
開發(fā)平臺采用組合式緩存;分布式環(huán)境下使用Redis緩存;單服務(wù)采用EhCache緩存;平臺自動測試Redis,如果連接失敗則采用EhCache緩存。
3.14.3 動態(tài)表名
以MyBatisPlus動態(tài)表名功能為基礎(chǔ);實現(xiàn)動態(tài)表名接口,添加表名轉(zhuǎn)換規(guī)則;由Spring的組件掃描注入方法注冊。
3.14.4 數(shù)據(jù)權(quán)限
數(shù)據(jù)權(quán)限以樹形部門結(jié)構(gòu)為基礎(chǔ);部門表添加部門編號和父部門編號字段來支持?jǐn)?shù)據(jù)權(quán)限的實現(xiàn);角色管理中添加給角色“數(shù)據(jù)權(quán)限”功能,權(quán)限范圍:僅本人、本部門、本部門及以下、自定義部門、全部;需要根據(jù)權(quán)限的業(yè)務(wù)表添加創(chuàng)建者ID、部門ID、部門編號、父部門串等字段。
3.14.5 選擇列導(dǎo)出
開發(fā)平臺采用了EasyPOI導(dǎo)入導(dǎo)出組件,添加了選擇列導(dǎo)出功能;開發(fā)平臺把選擇列導(dǎo)出功能集成到代碼生成工具中,成為基礎(chǔ)功能。
本文提出的基于SpringBoot快速開發(fā)平臺適用于各行業(yè)管理系統(tǒng)的快速搭建,對基于Web的應(yīng)用平臺開發(fā)具有先天的優(yōu)勢。開發(fā)人員無需掌握大量底層技術(shù)架構(gòu),大大減少項目開發(fā)工作量,縮短項目的實施周期,大幅提升交付率,節(jié)約了企業(yè)的研發(fā)成本和人力成本,使用平臺快速實現(xiàn)用戶需求。