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