張曉晨 杭潤東 徐金寶 張建德
摘 要: 在對傳統的人事管理系統開發模式進行分析的基礎上,通過對Spring、Struts和Hibernate框架的研究,整合出基于Java EE的高效開發模型。以該模型為基礎,結合人事管理的實際需求,設計開發了人事管理軟件系統。經過與傳統開發模式進行比較,充分驗證了該模型在軟件開發中的有效性。
關鍵詞: Java EE; 高效開發模型; 薪資; 績效
中圖分類號:TP311.52 文獻標志碼:A 文章編號:1006-8228(2013)07-36-04
0 引言
隨著一些小型企業向中大型企業轉型,越來越多的公司開始對企業內部管理系統進行升級,將企業內部的信息/數據進行整合,以方便信息共享,提升管理水平。一般企業首選的是ERP系統,它是針對物資資源管理(物流)、人力資源管理(人流)、財務資源管理(財流)、信息資源管理(信息流)集成一體化的企業管理軟件。 但是,ERP的高集成性和高綜合性使得它的維護成本也變得相當的高,所以,如果不是大型企業一般都不會使用完整的ERP系統軟件。為了滿足企業自身對ERP系統相關功能的需求,同時又降低管理成本,很多企業都會定制自己公司的管理軟件,而不是直接購買ERP系統。
在此背景下,以人事為切入點,開發出一款靈活性高,功能性強的人事管理平臺必然會受到市場的歡迎。平臺的一個好處就是在一個系統框架下,可以不斷根據需求定制出新的功能,有很好的二次開發性,提高開發效率,減少開發成本。
本課題重點研究的是人事管理中的薪資管理和績效管理。薪資管理是對工資信息進行管理,幫助公司的人事部門提高工作效率,實現工資管理工作流程的系統化、規范化和自動化,避免以往手工填寫單據的低效率,減少出錯率;而績效管理系統主要是負責制定績效計劃、設定績效計劃監督人和績效考核對象,并且在規定時間內,完成考核人自評、監督人評價,最后得出績效完成情況分數,在工資發放前,完成績效工資的統計。
1 基于Java EE規范的SSH開發模型
Java開發人員對SSH肯定不會陌生,SSH即所謂的Spring+Struts2+Hibernate三大開發框架,這三者相互獨立,可以單獨使用,而又能完全融合為一體,各司其職,因此無數Java架構師為其著迷,發揮出無窮的想象力,整合出很多優秀的開發模型。這些優秀的模型,如圖1所示的開發模型讓很多開發人員為其折服(其中JQUERY為前臺JS框架)。
1.1 框架的功能介紹
本開發模型中的三個框架的功能與常規整合方案相一致。
Spring擔任容器身份,包含并管理應用對象的配置和生命周期,將簡單的組件配置、組合成為復雜的應用。主要涉及兩項強大技術,一個是控制反轉(IOC),另一個是支持面向切面編程技術(AOP)。
Struts2用來處理請求,它的主要功能可以用三個單詞來形容:“Request”、“Control”、“Response”。涉及的主要技術是攔截器(Interceptor)機制,使得業務邏輯控制器能夠與Servlet API完全脫離開。
Hibernate作為數據持久層的框架,可以屏蔽數據庫差異,讓開發人員使用對象編程思維操縱數據庫。主要涉及的技術是緩存管理(CacheManager),事務管理(TransactionManager),延遲加載(lazy load)等。
Hibernate-Generci-Dao包含GenericDao,GenericEntityDao兩個類,前者負責實體無關DAO方法的實現,后者負責實體相關DAO方法的實現。兩者都繼承于HibernateDaoSupport,并且都基于泛型,使用相當方便。只需要Spring注入的SessionFactory和實體類名就可以通過放射機制獲得實體對應的DAO對象。
根據此思想,又加入繼承自SimpleJdbcDaoSupport的SimpleJdbcDao自定義類來負責純JDBC操作,這樣就可以在Hibernate不滿足需求的時候調用JDBC方法對數據庫進行操作。最后將Hibernate-Generic-Dao和SimpleJdbcDao中常用的方法在IBaseDao接口中進行聲明,并在BaseDao類中實現。這樣就不需要對每個實體類重復編寫DAO,大大減輕了對數據庫CRUD的重復性編碼工作。關系圖如圖2所示。
1.2 主要特點
⑴ 摒棄傳統的以hbm.xml對實體類進行映射,采用JPA標準的Annotation對實體類與數據表進行匹配映射,簡潔明了,快捷,方便,易于維護;
⑵ 對所有自己編寫的實體類,Service類,Action類采用Spring的Annotation標準進行注解,加上Spring的組件掃描(component-scan)機制,減輕注冊bean的工作量;
⑶ 整合C3P0數據源,其強大的可配置性可以更好地提高數據庫性能;
⑷ 整合緩存框架 EhCache,其快速、精干,多策略緩存等特點在業內受到一致好評。
⑸ 基于切面技術配置事務管理,權限控制,日志存寫;
⑹ 基于泛型的IBaseDao可以減輕開發人員大量的重復性編碼工作來注重業務邏輯。
2 人事管理平臺設計與實現
2.1 課題業務需求分析
2.1.1 薪資管理模塊
⑴ 工資項目管理功能:對具體工資表中的各個工資項目進行設定及維護,須考慮到系統將來的擴展性,對于企業新的工資項目可以動態增加及刪除、可以根據不同地區福利和信息制定模版,方便HR錄入。
⑵ 固定工資管理功能:批量維護員工的固定工資信息,如基本工資、采暖補貼等。
⑶ 工資發放管理功能:工資進行結算、發放的管理。可以對員工的各個工資項目進行批量計算,例如對某個部門的員工工資進行計算,包括考勤工資、五險一金、應發金額、應扣金額及實發金額等。
⑷ 查詢統計功能:要求既可以單項查詢,比如查詢某個員工的工資情況等;也可以多項查詢,比如某部門員工在某個月的工資情況等。某個部門或整個公司在某月或者某年的工資匯總統計等。
⑸ 報表打印功能:每月發放工資時,要求能夠打印本月的工資表、工資統計表和隨工資發給每個職工的工資條。
2.1.2 績效管理模塊
⑴ 績效計劃制定功能:績效計劃中,每個計劃都應含有可以動態添加、刪除的選項,每個選項都有不同的評分與其對應。
⑵ 績效計劃實施功能:將績效計劃分配到不同的崗位,并根據不同崗位設置不同的監督人員、一個崗位可以允許多個績效考核。設置考核時間,超過考核時間未自評的予以自動放棄并按零分處理,監督人員未在規定時間進行考核評價的,扣除監督人員的相應職能績效分數(所有績效分數,為零后不再扣除)。
⑶ 績效考評:績效考評分為自評和監督考評,都需在績效實施時間內完成。考評直接根據績效計劃相應選項選擇即可,自評(60%)+監督考評(40%)=總績效分數100%。如果超過要求時間,則績效自動關閉,不允許補辦,分數為零。
⑷ 績效查詢:不同人員登錄查看不同的績效情況,普通職工只能查看自己的績效情況,監督崗可以查看自己負責的績效相關情況。管理員和領導崗可以查看所有績效情況。
⑸ 提醒功能:對需要自評或者考核評價的人員,在他們登錄系統后就可以看到需要自己完成的工作導航,方便或指引登錄人員完成工作。
2.2 課題平臺需求分析
在獲得上述業務需求后,還進行了平臺需求分析。與薪資管理模塊,績效管理模塊必然掛鉤的因素是“人”,即企業員工,以及整個企業的組織結構,因而涉及到員工與部門管理,另外與績效薪資項相關的考勤信息,獎懲信息也需要維護,所以添加人事管理模塊。
另外,作為一個平臺,必須安全可靠,因此我們又添加了一個功能模塊叫做系統管理,主要負責用戶,角色,權限的管理;而日志等管理,作為系統的安全支撐是必須的。
2.2.1 人事管理模塊
⑴ 部門信息管理功能:按照部門顯示部門員工列表,可添加部門員工信息,可對部門信息、員工信息進行維護操作。
⑵ 考勤管理:分為請假管理和加班管理,記錄信息準確詳細,請假信息還需要有銷假操作,從而可以更加公平地計算績效薪資項。
⑶ 獎懲管理:企業員工在獲得某項成績時要適當進行獎勵,而對觸犯公司員工章程,或做出對企業有損失的行為要有相應的懲罰,這些信息在此維護,并且與績效薪資項掛鉤。
2.2.2 系統管理模塊
⑴ 日志功能:記錄管理員進行的所有操作,記錄操作人,操作時間,操作方法。
⑵ 角色管理:維護系統的角色信息,基于角色的權限控制。
⑶ 用戶信息管理功能:用戶信息維護。
2.3 平臺架構
綜合以上需求分析,總結出如圖3所示的平臺架構。我們選擇其中部分功能模塊進行介紹。
⑴ 考核指標管理:首先將考核指標分成不同的類別,比如團隊協作,工作態度,專業技能等類別,然后在每種類別中又分成定量和定性指標,指標可維護,并且指標分類也可維護;
⑵ 考核模板管理:即為每個崗位定制一套指標集合,在創建考核計劃時可以直接選擇模板為其生成考核問卷,同時可以添加或者刪除指標;
⑶ 考核計劃管理:選擇需要考核的崗位,并為其定制考核指標;
⑷ 嘉獎及扣款標準管理:在考核結束后將每個人的分數對照指標進行嘉獎及扣款;
⑸ 月薪資管理:創建月薪資計劃,查詢每個月的薪資記錄,為員工批量或者單獨設置薪資項的值,計算出相應的項目,將薪資記錄導出到Excel以便打印,進行結賬或者反結賬操作,向員工發送薪資提示郵件;
⑹ 津貼制管理:包括職務津貼,職稱津貼,學歷津貼,工齡津貼四項,按照不同標準進行維護;
⑺ 薪資數據分析:以圖表形式展示部門總薪資的月度折線圖,職務月平均工資的柱狀圖,還有公司薪資按照部門的分布圖等;
⑻ 預備薪資項管理:系統設置了十個預備的薪資項,可以設置其計算方式加或減,修改薪資項名稱,啟用或者不啟用;
⑼ 薪資計算公式管理:包括五險一金的計算公式,個人所得稅的計算公式,黨費計算方式,以及個稅9級超額累進稅率等維護操作;
(10) 角色管理:為角色添加刪除用戶,為角色授權;
(11) 節點管理:由于本系統采用RBAC的權限控制思想,節點作為功能點被授予給角色。
2.4 前臺考核模塊
績效考核功能,即員工自評后上級領導再對其進行評價,最終生成考核成績,并將成績按照標準折算成當月的考核薪資,計入薪資項中。在員工登錄前臺時,系統會彈出當月考核的導航,方便員工進行自評以及領導對員工評價。
2.5 數據庫設計
2.6 開發模型優勢
⑴ 將RBAC權限管理與開發框架中Spring的AOP技術結合,在ServiceImpl層設置切點,判斷當前用戶是否擁有權限,有則放行,無則拋出異常讓Action捕捉,返回提示頁面;
⑵ 在Action和Service中需要ServiceImpl對象時不再需要自己通過new給出,只需要@Resource對需要的對象進行注解,即可讓Spring提供;
⑶ 運用@TableGenerator注解,即可不再為Oracle自增長編寫序列;
⑷ Struts2可以利用org.apache.struts2.dispatcher.ChartResult返回JFreeChart的圖表,無需配置數據流。
2.7 平臺運行效果圖
平臺運行效果圖如圖4、圖5所示。
3 結束語
本系統對薪資進行管理,提高了工作效率,實現了工資管理工作流程的系統化、規范化和自動化。在績效系統模塊中,以模板創建考核問卷,指標分為定量和定性,考核分為自評和上級評價,這些實現方式使得系統在操作便捷性,考核公平性,數據可分析性等方面有了很大的提高。其中豐富的數據圖表,是提高數據可分析性的關鍵。
一個優秀的開發模型可以提高開發效率,降低開發成本,充分利用開發模型,將業務邏輯與模型相結合,可以降低業務邏輯實現的復雜度。本課題使用的開發模型在DAO層有很好的封裝性,但在Action層和Service層,乃至前臺JS的代碼仍然有著很高的重復性,這可以作為下一階段研究的方向。
參考文獻:
[1] 羅尼(KevinLoney).Oracle Database 11g完全參考手冊[M].清華大學出版社,2010.
[2] Brian Goetz, Tim Peierls, Joshua Bloch等.Java Concurrency inPractice[M].機械工業出版社,2012.
[3] 楊毅宏.績效與薪酬管理全案[M].電子工業出版社,2011.
[4] Robert C Martin.代碼整潔之道[M].人民郵電出版社,2010.
[5] Spring 3.x企業應用開發實戰[M].電子工業出版社,2012.
[6] 孫衛琴.精通Hibernate:Java對象持久化技術詳解[M].電子工業出版社,2010.
[7] 陶國榮.JQuery權威指南[M].機械工業出版社,2011.
[8] Andy Budd.精通CSS:高級Web標準解決方案[M].人民郵電出版社,2010.
[9] 崔群法.Struts2.0從入門到精通[M].電子工業出版社,2009.