摘要:本文圍繞人力資源管理系統(tǒng)的設計與實現,結合軟件工程的開發(fā)理論,根據部門外聘人力資源管理業(yè)務進行系統(tǒng)需求分析,在AppFuse開源框架的基礎上,對Struts+Spring+Hibernate的Web開發(fā)流程做了深入的研究。
關鍵詞:人力資源管理系統(tǒng);MVC模式;開源框架
企業(yè)人力資源管理是企業(yè)管理的一個重要內容,隨著時代的進步,企業(yè)規(guī)模也逐漸擴大。如何管理好企業(yè)內部員工的信息,成為企業(yè)管理中的一個重要問題。建立一個界面友好、架構設計合理的人力資源管理系統(tǒng)是十分必要的。它可以為部門進行有效的人力資源管理,并為公司節(jié)約大量的人力、物力,減少工作中容易出現的一些問題。本系統(tǒng)的主要功能主要實現部門對外聘員工招聘管理、外聘員工薪金管理、項目資源管理、綜合信息查詢、報表生成等。使用該系統(tǒng)不僅可以方便部門人力資源的各層管理人員處理日常事務,而且方便項目經理采用外聘員工、人力資源秘書計算外聘員工薪金等工作。使用后期可在此基礎上擴展本系統(tǒng),使之涵蓋業(yè)務管理的各個方面,形成更全面更完善的產品。
一、J2EE技術結構
由眾多知名廠商共同制定的J2EE平臺規(guī)范利用了Java2平臺的技術優(yōu)勢,為企業(yè)整體解決方案的開發(fā)、部署和管理提供了一套完整的體系結構。J2EE技術的基礎就是Java2平臺,不僅加強了該平臺中的許多優(yōu)點,還提供了對業(yè)務邏輯封裝的EJB組件技術、支持HTTP訪問的Servlets和JSP,以及XML的全面支持,另外它還定義了關于事務管理的JTA和JTS接口及保證消息傳遞的JMS服務等。
二、基于MVC系統(tǒng)模型的AppFuse框架
用AppFuse進行開發(fā)通常有三種模式:“自上而下”、“自下而上”以及“混合模式”?!白陨隙隆笔怯蒍ava對象向數據庫對象創(chuàng)建的過程,比較符合面向對象的設計思維,但是為此要編寫大量的XDoclet的tag?!白韵露稀笔怯蓴祿鞂ο笊蒍ava對象的過程,只需要提供數據庫表結構即可。然而,對于較為復雜的系統(tǒng),尤其是類之間具有大量關聯的情形,仍然需要采用“自上而下”的創(chuàng)建模式。因此,在實際的項目開發(fā)中,將兩種模式進行混合使用比較常見,這也就是“混合”模式。
三、基于Struts框架在人力資源管理系統(tǒng)實現中的應用
1.人力資源管理系統(tǒng)的基本框架
本系統(tǒng)采用基于AppFuse的開發(fā)模式,可以生成60%左右的代碼,并且不同模塊代碼風格一致,有利于開發(fā)人員快速上手。系統(tǒng)的各個子模塊之間功能獨立,可根據用戶的需要動態(tài)進行組合,各個子模塊之間沒有直接耦合,而是通過數據庫之間的聯系由框架進行組合,子模塊的修改只是模塊內的局部修改,不會導致修改的蔓延,從而使系統(tǒng)的可維護能力大大提高,降低了系統(tǒng)開發(fā)的風險。人力資源管理系統(tǒng)是基于AppFuse的三層體系結構,采用了Struts+Spring+Hibernate三種開源框架,使用了基于MVC模式的Struts的框架,并使用Hibernate進行數據持久層操作,使用Spring對各個組件進行依賴注射。人力資源管理系統(tǒng)共分三個層次:數據持久層、業(yè)務邏輯層、Web層。根據人力資源管理系統(tǒng)需求的相關內容,系統(tǒng)總體模塊框圖如下頁圖所示。
2.人力資源管理系統(tǒng)的開發(fā)過程
人力資源管理系統(tǒng),主要實現對外聘員工所有相關信息的信息化管理和生成報表等功能。由于篇幅有限,這里僅對身份驗證、外聘員工招聘管理、綜合信息查詢和報表生成模塊說明系統(tǒng)的設計與實現。
(1)用戶界面設計。用戶界面是Web應用和用戶交互的窗口。用戶界面可以向用戶輸出信息,也可以接收用戶的輸入信息。根據需求分析,可以制定出用戶界面,包括用戶界面的功能、與用戶交互的信息,以及用戶界面之間的相互切換關系。ActionForm Bean是Struts提供的表單數據傳輸對象,用于在視圖層和控制層之間傳遞HTML表單數據。控制層可以從ActionForm Bean中讀取用戶輸入的表單數據,也可以把來自模型層的數據存放到ActionForm Bean中,然后把它返回給視圖。
(2)登錄驗證模塊設計。人力資源管理系統(tǒng)采用了AppFuse用戶管理,用到了容器管理的Form認證方式。采用基于表單的登錄驗證方式,登錄請求由login.jsp處理。通過靜態(tài)應用,login.jsp將登錄請求委派給loginForm.jsp處理。
login.jsp
容器啟動時,調用監(jiān)聽器StartupListener,初始化Spring上下文環(huán)境,設置DAO type,通過LookupDAOHibernate.getRoles取得角色信息,存于application scope中。接著調用UserCounterListener監(jiān)聽器,記錄用戶的登錄改變,然后通過容器Form認證,將請求轉給login.jsp;Login.jsp靜態(tài)引用loginForm.jsp,由其進行主要的權限認證工作。loginForm.jsp表單提交后,將請求轉向/authorize,/authorize的請求被login servlet處理。
(3)外聘員工招聘模塊設計。在人力資源管理系統(tǒng)中,外聘員工招聘管理模塊是系統(tǒng)的重要組成部分,它提供了軟件開發(fā)經理錄用外聘員工的相關功能。當部門需要招聘外聘員工時,派遣公司會提供外聘人員簡歷,首先由部門人力資源秘書將外聘人員簡歷錄入至外聘員工簡歷庫。軟件開發(fā)經理根據部門招聘員工的具體要求來篩選簡歷,并進行首輪面試。通過面試的外聘員工正式進入部門報到,部門為其申請辦公資源,員工等待進入項目。項目經理根據項目需求,進行二次面試。符合項目組要求的外聘員工正式進入部門項目組,不滿足要求的外聘員工等待其他項目。系統(tǒng)利用Spring聲明式的事務管理機制,系統(tǒng)的所有service類都聲明在applicationContext-service.xml中,該文件中包含有一個“txProxyTemplate”bean的聲明,它定義了基本事務策略。其他的service類從“txProxyTemplate”繼承,并可以“重寫”事務策略。
(4)綜合信息查詢模塊設計。系統(tǒng)在綜合信息查詢中,主要完成以下模塊的查詢工作:外聘員工查詢條件、人力資源秘書查詢條件、項目經理查詢條件、軟件開發(fā)經理查詢條件。這個查詢條件涉及多表關聯,在系統(tǒng)數據量非常大的情況下,為了提高系統(tǒng)性能,必須對SQL語句進行優(yōu)化,其中not in與not exists的用法就顯得格外重要。因為在子查詢中,not in對子查詢中的表執(zhí)行了一個全表遍歷。為了避免使用not in,在開發(fā)過程中通常采用外連接(Outer Joins)或not exists。系統(tǒng)采用的是Hibernate2進行數據持久層操作,由于Hibernate2不支持外連接以及一些復雜的SQL語句,對于這種情況,系統(tǒng)采用創(chuàng)建視圖(Vi