張勇軍,熊慶國,黎學文
(1.武漢科技大學 信息科學與工程學院,武漢 430081;2.奧博思軟件技術有限公司,武漢 430081)
隨著企業項目規模的擴大、數量的增加、以及管理水平的不斷提高,進行企業信息化不僅是增強企業市場競爭力的客觀需要,也是解決企業管理中突出問題的有效措施[1-2]。由于在項目進展中通常具有階段性和分布性的特點,因而易導致“信息孤島”的存在[3],從而造成部分管理記錄缺失。項目管理系統主要是借助計算機技術進一步提升項目管理水平,需要考慮企業項目的運作管理、項目資源配置、管理知識共享以及多項目管理等需求。系統主要業務參數是基于成本、時間、質量這3個靜態指標[4]建立的,為了能有效提高項目管理效率和團隊協作意識,因此設計和開發了適合企業發展的項目管理系統。該系統對于實現企業管理的戰略目標,為企業管理提供全面的數據共享具有重大意義。
.NET作為一項主流且十分成熟的軟件開發技術,在組織和管理數據方面,擁有眾多新的設計研發模式。MVC模式就是其中一種非常優秀的設計模式,具有代碼耦合度低、靈活性強、重用性高等優點。而將AJAX技術融入MVC模式系統的三層結構設計之中,利用AJAX的高交互性設計管理系統的Web頁面[5],從而使頁面能高效地獲取和處理數據,提供良好的用戶體驗性。
系統采用三層架構,即由表現層、業務邏輯層、數據訪問層組成,這樣可以更加適合業務復雜的應用系統。在表現層使用MVC(model view controller)模式,將展示和邏輯徹底分開,一個Model可以適應多個View需求,這樣當有不同業務需求時只關注View視圖而不用改動底層代碼。在數據訪問層使用抽象工廠結合接口的設計模式,這樣可以使系統兼容不同的數據庫,而不用因為數據庫的更換而修改數據訪問層中的底層代碼。這樣的設計更好地貫徹了程序“高內聚、低耦合”的思想,使系統重用性高,更加易于拓展和維護,系統框圖如圖1所示。

