解攀科,李鴻飛,郭偉秀,許 婷
(1. 華中師范大學(xué) 信息化辦公室,湖北 武漢 430079;2. 華中師范大學(xué) 學(xué)校辦公室,湖北 武漢 430079;3. 華中師范大學(xué) 第一附屬中學(xué),湖北 武漢 430079)
隨著高校信息化建設(shè)不斷推進,學(xué)校信息化基礎(chǔ)設(shè)施建設(shè)已經(jīng)初具規(guī)模,硬件環(huán)境和網(wǎng)絡(luò)環(huán)境都得到了改善,軟件信息系統(tǒng)的應(yīng)用也逐步深入。高校陸續(xù)建設(shè)了各大信息系統(tǒng),如人事管理系統(tǒng)、財務(wù)管理系統(tǒng)、科研管理系統(tǒng)、教務(wù)管理系統(tǒng)等。這些系統(tǒng)的建設(shè)運行初步滿足了高校教師在教學(xué)、科研、學(xué)科發(fā)展、個人發(fā)展、學(xué)術(shù)交流等方面的信息化需求,各系統(tǒng)通過統(tǒng)一身份認證實現(xiàn)互聯(lián)互通,且一般通過統(tǒng)一信息門戶實現(xiàn)了融合式呈現(xiàn)及導(dǎo)航。但由于各大信息系統(tǒng)的碎片化建設(shè)現(xiàn)狀,教師在各系統(tǒng)上反復(fù)填寫信息相同的表單的問題依然存在。高校廣大教職員工在教學(xué)、科研、管理、生活等各方面需要填寫很多線上表單,其中一些個人基本信息、教學(xué)情況、科研情況、互聯(lián)網(wǎng)第三方系統(tǒng)的教師數(shù)據(jù)等需要在線下表格、線上表單中反復(fù)填寫,給師生增添了很多重復(fù)的工作。這些信息大部分都存儲在數(shù)字校園各大業(yè)務(wù)系統(tǒng)之中,但缺少統(tǒng)一的獲取途徑來整合這些信息。隨著高校信息化的發(fā)展,需要建設(shè)某種自動化聚合表單系統(tǒng)來消除這些重復(fù)工作,最大幅度地減少表格表單的重復(fù)填寫。當(dāng)師生需要填寫線下表格時,可以直接從數(shù)字校園系統(tǒng)下載已填好已有數(shù)據(jù)的表格模板補充填寫。當(dāng)師生需要在線上系統(tǒng)錄入信息時,可以實現(xiàn)在線上平臺自動填充已有數(shù)據(jù)。一張表系統(tǒng)根據(jù)教職工身份,從數(shù)字校園系統(tǒng)數(shù)據(jù)庫中提取表格所需要的教師基本信息、教師教學(xué)信息、教師科研系統(tǒng),顯示相應(yīng)的系統(tǒng)調(diào)用界面中,師生只需要填寫業(yè)務(wù)流程中的少量新增信息,從而大大簡化了線下表格和線上表單的填寫過程,讓教師在信息系統(tǒng)使用過程中提升體驗、提高效率。
隨著各類信息系統(tǒng)的表單多樣化、復(fù)雜化和煩瑣化日益嚴(yán)重,高校的信息化建設(shè)者們提出了“一張表”信息表單呈現(xiàn)的需求,很多高校陸續(xù)進行了各類一張表和一表通類似的信息平臺建設(shè),比較早的例如北京師范大學(xué)于2012年就在該校教育學(xué)部展開“一張表工程”因公出境申報的嘗試。華中師范大學(xué)2013年就開始了一張表工程的探索與建設(shè)實踐,近年來,越來越多高校在推進一張表系統(tǒng)建設(shè)。
一張表架構(gòu)本質(zhì)上是基于分布式的數(shù)據(jù)庫物理表的一種虛擬呈現(xiàn),通過融合的Web表單來呈現(xiàn)表格和信息系統(tǒng)交互。一張表架構(gòu)應(yīng)具有“多表整合”和“自動聚合”2個特征。多表整合指的是通過合理的數(shù)據(jù)庫設(shè)計和數(shù)據(jù)庫訪問技術(shù)獲取多個數(shù)據(jù)源的數(shù)據(jù),這些數(shù)據(jù)將根據(jù)業(yè)務(wù)需求而重新組合并形成相應(yīng)的虛擬一張表。一張表系統(tǒng)基于數(shù)據(jù)源實際上的多張數(shù)據(jù)庫物理表,面向教職工的各個主題業(yè)務(wù)域進行數(shù)據(jù)整合。采用一張表的機制開發(fā)面向高校師生自助聚合、自動填充表單的信息系統(tǒng),實現(xiàn)一張表系統(tǒng)中的多張數(shù)據(jù)庫表的有機聚合和自動化生成,從而有效解決實施師生填表繁瑣的問題。
根據(jù)學(xué)校一張表工程及支撐雙一流學(xué)科建設(shè)的需求,依次調(diào)研了學(xué)校物理學(xué)院、文學(xué)院及馬克思主義學(xué)院的信息化需求,并面向全校教職工收集各類數(shù)據(jù)表格的模板。收集了涉及教職工關(guān)于教學(xué)、科研、學(xué)科建設(shè)的各類交叉表格近20個,如《教師綜合信息表》《教師教學(xué)情況綜合一覽表》《教師科研項目綜合表》《教師論文成果一覽表》《教師專著教材綜合表》《教師參加學(xué)術(shù)會議一覽信息表》《教師培訓(xùn)情況一覽表》等各類復(fù)合業(yè)務(wù)表格等?;谶@些綜合業(yè)務(wù)需求,梳理這些表格涉及的數(shù)據(jù)子集和數(shù)據(jù)交集,并梳理相應(yīng)的一張表主題數(shù)據(jù)域并與中心數(shù)據(jù)庫建立關(guān)聯(lián)。
系統(tǒng)架構(gòu)設(shè)計綜合采用微服務(wù)應(yīng)用架構(gòu),實現(xiàn)一張表的業(yè)務(wù)需求。一張表數(shù)據(jù)架構(gòu)應(yīng)用設(shè)計,考慮采用成熟的分布式數(shù)據(jù)庫、數(shù)據(jù)交換技術(shù)、企業(yè)軟件信息架構(gòu)、微服務(wù)應(yīng)用架構(gòu)來構(gòu)建一站式的教師數(shù)據(jù)服務(wù)系統(tǒng),支持高校教師數(shù)據(jù)的共享分發(fā)及應(yīng)用。
架構(gòu)設(shè)計綜合考慮了以下內(nèi)容:
(1)一張表數(shù)據(jù)應(yīng)用架構(gòu)設(shè)計。研究一張表邏輯架構(gòu)的分布式應(yīng)用架構(gòu),支持統(tǒng)一性、支持表單的邏輯統(tǒng)一呈現(xiàn)和業(yè)務(wù)扭轉(zhuǎn)與應(yīng)用。
(2)教師信息聚合數(shù)據(jù)庫設(shè)計。深入研究涉及教師基本信息、教學(xué)信息、科研信息多源業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)庫聚合設(shè)計,采用合理的數(shù)據(jù)庫架構(gòu),符合數(shù)據(jù)庫設(shè)計的范式,并支持復(fù)合數(shù)據(jù)庫的優(yōu)化。
(3)數(shù)據(jù)交換緩沖過濾架構(gòu)。一張表數(shù)據(jù)架構(gòu)需要整合已有業(yè)務(wù)系統(tǒng)的數(shù)據(jù),各大業(yè)務(wù)數(shù)據(jù)通過“數(shù)據(jù)泵”的機制交換到中心庫,通常采用ODI等業(yè)界成熟的工具來實施,但數(shù)據(jù)交換過程中缺少支持緩沖的處理過濾,存在“臟”數(shù)據(jù)灌入系統(tǒng)的風(fēng)險,需要研究構(gòu)建數(shù)據(jù)緩沖過濾處理方案。
(4)數(shù)據(jù)自動填充、填補組件設(shè)計。一張表架構(gòu)下,自動從源頭數(shù)據(jù)、中心庫萃取數(shù)據(jù),需研究合適的模式自動填充到PC界面和移動界面。
(5)PC/移動自適應(yīng)的數(shù)據(jù)融合應(yīng)用界面設(shè)計。一張表融合數(shù)據(jù)架構(gòu)界面需優(yōu)化設(shè)計,支持響應(yīng)式模式自適應(yīng)呈現(xiàn),支持大表單視圖、手機表單視圖的便捷顯示,方便移動設(shè)備移動界面使用。
(6)碎片化填報處理表單過程的數(shù)據(jù)防丟失設(shè)計。一張表應(yīng)用架構(gòu)支持碎片化的數(shù)據(jù)完善功能,碎片化操作容易忘記正確點擊保存控件來保存數(shù)據(jù),需要設(shè)計自動異步保存功能,避免臨時數(shù)據(jù)丟失。
(7)微服務(wù)技術(shù)架構(gòu)的使用。一張表應(yīng)用架構(gòu)本質(zhì)需要優(yōu)化多個系統(tǒng)的業(yè)務(wù)數(shù)據(jù),實現(xiàn)多個子業(yè)務(wù)系統(tǒng)的整合,采用微服務(wù)架構(gòu)可實現(xiàn)獨立的組件設(shè)計以及安全的接口互相調(diào)用。
綜上,整體系統(tǒng)設(shè)計需要從一張表架構(gòu)優(yōu)化、數(shù)據(jù)聚合機制、數(shù)據(jù)緩沖及過濾、自動數(shù)據(jù)填充、基于API的安全數(shù)據(jù)分發(fā)能力等方面綜合考慮。從高校教師主流業(yè)務(wù)數(shù)據(jù)需求著手,結(jié)合一張表數(shù)據(jù)應(yīng)用架構(gòu)的特點,研究建立適合處理高校教師信息的融合數(shù)據(jù)庫信息系統(tǒng),支持多源數(shù)據(jù)的自動獲取、填充、過濾、聚合和統(tǒng)一API分發(fā)。系統(tǒng)整體方案架構(gòu)如圖1所示。
圖1 系統(tǒng)整體架構(gòu)
數(shù)據(jù)庫使用 Oracle 12C云數(shù)據(jù)庫實現(xiàn)。基于高校一張表綜合業(yè)務(wù)的需求,梳理這些表格涉及的數(shù)據(jù)子集和數(shù)據(jù)交集,并梳理相應(yīng)的一張表主題數(shù)據(jù)域,相應(yīng)的主題表數(shù)據(jù)域在Oracle 12C中心數(shù)據(jù)庫建立相應(yīng)的數(shù)據(jù)表。
Oracle數(shù)據(jù)庫設(shè)計符合第三范式(3NF),主要依據(jù)以下原則:
(1)原子性,即保證數(shù)據(jù)庫表的每一列都不可分割;
(2)數(shù)據(jù)表必須包含主鍵;
(3)其他非主鍵字段必須完全依賴主鍵,聯(lián)合主鍵情況下,不能依賴主鍵的一部分;
(4)其他非主鍵字段必須完全直接依賴主鍵,不能是傳遞依賴。
Oracle數(shù)據(jù)庫結(jié)構(gòu)設(shè)計如圖2所示。
圖2 數(shù)據(jù)庫結(jié)構(gòu)
系統(tǒng)實現(xiàn)采用輕量級的微服務(wù)架構(gòu),并構(gòu)建統(tǒng)一中心數(shù)據(jù)庫,自動獲取各類源數(shù)據(jù)。微服務(wù)架構(gòu)是針對傳統(tǒng)單體架構(gòu)過于臃腫和低效而逐漸演化出來的一種輕量級組件化的應(yīng)用架構(gòu)。在傳統(tǒng)架構(gòu)下開發(fā)信息系統(tǒng),由于項目過于臃腫從而導(dǎo)致部署效率低下。整個系統(tǒng)的功能模塊都集中在同一項目下編譯打包發(fā)布時,由于單體應(yīng)用的代碼越來越多,依賴的資源越來越多時,應(yīng)用編譯打包、部署測試一次非常耗時,維護難度大幅度提升。傳統(tǒng)單體架構(gòu)的系統(tǒng)高可用性差,資源無法隔離。整個單體系統(tǒng)的各個功能模塊都依賴于整體的計算資源,一旦某個功能模塊發(fā)生故障,整個系統(tǒng)便可能會發(fā)生宕機。傳統(tǒng)單體應(yīng)用還有無法靈活拓展的缺點,單體應(yīng)用只能針對整體實現(xiàn)集群級擴展,部署到更多機器上擴展集群,但有時系統(tǒng)的性能問題僅存在一個局部模塊上,全局的擴展往往效果并不明顯。采用微服務(wù)組件化可進行有針對性的精準(zhǔn)擴展,可以基于容器進行輕量級擴展,比虛擬機乃至物理機上的擴展更加靈活。
系統(tǒng)實現(xiàn)技術(shù)框架采用 Spring Boot和 Spring Cloud完成。Spring Boot是由Pivotal設(shè)計的一種輕量級的JavaEE微服務(wù)框架。Spring Boot集成了Spring開源框架的優(yōu)點,具有輕量級的特性。Spring Boot使用IOC的機制來實現(xiàn)依賴查找及依賴注入,提供輕量級的 Java容器來管理 Java對象的生命周期。Spring Boot則在Spring框架的基礎(chǔ)上,利用Java的注解機制,進一步簡化企業(yè)級Java配置。Spring Boot采用自動化的包引用機制,解決了JavaEE原有的依賴煩瑣問題,并且自動控制 Java庫之間的版本沖突,提升JavaEE的穩(wěn)定性。
Spring Boot具有以下特點:
(1)可方便構(gòu)建獨立的Spring應(yīng)用程序,并支持主流的Maven或Gradle插件;
(2)通過內(nèi)嵌Tomcat或Jetty等Servlet容器快速發(fā)布應(yīng)用;
(3)提供自動配置的項目對象模型(POMS),提供了簡化的Maven配置;
(4)具有自動化配置Spring容器的能力;
(5)支持JavaEE的健康度偵測;
(6)不再依賴繁瑣的XML配置。
Spring Cloud是一系列Spring子框架的有機整合。Spring Cloud利用Spring Boot的輕量級特性簡化了分布式系統(tǒng)的開發(fā),支持使用Spring Boot快速部署和啟動服務(wù)注冊中心、配置中心、消息總線、負載均衡、斷路器、服務(wù)監(jiān)控等。Spring秉承“不重復(fù)造輪子”思想,它將目前一系列開源優(yōu)質(zhì)服務(wù)框架合理組合和封裝,提供了一整套分布式微服務(wù)的最佳實踐。
Spring Cloud主要由服務(wù)發(fā)現(xiàn)組件(Netflix Eureka)、服務(wù)網(wǎng)關(guān)(Netflix Zuul)、斷路器(Netflix Hystrix)、分布式負載均衡組件(Netflix Ribbon或Feign)、分布式配置組件(Spring Cloud Config)組成。
服務(wù)發(fā)現(xiàn)組件Netflix Eureka服務(wù)端用作服務(wù)注冊中心,在應(yīng)用啟動時,Netflix Eureka客戶端向服務(wù)端注冊各項信息,并將服務(wù)端的各項信息緩存到本地。服務(wù)網(wǎng)關(guān)Netflix Zuul作為微服務(wù)API網(wǎng)關(guān),根據(jù)請求的URL執(zhí)行相應(yīng)的應(yīng)用路由調(diào)用相應(yīng)的子服務(wù)。斷路器(Netflix Hystrix)主要用于監(jiān)測處理分布式系統(tǒng)故障,及時啟用所謂“熔斷”機制,將故障節(jié)點及時從集群移除。分布式負載均衡組件則支持靈活的分布式負載均衡策略,支持前端網(wǎng)關(guān)的RESTful節(jié)點負載調(diào)用。Spring Cloud Config提供整個分布式系統(tǒng)靈活的統(tǒng)一配置和調(diào)用能力。
系統(tǒng)UI界面基于開源的Amaze UI完成。Amaze UI是一款移動優(yōu)先(mobile first)的界面框架,可實現(xiàn)從桌面電腦到移動設(shè)備的多屏幕適配。Amaze UI提供了豐富的模塊化UI組件(包含各類CSS組件、JS組件及大量豐富主題的Web組件),可快速構(gòu)建良好易用的用戶界面。Amaze UI實現(xiàn)了輕量級且高性能的前端渲染,充分支持 HTML5開發(fā),且利用 CSS3來實現(xiàn)瀏覽器端的動畫交互,可平滑、高效地支持Web應(yīng)用快速加載。
綜上設(shè)計,系統(tǒng)實現(xiàn)技術(shù)框架如圖3所示。
圖3 系統(tǒng)實現(xiàn)技術(shù)框架
基于Spring Cloud微服務(wù)框架,開發(fā)完成各大系統(tǒng)組件開發(fā),主要包含:用戶登錄組件、統(tǒng)一身份認證集成組件、統(tǒng)一數(shù)據(jù)訪問組件、一張表數(shù)據(jù)查詢組件、一張表數(shù)據(jù)報表組件。
高校各大業(yè)務(wù)信息系統(tǒng)的基礎(chǔ)數(shù)據(jù)源通過 ODI數(shù)據(jù)交換組件統(tǒng)一匯聚到中心數(shù)據(jù)庫,統(tǒng)一中心庫通過數(shù)據(jù)服務(wù)API接口發(fā)布給數(shù)據(jù)訪問組件使用。系統(tǒng)開發(fā)除使用中心庫的數(shù)據(jù)外,還通過爬蟲機制獲取互聯(lián)網(wǎng)教師公共科研數(shù)據(jù)(論文、科研項目),自動化腳本抓取數(shù)據(jù)進行處理,同結(jié)構(gòu)化數(shù)據(jù)整合后一并提供給一張表系統(tǒng)使用。聚合中心庫的數(shù)據(jù)處理交換情況如圖4所示。
系統(tǒng)開發(fā)完成并上線使用,支持高校多個業(yè)務(wù)域的一張表處理,如教師基本情況一張表、學(xué)習(xí)工作經(jīng)歷一張表、學(xué)術(shù)兼職一張表、教學(xué)情況一張表、著作教材出版一張表、獲獎榮譽一張表、科研項目一張表、期刊論文一張表、學(xué)術(shù)交流情況一張表等。一張表數(shù)據(jù)管理系統(tǒng)支持PC端和移動端的使用,提供了PC端和移動端的統(tǒng)一表單數(shù)據(jù)查詢、增加、修改、數(shù)據(jù)認定審核和統(tǒng)一報表的能力。
基于一張表架構(gòu)的高校融合數(shù)據(jù)管理系統(tǒng)主要運行界面如圖5所示,部分?jǐn)?shù)據(jù)因涉及隱私已隱去。
圖4 中心庫數(shù)據(jù)交換
圖5 一張表系統(tǒng)PC運行界面
系統(tǒng)界面采用響應(yīng)式布局自動適配移動設(shè)備的豎屏顯示,并提供自適應(yīng)的手機端表單功能。響應(yīng)式布局是Ethan Marcotte在2010年提出的一個概念,響應(yīng)式布局實現(xiàn)了一個Web系統(tǒng)能夠兼容多個終端,而不是為每個終端定制一個特定的版本。響應(yīng)式布局通過識別meta標(biāo)簽匹配瀏覽器,然后進行組織布局。通過媒體查詢(media query)機制來設(shè)置Web樣式,根據(jù)meta參數(shù)識別瀏覽器來調(diào)用合適的Web渲染模式,實現(xiàn)Web組件正確合理地自動布局。針對移動設(shè)備的響應(yīng)式布局運行界面如圖6所示。
圖6 一張表系統(tǒng)移動版界面
一張表架構(gòu)是高校信息化發(fā)展到一定程度的必然需求。隨著高校的信息化建設(shè)不斷推進,孤島不斷消除,但高校師生仍需在多個系統(tǒng)間反復(fù)填寫類似的表單,導(dǎo)致師生用戶體驗不佳,于是需要將各大信息系統(tǒng)的數(shù)據(jù)融合匯聚打通使用。一張表架構(gòu)就是基于實時數(shù)據(jù)交換的中心數(shù)據(jù)庫和數(shù)據(jù)服務(wù)API接口來整合數(shù)據(jù)表單,可根據(jù)業(yè)務(wù)需求靈活調(diào)整,根據(jù)業(yè)務(wù)數(shù)據(jù)進行一張表重組和使用。文中探討了如何基于一張表的理念,通過成熟的微服務(wù)技術(shù)框架,實現(xiàn)業(yè)務(wù)數(shù)據(jù)的一張表系統(tǒng)開發(fā)。一張表應(yīng)用通過數(shù)據(jù)共享機制匯聚多個業(yè)務(wù)域的數(shù)據(jù),可以為高校師生提供較為便捷的信息服務(wù),提升高校的信息化水平。隨著一張表數(shù)據(jù)應(yīng)用需求的不斷增加,如何推進高校數(shù)據(jù)的標(biāo)準(zhǔn)化、規(guī)范化治理是一個值得繼續(xù)深入研究的課題。高校信息化工作者應(yīng)充分基于國家相關(guān)的數(shù)據(jù)標(biāo)準(zhǔn)和規(guī)范,制定符合校情實際的校級數(shù)據(jù)標(biāo)準(zhǔn),并通過標(biāo)準(zhǔn)的數(shù)據(jù)服務(wù)接口提供統(tǒng)一的數(shù)據(jù)訪問服務(wù),為更靈活的一張表業(yè)務(wù)應(yīng)用構(gòu)建更好的數(shù)據(jù)基礎(chǔ)。