文/展 鵬
山東大學(xué)學(xué)術(shù)與科研服務(wù)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
文/展 鵬
隨著高校學(xué)術(shù)的不斷發(fā)展,教師的學(xué)術(shù)成果越來越多,在高校的年度考核、崗位聘任、碩/博導(dǎo)遴選等工作中,學(xué)術(shù)成果的重要性尤其突出。每年在進(jìn)行諸如考核、遴選等工作時(shí),老師需要到多個(gè)職能部門簽字、蓋章,尤其是有多個(gè)校區(qū)的高校,情況更為突出。為了提高學(xué)術(shù)成果的利用效率,加強(qiáng)科研服務(wù)能力,依托科研管理系統(tǒng),開發(fā)一個(gè)學(xué)術(shù)與科研服務(wù)平臺(tái),與校內(nèi)其他系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)共享,以實(shí)現(xiàn)網(wǎng)上考核、遴選等工作。該平臺(tái)減少了教師的工作量,同時(shí)提高了管理效率,該平臺(tái)的實(shí)現(xiàn)是非常有必要的。
本文基于成熟的SSH(Spring+Struts+Hibernate)框架結(jié)構(gòu)構(gòu)建學(xué)術(shù)與科研服務(wù)平臺(tái),Spring作為平臺(tái)核心框架,負(fù)責(zé)管理數(shù)據(jù)源、業(yè)務(wù)Bean等,Struts作為平臺(tái)表現(xiàn)層,負(fù)責(zé)前臺(tái)展現(xiàn)以及請(qǐng)求處理,Hibernate作為平臺(tái)數(shù)據(jù)持久層,采用成熟的MVC分層結(jié)構(gòu),大大提升了系統(tǒng)的高可維護(hù)性、高可拓展性、高穩(wěn)定性。
平臺(tái)架構(gòu)設(shè)計(jì)
本文設(shè)計(jì)的平臺(tái)采用如圖1所示的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),教師、管理人員可隨時(shí)通過電腦、筆記本、平板等上網(wǎng)終端設(shè)備訪問本平臺(tái),完成數(shù)據(jù)獲取、編輯、審核等工作。
圖1 學(xué)術(shù)與科研服務(wù)平臺(tái)網(wǎng)絡(luò)拓?fù)?/p>
本學(xué)術(shù)與科研服務(wù)平臺(tái)基于SSH框架進(jìn)行封裝、整合,形成了一套完整的技術(shù)架構(gòu)模型,包括數(shù)據(jù)資源層、基礎(chǔ)框架層、核心組件層以及業(yè)務(wù)模塊。如圖2所示。
圖2 學(xué)術(shù)與科研服務(wù)平臺(tái)技術(shù)架構(gòu)
數(shù)據(jù)資源層包含平臺(tái)數(shù)據(jù)庫(kù)和文件資源服務(wù)??紤]到并發(fā)量、數(shù)據(jù)容量等實(shí)際需求,采用MySQL作為系統(tǒng)數(shù)據(jù)庫(kù)。文件資源服務(wù)包含用戶上傳的附件、平臺(tái)配置文件等。
基礎(chǔ)框架層包含平臺(tái)使用Spring、Struts、Hibernate框架以及POI、FastJson、Log4j、Dom4j等常用工具包,以實(shí)現(xiàn)對(duì)文檔、XML、JSON數(shù)據(jù)、日志等的管理。
核心組件層是本架構(gòu)的重點(diǎn)開發(fā)模塊。其包含了一系列的代碼封裝,包括Action封裝、業(yè)務(wù)Bean封裝、DAO封裝、工具類封裝以及擴(kuò)展模塊。通過代碼封裝,使得開發(fā)過程符合既定約束,以實(shí)現(xiàn)開發(fā)過程可控,同時(shí)能夠提高代碼質(zhì)量以及可維護(hù)性。
業(yè)務(wù)模塊層是平臺(tái)實(shí)現(xiàn)的功能模塊。主要包括教師的項(xiàng)目、論文、獎(jiǎng)勵(lì)、專利、著作等成果的瀏覽、管理、審核、統(tǒng)計(jì)等功能,同時(shí)對(duì)外與人事系統(tǒng)、財(cái)務(wù)系統(tǒng)、國(guó)際部出入境等實(shí)現(xiàn)數(shù)據(jù)對(duì)接,以滿足不同部門對(duì)學(xué)術(shù)成果的數(shù)據(jù)需求。
圖3 學(xué)術(shù)與科研服務(wù)平臺(tái)功能模塊
功能模塊設(shè)計(jì)
根據(jù)服務(wù)平臺(tái)的需求分析,將功能模塊按照角色劃分,主要包含教師、學(xué)院秘書、部門管理員、平臺(tái)管理員四種角色。教師主要查看、維護(hù)自己的學(xué)術(shù)成果。學(xué)院秘書主要查看本學(xué)院的學(xué)術(shù)成果,并可對(duì)學(xué)術(shù)成果進(jìn)行初審,根據(jù)某些業(yè)務(wù)需求,只有初審?fù)ㄟ^的成果才能用于考核、遴選之類的業(yè)務(wù)場(chǎng)景。部門管理員主要對(duì)學(xué)術(shù)成果進(jìn)行終審,根據(jù)某些業(yè)務(wù)需求,只有終審?fù)ㄟ^的成果才能用于某些業(yè)務(wù)場(chǎng)景。平臺(tái)管理員可設(shè)置數(shù)據(jù)篩選條件,如針對(duì)年度考核的成果需求,僅能獲取教師當(dāng)前考核年度的成果數(shù)據(jù)。平臺(tái)功能模塊示意圖如圖3所示。
數(shù)據(jù)接口設(shè)計(jì)
本文設(shè)計(jì)的服務(wù)平臺(tái)可與人事系統(tǒng)、財(cái)務(wù)系統(tǒng)、科研統(tǒng)計(jì)等實(shí)現(xiàn)數(shù)據(jù)交互,提供了RMI遠(yuǎn)程調(diào)用、WebService以及中間庫(kù)的數(shù)據(jù)交互方式,滿足多種調(diào)用需求。
RMI(Remote Method Invocation, 遠(yuǎn)程方法調(diào)用)是Java的一組開發(fā)分布式應(yīng)用程序的API。RMI充分發(fā)揮了Java的安全性與可移植性,其他系統(tǒng)(以Java為后臺(tái)語言開發(fā)的應(yīng)用系統(tǒng))可通過JRMP協(xié)議進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)獲取。WebService通過SOAP協(xié)議實(shí)現(xiàn)異地調(diào)用,實(shí)現(xiàn)了跨平臺(tái)的數(shù)據(jù)交互。中間庫(kù)的交互形式適用于對(duì)數(shù)據(jù)操作要求較高的交互場(chǎng)景,如與財(cái)務(wù)系統(tǒng)對(duì)接,財(cái)務(wù)系統(tǒng)是嚴(yán)格內(nèi)網(wǎng)系統(tǒng),與其進(jìn)行數(shù)據(jù)交互必須通過中間庫(kù)的讀寫來實(shí)現(xiàn),數(shù)據(jù)交換雙方不直接進(jìn)行訪問,通過寫入、讀取中間庫(kù)的數(shù)據(jù)完成數(shù)據(jù)交換。本平臺(tái)的數(shù)據(jù)交互方式如圖4所示。
圖4 數(shù)據(jù)交互方式示意
數(shù)據(jù)庫(kù)設(shè)計(jì)
學(xué)術(shù)與科研服務(wù)平臺(tái)涉及到項(xiàng)目、論文、著作、獎(jiǎng)勵(lì)、專利等成果,成果均與教師、學(xué)院進(jìn)行關(guān)聯(lián)。本平臺(tái)數(shù)據(jù)庫(kù)E-R圖設(shè)計(jì)如圖5所示。
圖5 數(shù)據(jù)庫(kù)E-R圖設(shè)計(jì)
以項(xiàng)目為例,主要包含基本信息表(project_info)、項(xiàng)目擴(kuò)展信息表(project_supply_info)、項(xiàng)目人員信息表(project_ person_info)、項(xiàng)目經(jīng)費(fèi)入賬信息表(project_fee_info)、項(xiàng)目合同信息表(project_contract_info)等、項(xiàng)目表結(jié)構(gòu)(核心字段)。
RMI技術(shù)功能配置
本平臺(tái)使用Java作為后臺(tái)開發(fā)語言,得力于Java語言的跨平臺(tái)、可移植等強(qiáng)大功能,尤其在開發(fā)網(wǎng)絡(luò)應(yīng)用時(shí),遠(yuǎn)程方法調(diào)用(Remote Method Invocation, RMI)提供了有效的解決方案。基于學(xué)校主要業(yè)務(wù)系統(tǒng)大多采用Java語言開發(fā)的現(xiàn)實(shí)情況, RMI在分布式應(yīng)用開發(fā)中是非常便捷的。使用RMI,請(qǐng)求客戶端可以像訪問本地方法一樣調(diào)用遠(yuǎn)程服務(wù)器上的某個(gè)方法,同時(shí)可以序列化遠(yuǎn)程服務(wù)器對(duì)象到本地,在本地以對(duì)象的形式操作返回?cái)?shù)據(jù)結(jié)果。
本平臺(tái)使用Spring框架的RMI支持,通過使用org. springframework.remoting.rmi.RmiServiceExporter,可以把系統(tǒng)服務(wù)類對(duì)象暴露為RMI對(duì)象,客戶端使用org.springframework. remoting.rmi.RmiProxyFactoryBean或普通的RMI調(diào)用來訪問服務(wù)。本平臺(tái)的RMI配置如下。
<!-- 平臺(tái)服務(wù)Remote接口實(shí)現(xiàn)類 配置 start -->
<bean id="sysService" class="cn.edu.sdu.framework.cs.SpringRmiSysService">
<property name="baseRuleManager">
<ref bean="baseRuleManager" /><!-- 業(yè)務(wù)處理Bean -->
</property>
</bean>
<!-- 平臺(tái)服務(wù)Remote接口實(shí)現(xiàn)類 配置 end -->
<!-- RMI方法調(diào)用 配置 start -->
<bean id="registry" class="org.springframework.remoting.rmi.RmiRegistryFactoryBean">
<property name="port" value="20030" /><!-- 調(diào)用端口 -->
</bean>
<!-- RMI方法調(diào)用 配置 end -->
<!-- RMI服務(wù) 配置 start -->
<bean id="rmiServiceExporter" class="org.springframework.remoting.rmi.
RmiServiceExporter">
<property name="serviceName" value="SysService" />
<property name="service" ref="sysService" /><!-- Remote接口服務(wù)實(shí)現(xiàn)Bean -->
<property name="serviceInterface" value="cn.edu.sdu.framework.cs.SysServiceI" />
<property name="registry" ref="registry" /><!-- 調(diào)用注冊(cè) -->
<property name="servicePort" value="20010" /><!-- RMI服務(wù)端口 -->
</bean>
<!-- RMI服務(wù) 配置 end -->
<!-- 業(yè)務(wù)管理類 配置 start -->
<bean id="baseRuleManager" class="cn.edu.sdu.framework.rulemanager.
BaseRuleManager">
<property name="logger">
<ref bean="baseLogger" /><!-- 日志記錄 -->
</property>
</bean>
<!-- 業(yè)務(wù)管理類 配置 end -->
數(shù)據(jù)對(duì)接實(shí)現(xiàn)
本平臺(tái)與校內(nèi)多個(gè)業(yè)務(wù)系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)對(duì)接,綜合系統(tǒng)性質(zhì)、安全等級(jí)、系統(tǒng)框架等因素,有多種數(shù)據(jù)交互方式。
人員數(shù)據(jù)對(duì)接。平臺(tái)通過RMI遠(yuǎn)程方法調(diào)用人事系統(tǒng)方法,獲取教師基本信息,通過工號(hào)(校內(nèi)教師唯一識(shí)別碼)匹配人員,并更新本地教師基本信息。人事系統(tǒng)通過RMI遠(yuǎn)程調(diào)用平臺(tái)方法,通過教師工號(hào),實(shí)時(shí)獲取教師的科研數(shù)據(jù),以便年度考核、崗位聘任等業(yè)務(wù)使用。
到賬經(jīng)費(fèi)對(duì)接。由于財(cái)務(wù)系統(tǒng)的安全等級(jí)較高,且運(yùn)行在財(cái)務(wù)內(nèi)網(wǎng),財(cái)務(wù)系統(tǒng)與校內(nèi)其他系統(tǒng)對(duì)接均通過中間庫(kù)的形式實(shí)現(xiàn)。本平臺(tái)將科研經(jīng)費(fèi)到賬明細(xì)發(fā)至中間庫(kù),財(cái)務(wù)系統(tǒng)讀取中間庫(kù)的科研經(jīng)費(fèi)數(shù)據(jù),在財(cái)務(wù)系統(tǒng)中進(jìn)行入賬流程,入賬完成后,財(cái)務(wù)系統(tǒng)將該經(jīng)費(fèi)的處理結(jié)果狀態(tài)回寫至中間庫(kù),平臺(tái)讀取中間庫(kù)的經(jīng)費(fèi)狀態(tài),將結(jié)果保存至本地。
經(jīng)費(fèi)結(jié)余對(duì)接。財(cái)務(wù)系統(tǒng)負(fù)責(zé)經(jīng)費(fèi)的支出管理,每月將經(jīng)費(fèi)支出、經(jīng)費(fèi)余額信息發(fā)送至中間庫(kù),平臺(tái)讀取中間庫(kù)數(shù)據(jù),將結(jié)果保存至本地。
碩/博導(dǎo)對(duì)接。平臺(tái)通過RMI遠(yuǎn)程方法調(diào)用研究生系統(tǒng)方法,獲取教師的碩/博導(dǎo)身份信息,通過工號(hào)匹配教師,更新本地的碩/博導(dǎo)字段。研究生系統(tǒng)通過RMI遠(yuǎn)程調(diào)用平臺(tái),通過教師工號(hào),實(shí)時(shí)獲取教師的科研數(shù)據(jù),以便碩/博導(dǎo)評(píng)審使用。
平臺(tái)提供了科研數(shù)據(jù)的WebService獲取服務(wù),通過教師工號(hào)、數(shù)據(jù)類別可實(shí)時(shí)請(qǐng)求獲取教師的科研數(shù)據(jù)。不同平臺(tái)、不同開發(fā)語言都可以調(diào)用平臺(tái)發(fā)布的WebService服務(wù),更加具有通用性。
項(xiàng)目、成果查看實(shí)現(xiàn)
本平臺(tái)實(shí)現(xiàn)與人事系統(tǒng)對(duì)接,教師登錄人事系統(tǒng)后,可通過API調(diào)用訪問科研系統(tǒng)數(shù)據(jù),包括文字類成果(論文、著作)、項(xiàng)目、獎(jiǎng)勵(lì)、專利、學(xué)術(shù)任職等。點(diǎn)擊成果名稱鏈接可從科研系統(tǒng)調(diào)取成果詳細(xì)信息數(shù)據(jù),并在頁面展示。
成果編輯實(shí)現(xiàn)
本平臺(tái)與人事系統(tǒng)對(duì)接,教師登錄人事系統(tǒng)后,在人事系統(tǒng)填寫成果信息,RMI遠(yuǎn)程請(qǐng)求科研系統(tǒng)業(yè)務(wù)保存成果數(shù)據(jù)。
年度考核與學(xué)術(shù)成果對(duì)接實(shí)現(xiàn)
本平臺(tái)通過API接口為人事年度考核提供科研成果數(shù)據(jù),通過數(shù)據(jù)過濾規(guī)則獲取當(dāng)前登錄教師當(dāng)前考核年度的成果數(shù)據(jù)。
項(xiàng)目經(jīng)費(fèi)認(rèn)領(lǐng)與財(cái)務(wù)對(duì)接
平臺(tái)通過中間庫(kù)的數(shù)據(jù)交互形式與財(cái)務(wù)入賬進(jìn)行對(duì)接,教師在科研系統(tǒng)獲取財(cái)務(wù)經(jīng)費(fèi)到賬信息,認(rèn)領(lǐng)后由財(cái)務(wù)審核通過,即可繼續(xù)完成科研入賬打印的相關(guān)工作。
平臺(tái)與其他系統(tǒng)實(shí)現(xiàn)對(duì)接的實(shí)施效果如表1所示。
表1 數(shù)據(jù)對(duì)接實(shí)現(xiàn)效果
現(xiàn)以2015年年度考核期間學(xué)術(shù)服務(wù)平臺(tái)提供的科研數(shù)據(jù)訪問為例,從圖中可以看出當(dāng)年度考核啟動(dòng)時(shí),學(xué)術(shù)科研數(shù)據(jù)請(qǐng)求量激增,最高達(dá)每日5.2萬次請(qǐng)求,隨著年度考核工作進(jìn)行,訪問量逐漸下降。在平臺(tái)運(yùn)行過程中,沒有出現(xiàn)宕機(jī)或訪問異常等事項(xiàng)的發(fā)生。本文實(shí)現(xiàn)了基于SSH框架的學(xué)術(shù)與科研服務(wù)平臺(tái),具有良好的可維護(hù)性、可擴(kuò)展性。該平臺(tái)充分考慮信息化服務(wù)要求,致力于為學(xué)校其他系統(tǒng)提供數(shù)據(jù)服務(wù),大大提升了學(xué)校信息化服務(wù)水平,降低了學(xué)校工作的復(fù)雜度,提高了職能部門的工作效率以及教師滿意度。
(作者單位為山東大學(xué)信息化工作辦公室)