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