圖1 系統架構Fig.1 System frame block diagram
表現層是系統面向用戶的窗口,視圖設計的優劣影響到用戶操作習慣和快速了解項目信息的進度。傳統的WebForm技術采用后臺代碼隱藏技術CodeBehind,即每一個aspx前臺頁面都對應著一個.cs后臺文件,這樣雖然清楚地實現了視圖和邏輯功能頁面的分離。但是隨著軟件規模的增長,程序的擴展和維護就顯得十分困難了。而MVC設計模式能夠成功地實現.cs文件中邏輯功能和數據功能的分離,具有代碼耦合度低、模型靈活性強、重用性高等優點。
從本質上看,MVC設計模式是由模型(model)、視圖(view)、控制器(controller)3個部分組成[6],將應用程序的輸入輸出和處理功能彼此分開,采用分工合作的方式實現系統的功能,這種設計模式使程序代碼結構清晰,有效地降低了模塊之間的耦合度,易于維護和擴展。
模型層實際上就是ViewModel,表示最終呈現在View上的數據,不包含業務邏輯,也不包含數據操作,只是負責顯示實體類和從數據訪問層中傳遞View所需數據。而Model元數據的一個主要作用就是控制Model對象在View上的呈現方式[7]。在MVC的3個部件中,模型擁有最多的處理任務,并且與數據格式無關[8],這樣一個模型能為多個視圖提供數據。正是由于同樣的模型代碼可以被多個視圖重用,所以減少了代碼的重復性,這樣可以讓開發人員更加靈活地操作數據庫對象。
視圖View是應用程序中實現與用戶交互的部分,是模型的外部表現形式,其界面主要由HTML和XML元素組成,由JQuery實現動態效果,通常實現數據的輸入和輸出功能。當用戶對視圖界面進行交互操作時,控制器將訪問模型中的數據并決定數據的顯示形式,再交給視圖渲染頁面。也可以根據相同的數據模型顯示不同的視圖,比如網頁端和移動設備端的視圖頁面。
視圖層的開發采用視圖引擎Razor,Razor簡潔的語法和靈活的布局使得前端的開發變得更加容易,View實質就是在C#語法與HTML代碼之間進行切換,為了使部分界面風格保持一致,本系統中視圖采用繼承模板和分布視圖的方式,然后再根據不同的需求,綁定視圖的具體內容。在視圖的顯示方式上,使用JQuery UI等優秀的前端技術,降低了視圖的開發難度,有利于創建個性化的前端界面,提升用戶體驗度。在視圖層與控制層數據交互的過程中,盡可能地使用異步AJAX方式請求數據[5],將得到的JSon格式數據渲染在前端界面上,這樣可以在提升用戶體驗的同時,獲取更高的數據處理效率。
控制層在MVC模式中有著非常重要的作用,是模型與視圖的橋梁,保持模型和視圖之間的同步[9],它接收并解釋由瀏覽器傳入的用戶請求,再調用模型和視圖去完成瀏覽器的不同請求。Controller實現傳統的Webform開發方式中的業務邏輯和數據顯示分離的功能,使各模塊間的耦合性降低。當用戶發出數據請求時,會自動調用Controller中相應Action方法,將請求傳遞給Model處理,并將處理的結果以ViewModel的形式返回給相應的視圖,實現對界面數據顯示的控制和更新Model對象的狀態。
業務邏輯層是表現層和數據層之間的銜接,包含了業務規則相關的算法和處理代碼。邏輯層主要面向表現層的業務應用,為表現層提供相關業務服務。對系統中涉及的管理模塊進行有效封裝,其中主要包括流程審批模塊、項目管理模塊、工時填報模塊等。同時,在這個層次中,還封裝了系統基礎模塊,包括用戶管理、角色和權限管理、日志管理、參數配置等。
數據訪問層包含數據處理代碼和數據存儲代碼,負責與數據庫之間的通信。這個層次與MVC的Model實現的功能是有區別的。在本系統中,Model主要是負責數據的傳遞,當數據變化時,通過Controller實現對View的刷新,而對數據的讀取操作是在數據訪問層進行的。三層結構的每一層在程序處理的任務上分工明確,層與層之間邏輯分離,但又存在通信接口,最大限度地實現程序的“高內聚,低耦合”設計思想。
數據層采用LINQ技術,用LINQ來處理數據的對象關系模型(ORM),可以實現Linq to SQL、Linq to EF、Linq to XML等不同類型的數據操作,從而提高數據訪問和存儲效率。其中的 EF(entity framework)技術可以方便地實現對數據庫的增刪查改等操作,它通過ORM(對象-關系映射)封裝了繁瑣的底層SQL代碼,ORM實現數據庫表中字段與實體對象屬性之間的映射,簡化了程序員的工作量,從而提升系統開發效率。
項目管理系統需要實現大量的數據檢索與分析、流程申請與審批、報表的打印與導出等功能,同時需要實現與企業內其他辦公系統(CRM、ERP)之間的接口,系統功能圖如圖2所示。

