李元旦,徐小良
(杭州電子科技大學計算機學院,浙江杭州310018)
基于開源框架的項目驗收系統(tǒng)的研究
李元旦,徐小良
(杭州電子科技大學計算機學院,浙江杭州310018)
該文為了簡化科技計劃項目驗收過程,實現(xiàn)項目驗收管理的科學化、高效性,提出了基于Java EE開源框架的驗收系統(tǒng)解決方案。體系架構(gòu)設(shè)計以Spring2框架為核心,整合Struts2框架和ExtJS腳本框架等作為Web表現(xiàn)層、TopLink框架作為JPA持久層,形成一個分層、松耦合的、獨立于平臺及關(guān)系型數(shù)據(jù)庫的輕量級框架。系統(tǒng)已經(jīng)實際應(yīng)用于浙江省科技項目驗收管理系統(tǒng)中,有效提高了驗收效率,對提高我國科技計劃項目管理水平具有重要意義。
項目管理;控制反轉(zhuǎn);松耦合
目前,基于Java EE的Web應(yīng)用框架層出不窮,包括MVC模式的Struts2、服務(wù)于所有層面的Spring2[1]、完成持久化的Hibernate及TopLink等。盡管可選框架繁多,但都存在各自的優(yōu)缺點。一個好的解決方案是選擇不同層面的優(yōu)秀框架,通過整合實現(xiàn)松耦合的輕量級框架。隨著科技計劃項目資助量的陡增,項目驗收管理成為科技主管部門一項最繁重的工作。傳統(tǒng)方式效率低下,無法有效管理驗收信息,不能對項目后續(xù)導(dǎo)向提供有效的決策支持。互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,促使管理模式的變革,項目管理的網(wǎng)絡(luò)化、信息化已成必然。本文提出基于Java EE開源框架的驗收系統(tǒng)解決方案,將項目驗收核心業(yè)務(wù)歸為技術(shù)審批、財務(wù)審批兩個并行的業(yè)務(wù)流程,業(yè)務(wù)處負責技術(shù)審批,計劃處負責財務(wù)審批。
為了建立可理解的現(xiàn)實模型,明確系統(tǒng)功能,本文利用UML對系統(tǒng)功能需求進行分析建模。
用例模型描述定義系統(tǒng)功能需求,說明系統(tǒng)主要參與者從外部觀察系統(tǒng)能得到哪些功能。項目驗收管理的主要參與者包括項目申報單位,項目主管部門的業(yè)務(wù)處與計劃處、會計事務(wù)所。其中的參與者有:項目負責人、歸口部門管理員、業(yè)務(wù)處官員,業(yè)務(wù)處處長、計劃處官員、計劃處處長、事務(wù)所審計人員。
各參與者通過驗收申請的技術(shù)審核和財務(wù)審計審核活動相聯(lián)系。項目負責人在線提交驗收申請材料,由歸口管理員審核通過后,主管單位的業(yè)務(wù)處和計劃處分別獨立進行技術(shù)審批和財務(wù)審批工作,業(yè)務(wù)處技術(shù)審核通過時從專家?guī)煜到y(tǒng)中選取若干名驗收組技術(shù)專家;計劃處則通過系統(tǒng)自動委托某一家會計事務(wù)所對項目進行審計,會計事務(wù)所審計結(jié)束后提交審計報告由計劃處進行審核確認,同時可以選取驗收組財務(wù)專家。若技術(shù)審批與財務(wù)審批都通過后,則主管部門主持項目驗收會。如圖1所示。
業(yè)務(wù)邏輯模型通過對整個系統(tǒng)的特性、能力結(jié)構(gòu)狀況進行分析,描述各個業(yè)務(wù)模塊之間的交互關(guān)系。驗收管理系統(tǒng)的業(yè)務(wù)模型主要可以分為項目技術(shù)審批和財務(wù)審批兩大流程,由業(yè)務(wù)處負責項目技術(shù)及成果審批,計劃處負責項目財務(wù)審計審批。系統(tǒng)整個業(yè)務(wù)模型可以分為用戶填報驗收申請、歸口部門審核、業(yè)務(wù)處技術(shù)審批、計劃處財務(wù)審批、會計事務(wù)所審計管理5個模塊,如圖2所示。
圖1 驗收系統(tǒng)用例圖
圖2 驗收系統(tǒng)業(yè)務(wù)模型
具體業(yè)務(wù)流程步驟如下:
(1)項目負責人在線提交驗收申請材料,并上報歸口部門;
(2)歸口部門審核驗收申請,審核通過則上報科技主管部門,后續(xù)步驟(3)和(4)為獨立并行進行;不通過則退回項目負責人進行修改,即返回步驟(1);
(3)業(yè)務(wù)處進行對驗收申請中的技術(shù)及成果材料進行審核:若審核通過則從專家?guī)爝x取/核定驗收技術(shù)專家,并上報計劃處即到步驟(5),至此驗收申請的技術(shù)審批已經(jīng)完成;若通不過則退回項目負責人進行修改,項目負責人根據(jù)意見修改驗收材料后直接上報到業(yè)務(wù)處重新審核;
(4)計劃處委托會計事務(wù)所進行項目財務(wù)審計。
1)根據(jù)項目承擔單位所在地區(qū),計劃處選取會計事務(wù)所,開具委托審計書;
2)若會計事務(wù)所受理委托則在規(guī)定的時間內(nèi)進行審計,若不受理則返回到1);
3)當審計完成后,填寫并上傳電子審計報告;若由某種原因無法完成審計,暫?;蚍祷氐?);
4)若計劃處審核通過財務(wù)審計報告則轉(zhuǎn)至步驟(5);否則退回事務(wù)所進行修改,即返回到3)。
(5)通過技術(shù)審批和財務(wù)審批后,用戶提供驗收材料至主管部門,召開驗收會議;
(6)專家驗收意見通過系統(tǒng)錄入并進行網(wǎng)上公示。
系統(tǒng)技術(shù)架構(gòu)描述模型需求解決方案,是系統(tǒng)實現(xiàn)關(guān)鍵,科學的架構(gòu)對開發(fā)效率有至關(guān)重要的作用。本系統(tǒng)采用Java EE分層架構(gòu)思想、結(jié)合面向接口驅(qū)動的組件編程思想,搭建各層間松耦合的架構(gòu)[2]。
在優(yōu)秀的應(yīng)用系統(tǒng)中,各功能應(yīng)當相互脫離,具備高度的可維護性、可擴展性。本文所描述的系統(tǒng)表現(xiàn)層使用Struts2,業(yè)務(wù)層使用Spring2,持久層使用TopLink,3個框架以松散耦合的方式彼此作用,彼此相互獨立,保持一致。Struts2有強大、成熟的標記庫,能夠極大地簡化頁面的開;用Spring2來控制事務(wù)處理,使顯示、控制和事務(wù)邏輯的分工更清晰,降低各層間的耦合度,對開發(fā)復(fù)雜的系統(tǒng)起到了簡化的作用;用功能強大的TopLink來實現(xiàn)數(shù)據(jù)的持久化,是使用Oracle數(shù)據(jù)庫系統(tǒng)實現(xiàn)的第一選擇。由于這些框架的開源性質(zhì),有很多開源組織提供的支持,很多方便的工具包,提供對利用這些框架開發(fā)系統(tǒng)的無縫接口。充分利用3個框架的優(yōu)勢,可以開發(fā)出結(jié)構(gòu)清晰、簡潔,具有良好可擴展性、可維護性的系統(tǒng)。如圖3所示。
表現(xiàn)層對應(yīng)系統(tǒng)MVC結(jié)構(gòu)的控制器層,由Struts2中的Action來充當。以Spring2服務(wù)整合Struts2框架,通過Struts2與Spring結(jié)合使用,讓Spring2管理相關(guān)的組件,避免了在代碼中直接調(diào)用組件而產(chǎn)生的依賴關(guān)系[3]。表現(xiàn)層前端以FreeMarker作為模板支持,顯示結(jié)果;同時采用Ext富客戶端框架技術(shù),利用JSON數(shù)據(jù)傳輸標準實現(xiàn)數(shù)據(jù)交換,給用戶提供友好的操作界面,增加用戶體驗。
架構(gòu)的業(yè)務(wù)邏輯層通過Spring2的聲明事務(wù)特性實現(xiàn)事務(wù)封裝,業(yè)務(wù)邏輯層組件由ApplicationContext IoC容器統(tǒng)一管理,實現(xiàn)細粒度的依賴注入。Spring2框架核心基于控制反轉(zhuǎn)(IoC)原理,將組件間依賴關(guān)系的創(chuàng)建和管理置于程序外部。相比基于JNDI的依賴查找方式,IoC模式實現(xiàn)了對象的共享,簡化對象間的調(diào)用關(guān)系。Spring2將依賴配置外置,可自由配置應(yīng)用選項,在不同實現(xiàn)間切換變得容易,所有依賴都通過一個簡單的庫進行管理,讓依賴管理變得極為簡單、高效,如圖4所示。
圖3 系統(tǒng)技術(shù)架構(gòu)
圖4 采用IoC模式前后依賴關(guān)系變化
數(shù)據(jù)持久層采用TopLink作為JPA實現(xiàn)。JPA是一個易于使用、伸縮性強的ORM規(guī)范,提供標準的ORM解決方案,解決了ORM框架之間不兼容的問題,極大地提高系統(tǒng)的可移植性。基于非入侵式的設(shè)計原則,使它能很容易的與其它框架集成;通過面向?qū)ο蟛樵兎绞?避免了SQL語句的緊密耦合。作為JPA實現(xiàn),TopLink將應(yīng)用代碼和數(shù)據(jù)庫模式相分離,在開發(fā)中只須關(guān)注應(yīng)用和對象模型的設(shè)計。另外使用TopLink高速緩存功能,可以高效地處理大量事務(wù)[4]。
表現(xiàn)層由struts2的Action實現(xiàn),Action通過調(diào)用系統(tǒng)的業(yè)務(wù)邏輯方法處理用戶請求,將結(jié)果放入struts2的ValueStack中,返回結(jié)果頁面顯示請求結(jié)果。Struts2的Action是一個帶有execute方法的POJO類,無須繼承任何基類或?qū)崿F(xiàn)任何接口,由屬性直接綁定用戶表單數(shù)據(jù),攔截器通過setter方法將用戶提交的數(shù)據(jù)設(shè)置成Action類的屬性值。所有Action都通過Struts.xml進行配置。
業(yè)務(wù)邏輯層負責系統(tǒng)業(yè)務(wù)邏輯,依照接口和實現(xiàn)相分離的原則,業(yè)務(wù)邏輯接口定義所包含的功能,業(yè)務(wù)實現(xiàn)類提供具體的邏輯實現(xiàn)。通過分離接口和實現(xiàn)類,Action的調(diào)用無需直接與業(yè)務(wù)邏輯實現(xiàn)類發(fā)生關(guān)系,僅依賴于業(yè)務(wù)邏輯接口,去除了Action類和業(yè)務(wù)邏輯實現(xiàn)類之間的耦合關(guān)系,降低系統(tǒng)代碼重構(gòu)的代價。業(yè)務(wù)邏輯層包含系統(tǒng)的業(yè)務(wù)服務(wù)和業(yè)務(wù)對象,業(yè)務(wù)服務(wù)通過調(diào)用業(yè)務(wù)對象和數(shù)據(jù)庫進行數(shù)據(jù)交互任務(wù)。業(yè)務(wù)邏輯組件依賴于DAO組件進行數(shù)據(jù)庫操作。在本系統(tǒng)中,由Spring2容器負責DAO組件的實例化,并將其注入到業(yè)務(wù)邏輯組件,使得持久層和業(yè)務(wù)邏輯層之間關(guān)系的高度解耦。如圖5所示。
圖5 業(yè)務(wù)服務(wù)圖
用戶的每一業(yè)務(wù)請求對應(yīng)具體的業(yè)務(wù)邏輯,每一業(yè)務(wù)請求都是一個不可分的邏輯,因此事務(wù)控制在業(yè)務(wù)邏輯方法中十分必要。Spring2的聲明事務(wù)特性實現(xiàn)了事務(wù)封裝,借助于Spring2的聲明式事務(wù)管理,所有事務(wù)管理在Spring2的配置文件中進行配置[5]。
持久化層實現(xiàn)分為PO層和DAO層。PO層實現(xiàn)持久化工作;DAO層封裝所有的持久層訪問,持久層訪問通過DAO組件實現(xiàn),避免業(yè)務(wù)邏輯組件和持久化訪問的耦合。PO層由兩部分組成:注釋和持久化類。JPA注釋將持久類映射到數(shù)據(jù)表中,類中的屬性和數(shù)據(jù)表的列名一一對應(yīng)。如圖6所示。DAO層組件實現(xiàn)包括DAO接口與接口實現(xiàn),由Spring2容器管理。Spring2制定了面向DAO的通用體系,屏蔽具體持久化技術(shù)的差異,使業(yè)務(wù)邏輯層和具體的持久化技術(shù)達到松耦合的效果,持久化訪問所需的數(shù)據(jù)庫連接和事務(wù)管理都由Spring2的IoC容器注入。
在AcceptanceDAO中定義訪問Acceptance數(shù)據(jù)對象的接口方法,使用TopLink持久化技術(shù)實現(xiàn)AcceptanceDAO接口方法,業(yè)務(wù)層AcceptanceService通過AcceptanceDAO操作數(shù)據(jù),通過這種方法使業(yè)務(wù)層和持久層解耦,如圖7所示。
圖6 實體類結(jié)構(gòu)
圖7 業(yè)務(wù)層通過DAO接口訪問數(shù)據(jù)
本文通過整合Struts2+Spring2+TopLink開源框架,構(gòu)建一個松耦合、可擴展的輕量級Web框架,實現(xiàn)表現(xiàn)層,業(yè)務(wù)邏輯層,持久層相互分離?;诖丝蚣荛_發(fā)的項目驗收管理子系統(tǒng)已成功應(yīng)用于浙江省科技計劃項目管理系統(tǒng)中,很好地解決了項目驗收效率低下的問題。另外系統(tǒng)具有良好的可移植性和可維護性。應(yīng)用實踐表明,本系統(tǒng)對于我國科技計劃項目驗收管理工作有較好的參考價值,對提高我國科技項目管理水平有重要意義,在我國各級科技計劃主管部門有較好的應(yīng)用推廣價值。
[1]Johnson R,Hoeller J,Arendsen A.Spring Framework開發(fā)參考手冊[EB/OL].http://www.jactiongroup.net/reference2/html/,2009-08-07.
[2]官全龍,姚國祥.基于Struts的應(yīng)用架構(gòu)的研究[J].計算機工程與設(shè)計,2005,26(12):25-27.
[3]甘林森.基于Struts+Hibernate+Spring框架的Web應(yīng)用與實現(xiàn)[D].武漢:武漢理工大學,2008:37-38.
[4]宋波,劉杰,周傳生.基于TopLink的J2EE數(shù)據(jù)持久層的實現(xiàn)[J].微電子學與計算機,2006,23(8):132-135.
[5]Craig Walls,Ryan Breidenbach.Spring in Action(中文版)[M].北京:人民郵電出版社,2006:163-164.
Research of Projects Acceptance System Based on Open-source Frameworks LIYuan-dan,XU Xiao-liang
(School of Computer,Hangzhou Dianzi University,Hangzhou Zhejiang310018,China)
In order to simplify the process of projects acceptancemanagement and achieve the scientificity,higheffective of theprojectmanagement,acceptancemanagementsystem solution based on Java EE open-source frameworkswas proposed.In the architecture design,we took the Spring2 framework as the core of system,integrating the Struts2 framework and ExtJS scripting framework as theWeb presentation layer,the TopLink framework as the Java persistence layer.Such,ahierarchical,loosely-coupled,p latform-independent and database-independent lightweightWeb frameworkwas formed successfully.Ithad been applied to the scienceand technology projectmanagementsystem of Zhejiang Province,improves theefficiency of project acceptance.So,the System hasagreat significance to improve themanagement level of China’s science and technology project.
Projectmanagement;inversion of control;loosely-coupled
TP393.09
A
1001-9146(2010)03-0042-05
2009-09-16
浙江省重大科技專項資助項目(C11102)
李元旦(1984-),男,浙江臨海人,在讀研究生,計算機軟件與理論.