趙 喆,卞藝杰,李亞冰,鄒銀馬
(河海大學商學院,江蘇 南京 211100)
科技查新自20世紀80年代產生至今,對推動我國科技事業(yè)的發(fā)展發(fā)揮了重大作用。但在發(fā)展過程中,也存在查新機構分布不均衡、查新收費標準不一和查新員工作量大等問題[1]。針對這些問題,筆者提出基于SaaS(software-as-service)模式的科技查新管理平臺,使具有查新資格的查新機構通過統(tǒng)一的門戶,訪問所租賃的服務,將查新機構和委托方在網(wǎng)絡環(huán)境下集成一體,為查新機構及查新用戶提供一個基于互聯(lián)網(wǎng)的工作平臺,方便查新用戶選擇查新機構,進行查新委托,輔助查新員開展業(yè)務,查新機構更好地進行任務分配、協(xié)作審核、網(wǎng)上費用管理及其他管理,從而提升管理效益。平臺充分利用SOA架構松散耦合的優(yōu)勢,采用ExtJS框架和輕量級架構S2SH實現(xiàn)相應業(yè)務模塊,采用Axis2將各個業(yè)務模塊封裝成服務并提供相應的服務接口,較好地解決了分布式平臺的互操作和緊耦合問題。
SOA采用面向服務的軟件封裝技術,以服務接口和服務實現(xiàn)的方式呈現(xiàn),將應用程序的不同功能單元(稱為服務)通過服務之間的接口和契約聯(lián)系起來[2]。SOA主要包含3種角色,如圖1所示。該角色分別是服務提供者(services provider)、服務使用者(servicesconsumer)和服務注冊中心(services registry),它們各自承擔著服務注冊發(fā)布(publish)、服務查找(find)和服務綁定(bind invoke)的工作。
圖1 SOA的架構體系
科技查新管理平臺總體業(yè)務不復雜,流程比較規(guī)范,數(shù)據(jù)量也不大,并且信息服務機構運營的預算較少,也缺少大型維護的技術人員。因此一個主要基于開源的、輕量級的架構是查新平臺首選的技術架構?;赟2SH的框架具有開發(fā)穩(wěn)定、層次之間低耦合、業(yè)務邏輯和表示層分離等優(yōu)點[3],對于查新平臺主要業(yè)務模塊的開發(fā),筆者采用基于Struts2、Spring和Hibernate的整合框架。
Struts2作為表示層的主要框架,由4個部分組成,分別為核心控制器Filter Dispatcher、業(yè)務控制器、模型組件和視圖組件。其中核心控制器Filter Dispatcher是Struts2框架的基礎,包含了框架內部的控制流程和處理機制,它將業(yè)務邏輯與持久化和表示層分離,形成了模型 Model、視圖View、控制器Controller的結構,并為其提供了各個部分的實現(xiàn)組件[4]。同時Struts2還提供了功能強大的標簽庫,便于團隊協(xié)作開發(fā),有效提高開發(fā)效率。
Spring是一個輕量級的控制反轉(inversion of control,IOC)和切面編程(aspect oriented programming,AOP)容器框架,主要負責管理業(yè)務邏輯層。作為輕量級框架最主要的表現(xiàn)是,基于Spring開發(fā)系統(tǒng)中的對象一般不依賴于Spring的API(application programming interface)[5];Spring 的 IOC控制反轉機制能夠減輕組件之間的依賴關系,提高組件的可移植性;Spring的AOP思想通過將業(yè)務邏輯從系統(tǒng)服務中分離出來,實現(xiàn)了內聚開發(fā)。
Hibernate作為優(yōu)秀的持久層框架,利用對象/關系映射(object/relation mapping,ORM)的機制解決了業(yè)務邏輯與數(shù)據(jù)訪問相分離的問題。Hibernate對JDBC(java data base connectivity)進行輕量級封裝,并提供了功能強大的查詢語言(hibernate query language,HQL)和更加面向對象的API,方便開發(fā)人員對數(shù)據(jù)庫的訪問,使系統(tǒng)開發(fā)更加簡單和高效[6]。
SOA的實質是要實現(xiàn)服務與技術的完全分離,從而達到服務的可重用性。輕量級框架S2SH開發(fā)項目架構清晰,高內聚,低耦合,可擴展性強[7],這符合SOA的設計思想。圖2是一個基于SOA的ExtJS+S2SH的框架結構模型圖,其內容為:
(1)表示層。表示層在客戶端主要采用ExtJS框架,能夠簡化Ajax開發(fā),響應速度快,實現(xiàn)無需刷新頁面便可向服務器傳輸或讀寫數(shù)據(jù),并實現(xiàn)與服務器的異步通信。同時ExtJS在客戶端與Struts2框架的整合,可以彌補Struts2標簽之間缺少交互的弊端[8],也可以應用ExtJS自有的組件使頁面更加美觀。Struts2獲得客戶端發(fā)送的請求,調用相對應的Action來處理請求,最后將執(zhí)行結果返回客戶端。
(2)控制中介層。控制中介層主要是通過Struts2框架來實現(xiàn)。Struts2中的Filter Dispatchar管理每一個Action,對它們進行上下文的控制和轉換,并通過調用控制中介層的Action和服務調用層進行交互獲取相應服務。
(3)服務調用層。服務調用代碼對控制中介層的服務請求進行處理,用來與服務進行交互,從而向系統(tǒng)內增加、更新或者檢索信息。服務調用代碼的編寫需要依據(jù)從服務總線獲得的服務WSDL描述文件。企業(yè)服務總線(enterpriseservicebus,ESB)[9]作為服務請求者與服務提供者之間的中介,對服務進行集中管理。在ESB的作用下,服務請求不是直接傳遞給服務提供者,而是經(jīng)ESB轉發(fā)給服務提供者,在得到返回消息后,ESB再轉給服務請求者。
圖2 基于SOA的ExtJs+S2SH框架模型圖
(4)業(yè)務邏輯層。使用Spring框架的輕量級容器IOC機制支持AOP,提供簡單統(tǒng)一的控制文件。Web Service作為服務的提供者,對服務進行封裝,主要提供粗粒度的服務,與業(yè)務邏輯相對應。利用Spring框架對會話及事物進行封裝和管理,向上為上層提供功能接口,向下通過DAO(data access object)與Hibernate數(shù)據(jù)持久層進行交互,調用數(shù)據(jù)庫完成業(yè)務處理。
(5)數(shù)據(jù)持久層。數(shù)據(jù)持久層使用Hibernate框架,使用ORM功能,通過Hibernate提供的HQL操作實體對象,直接與底層關系數(shù)據(jù)庫(relational data base management system,RDBMS)進行交互。
查新業(yè)務作為工作平臺的主體部分,基本流程是在一般科技查新工作流程的基礎之上,盡可能地簡化查新工作人員的工作量,實現(xiàn)事務處理信息化,在平臺基礎上采用數(shù)據(jù)庫技術來實現(xiàn)規(guī)范化管理和程序化操作。科技查新協(xié)作單位以及查新工作人員必須嚴格遵守《科技查新規(guī)范》所規(guī)定的行為進行操作。查新流程主要有:查新合同提交及審核,分配查新任務,查新報告提交及審核,查新報告查收,用戶意見反饋等。具體的工作流程如圖3所示。
圖3 平臺工作流程圖
科技查新工作平臺包括3個部分,分別為查新機構管理、委托方管理和平臺管理,功能結構圖如圖4所示。
圖4 系統(tǒng)功能結構圖
(1)查新機構管理。查新機構管理主要是為在平臺注冊的查新機構所搭建的,主要包括查新機構基本信息管理、人員權限管理、查新項目管理、機構門戶網(wǎng)站及對應的后臺維護4個部分。其中人員權限管理是核心,查新機構可以根據(jù)工作人員工作性質的不同,動態(tài)分配員工權限,如查新員、審核員等不同權限設置。
(2)委托方管理。委托方管理即委托方個人用戶中心,主要分為個人基本信息管理和委托項目管理兩部分。其中委托項目管理模塊又包括合同管理、賬務管理以及查新報告管理。委托用戶登錄用戶中心后,可添加修改個人信息,在線填寫查新合同,也可查看、跟進委托項目狀態(tài),并能向查新機構提出相關意見。
(3)平臺管理??萍疾樾缕脚_管理主要分為門戶管理和用戶管理兩部分。其中門戶管理主要對查新平臺相關信息模塊進行管理,包括平臺簡介、查新知識、查新案例、注冊登錄、最新動態(tài)和機構查詢等基本模塊。各模塊都具有增加、修改、刪除、查詢等基本操作,方便平臺管理員維護更新。用戶管理主要是SaaS平臺用戶以及機構用戶的信息,包括租戶注冊,租戶審核(主要針對查新機構租戶,審核機構合法性),提供租戶信息的增加、修改、刪除、查詢基本操作功能,并對租戶所租用或購買的服務進行管理,設定權限。
在網(wǎng)絡工作平臺設計中,數(shù)據(jù)庫設計對于數(shù)據(jù)安全、數(shù)據(jù)速度、空間節(jié)約等都非常重要。如果設計不合理,不僅會導致增加、查找等數(shù)據(jù)庫操作困難,而且會影響到整個平臺的工作效率??萍疾樾缕脚_采用MySql數(shù)據(jù)庫,整個平臺在數(shù)據(jù)庫中定義了多個數(shù)據(jù)庫表以保證平臺的正常運行,數(shù)據(jù)庫表主要分為機構表、范本表(如查新合同,查新報告等)、人員相關信息表、門戶網(wǎng)站模塊表4大類共55張表。列出幾個主要的數(shù)據(jù)庫表分別描述為:①查新機構表(TInstitution),包括ID,機構名稱,機構代碼,通信地址,郵編,電子郵箱,機構負責人,負責人電話,機構傳真,機構聯(lián)系人,機構聯(lián)系人電話,機構擅長領域,機構簡介等;②委托合同表(TContract),包括ID,合同編號,查新項目的ID,查新點與查新要求,查新的科學技術要點,參考文獻,中文檢索式,英文檢索式,中文檢索詞,英文檢索詞,分類號,專利號,合同訂立時間,合同履行期限,合同履行地點,合同履行方式,保密及法律責任,查新費用,費用支付方式,違約賠償金相關事項,爭議解決辦法,名詞術語解釋,保存時間等;③委托方基本信息表(TClient),包括ID,委托人名稱,密碼,單位名稱,通信地址,郵政編碼,電子郵箱,負責人,負責人電話,負責人傳真等;④查新方網(wǎng)站基本信息表(TIntroduce),包括ID,模塊名稱,標題,內容,發(fā)布人,發(fā)布日期,發(fā)布單位等。
科技查新工作平臺頁面采用ExtJS框架,應用ExtJS不需要其他配置,只需要在頁面head中引入ExtJS的樣式及ExtJS庫文件即可。在平臺開發(fā)過程中,綜合運用了ExtJS所提供的面板、窗口、對話框、選項板、工具欄、表格、表單、按鈕等組件,真正實現(xiàn)了頁面美觀,交互性強的設計。Web.xml中Struts2的配置描述如下:
Strusts2、Spring和Hibernate框架的應用需要把各自的庫文件加載到當前應用的類庫編譯路徑下。應用Struts2框架首先要在Web.xml里進行配置,代碼如上。應用 Spring框架需要配置Spring配置的路徑以及加載Spring上下文的監(jiān)聽器,清單如下:
Web Service作為SOA最好的實現(xiàn)手段之一[10],能夠較好地解決分布式平臺的互操作和緊耦合問題,實現(xiàn)方式有多種,如Xfire、Axis等。筆者提出的科技查新工作平臺采用Axis2作為Web Servsice的實現(xiàn)工具。
應用Axis2首先需要將Axis2相關的Jar包導入到Web-inf中的lib里面,在Web.xml中添加servlet的配置和部署信息,清單如下:
Spring提供了封裝良好的 AOP,在完成Spring和Hibernate框架整合后,完成聲明式事務管理只需要修改Spring的配置文件,清單如下:
清單中所示配置文件總共完成了3件事情,分別是給事務管理器注入session Factory、定義事務語義和定義切面以便把事務行為切入到類中。第一個標簽<bean>把Hibernate的session Factory通過IOC機制注入Spring提供的事務管理器HibernateT-ransactionManager;第二個標簽<tx:advice>用來封裝需要施加的事務語義;第三個標簽<aop:config>用來配置AOP的增強規(guī)則,把事務行為插入指定的類中。首先通過<aop:pointcut>定義一個切入點,讓AOP框架知道事務規(guī)則插入的類的位置;其次通過<aop:advisor>定義一個切面,這里定義了兩個屬性,第一個屬性advice-ref是把上面定義的<tx:advice>指定到這個切面上,第二個屬性pointcut-ref用來指定這個切面需要切入的地方。
通過Spring的事務管理方案,事務管理從代碼中獨立出來,使整個系統(tǒng)更簡潔明了,同時也提高了團隊的開發(fā)效率。
基于SaaS模式的科技查新管理平臺是根據(jù)查新工作需要,通過SOA的架構體系對查新工作松散耦合的粗粒度服務進行設計、組合和應用。平臺基本業(yè)務模塊基于ExtJS和S2SH框架開發(fā),通過Axis2實現(xiàn)Web Service,充分利用了各個框架的優(yōu)勢,具有高效可靠、安全穩(wěn)定等優(yōu)點。所開發(fā)的工作平臺優(yōu)化了查新站的工作流程,建立了新的服務模式,充分體現(xiàn)了多元化、網(wǎng)絡化、數(shù)字化,不僅方便了科技查新用戶,而且提高了查新工作效率和服務水平,為科技查新工作的科學化、規(guī)范化、標準化提供了實現(xiàn)基礎。
[1] 董月玲,張麗英,季淑娟.我國高??萍疾樾鹿ぷ鞯默F(xiàn)狀分析及研究[J].圖書館,2011(3):108-110.
[2] 葉宇風.基于SOA的企業(yè)應用集成研究[J].微電子學與計算機,2006,23(5):211 -213.
[3] 彭寶琴,羅曉沛.基于J2EE輕量級框架組合的消費信貸系統(tǒng)的實現(xiàn)[J].計算機工程與設計,2008,29(3):647-649.
[4] 王春超.基于J2EE架構的SSH組合框架的研究[D].長春:長春理工大學圖書館,2010.
[5] 李天鳴,何月順.基于ExtJS技術與SSH框架的權限管理研究[J].計算機應用與軟件,2011,28(5):165-167.
[6] 王磊杰,崔軍波,韓紅宇,等.Java EE開發(fā)指南:基于Spring/Struts/Hibernate的實現(xiàn)[M].北京:人民郵電出版社,2007:347-367.
[7] 楊鐘鳴.基于SSH框架的社區(qū)管理信息系統(tǒng)設計[J]. 東華理工大學學報:自然科學版,2010,33(4):378-383.
[8] 朱彬,王安保,王娜.用Struts框架建立JavaWeb應用程序[J].計算機輔助工程,2005,14(2):45-48.
[9] 蔡昭權.基于ESB的異構系統(tǒng)集成實現(xiàn)[J].計算機應用,2008,28(2):538-540.
[10] 翟峰,郝克剛,葛瑋.基于 SOAP構建 Axis上的Web Services[J].計算機應用與軟件,2008,25(1):156-158.