圖2 系統功能Fig.2 System function diagram
本文中的項目管理系統是以項目管理為核心[10],集成了流程管理、文檔與知識管理、質量管理、研發需求管理、成本與費用管理、客戶與合同管理等功能,是一個一體化的企業項目管理和運營平臺。
流程管理系統底層擁有一套完整的類庫與方法,可以實現不同業務需求的流程審批功能,并且可以根據不同部門的不同需求實現管理人員的流程自定義功能,只需要在后臺進行相關的配置就可以適應業務需求變化,并且支持項目任務計劃的審核模式、凍結模式。
文檔與知識管理操作人員上傳的文檔可以根據不同需要保存在不同的目錄下。申請時上傳的文檔保存在項目目錄,流程審批過程中上傳的文檔可以同時保存在項目目錄與流程目錄下。平時產生的一些知識記錄可以保存在系統公共空間中,以便實現知識的共享。
模板功能系統還擁有強大的模板功能,在創建新項目時可以選擇是否啟用項目模板,不同類型的項目,可以配置不同的項目計劃模板。項目計劃模板包括任務WBS結構、里程碑定義、工期估算、任務關聯定義、預期文檔定義、階段關聯定義、責任角色和崗位定義、審核角色和崗位定位等。可以從項目中導出到模板,也可以從項目模板中快速復制。項目模板有效地提高了項目的標準化程度,也促進了項目知識的積累和共享。
質量管理項目管理中很重要的一個功能就是實現項目的質量可控。甘特圖和里程碑視圖,各種統計圖表都可以很好地實現這個功能。在質量管理中集成了計劃編輯、問題跟蹤、風險管理、周報月報管理等功能,通過智能化的項目預警機制,預警消息支持郵件、短信、站內消息及在線即時通知等方式,旨在提高項目質量。
成本與費用管理項目管理人員可以清楚地掌握項目各階段的資源分配量以及利用率,從而制定出合理的資源分配使用制度,進而降低項目成本。
商務管理系統擁有完整的商務管理功能,包括合同管理、客戶管理和供應商管理。
參數配置系統提供了豐富的參數配置功能,并且有完整的日志記錄功能,以適應不同部門的個性化需求。同時提供可擴展的、標準的數據接口,很容易實現與企業內其他辦公系統之間的接口,例如OA或者門戶系統的單點登錄。
數據庫設計是整個管理系統設計的核心部分,它的設計優劣直接關系到系統代碼執行的效率與穩定性[11]。對于數據庫設計來說,最重要的是遵循數據庫設計的一般原則,即安全性、完整性、一致性、規范性。系統中涉及到3個數據庫,分別是項目數據庫、用戶數據庫、文檔數據庫,這樣設計是為了不同數據的增刪查改操作不同的數據庫對象,從而提升系統性能。
系統部署在Window 7操作系統上,經Google、Fox、IE8及以上等主流內核瀏覽器測試,皆具有良好的穩定性以及體驗性,能很好地實現所需要的功能。系統實現后的管理員部分界面如圖3所示,普通用戶部分界面如圖4所示。

圖3 管理員界面Fig.3 Administrator interface diagram

圖4 用戶界面Fig.4 User interface diagram
本系統通過對基礎對象和功能模塊的詳細設計,充分利用MVC模式在降低代碼耦合度,增加系統健壯性等方面的優勢,以及AJAX技術在提高系統頁面交互性的高效處理作用,完成了企業項目管理系統的各系統角色的功能需求開發。系統提供了友好的用戶界面,提高了企業的項目管理質量與水平,達到了預期的效果。
[1] 曾玉成,王俊川.企業戰略管理與項目管理耦合研究[J].四川大學學報:哲學社會科學版,2014,3(13):86-96.
[2] 黎學文,金輝輝.奧博思軟件-項目管理系統解決方案[EB/OL].(2014-10-14)[2014-10-14].http://123.56.92.205/PowerProject2/ Pages/Documents/DocumentList.aspx?Category=Company.
[3] 張文濤,常紅星.基于ASP.NET的B/S架構下的項目管理系統的網絡安全模式設計[J].計算機科學,2008,35(2):47-53.
[4] 黃巍.項目管理中范圍與時間、成本、質量的關系研究[D].上海:上海交通大學,2008.
[5] 唐永瑞,張哲敏.基于Ajax與MVC模式的信息系統的研究與設計[J].電機技術應用,2014,40(2):128-131.
[6] 劉淑珍,王文帥.基于MVC模式的研究所評審系統的設計與實現[J].核電子學與探測技術,2014,34(1):59-62.
[7] 蔣金楠.ASP.NET MVC4框架揭秘[M].北京:電子工業出版社,2013:123-124.
[8] 唐永瑞,張達敏.基于SSI的應急事務管理系統的設計與實現[J].計算機技術與發展,2014,24(4):151-155.
[9] 匡芳君.基于MVC模式的網絡教學平臺設計[J].計算機技術與發展,2010,20(12):251-254.
[10]Xiang Pengcheng,Zhou Jin,Zhou Xiaoyu,etc.Construction project risk management based on the view of asymmetric information[J].Application of Asymmetric Information Theory to Construction Project Risk Management,SCI,2012,138(11):158-165.
[11]王基礎.基于WEB的蜀南氣礦項目管理系統的設計與實現[D].成都:電子科技大學,2014.