孫道兵,田蘇梅,施元超,劉曉光
(上海航天控制技術研究所,上海 201109)
上海某院某研究所是擁有兩千多名員工的航天大所,員工組成成分復雜,人力資源管理業務多樣,涉及面廣,人員及其崗位、職位變化頻繁,業務邏輯復雜,業務數據種類繁多,業務人員日常需要花費大量的時間和精力來處理各種紛繁復雜的業務過程和數據.而且單位內并沒有一個系統能夠完整實現人力資源管理相關業務管理的信息化,當前手工業務管理模式效率低下,容易出錯,不利于大量歷史數據的統計匯總分析,不便于為領導層提供好的決策依據.同時,盡管市場上成熟的人力資源管理系統數量比較多,但是與本單位管理需求差異較大,不能很好的適應本單位人員管理的特殊性.
基于此,集合人力資源部、信息技術部門的管理和技術力量,自主構建管理系統開發平臺,該平臺支持可持續開發,系統具有良好的伸縮性、可擴展性、可移植性.并基于此平臺實現人力資源管理業務,提高工作效率,提升人力資源管理業務水平,為高層決策提供高質量的人力資源數據.
基于當前業界先進的Spring+SpringMVC+Hibernate開源技術自主構建JavaEE 開發平臺.
系統開發平臺支持可持續開發,系統具有良好的伸縮性、可擴展性、可移植性.
平臺采用B/S 多層架構,提供良好的用戶體驗,集成Activiti5 流程引擎,支撐企業信息管理的業務流程,同時基于Apache CXF 服務框架構建服務模塊,滿足系統集成要求及面向未來的服務架構.
運用Spring、SpringMVC、Hibernate 框架建立了平臺基礎,并在其中集成了Activiti5 流程引擎,Apache CXF 服務基礎框架、spring-quartz 定時任務調度.技術框架如圖1所示.

圖1 系統平臺技術架構
基于JQuery EasyUI 前端框架技術實現前端展示,面向HTML5 技術,兼容主流瀏覽器.
基于Servlet3 規范的模塊化設計,應用RESTful結構,統一接口規則.
創建基于Web的遠程部署、管理控制臺使開發人員、系統管理員與生產環境完全隔離,結合數據加密技術,既保證了敏感數據安全,又提高了部署、管理效率.
數據庫管理系統采用Oracle 11g R2 以上版本.
2.3.1 多元主體權限管理模型
創新設計了多元主體權限管理模型,結合Spring攔截器技術設計了系統平臺的訪問控制與權限管理系統內核.這個授權系統解決了傳統系統僅可進行單一用戶授權的問題,可從用戶、組織機構、崗位、黨政職務、型號職務等多維度授權.登錄認證通過后,查詢該用戶的授權信息,即角色、菜單功能、許可操作集合.
圖2中的“角色對象”它負責建立主體與角色之間關系,這個關系有3 個要素:角色、主體對象、對象類別.要素“角色”是系統中角色實例;要素“主體對象”是主體的實例,是向某角色中分配的對象;要素“對象類別”描述主體對象的分類,在關系中用來識別主體對象,從而我們可以采用相應的算法取得主體關聯的用戶集合.

圖2 多元主體權限管理模型示意圖
(1)實體對象及關系設計
權限管理涉及到眾多實體,有兩個主要的實體關聯:
① 通過“角色對象關聯表”建立角色與主體對象的關系;
② 通過“角色功能樹關聯表”建立角色與權限的關系.
實體關系圖如圖3所示.
實體表有:系統用戶表、組織機構、職務信息、崗位信息、用戶組對象.
員工與用戶是一對一關系;
員工與組織機構是多對多關系,即一個組織機構可有多個員工,員工可在多個組織機構任職;
員工與崗位是多對多關系,即一個崗位可有多個員工,員工可在多個崗位上擔任某個職務;
臨時項目組或特殊的人員組合,設為用戶組,與用戶是多對多關系.
角色對象關聯表是“角色對象”的關系數據庫二維表具體形式,它關聯角色表及各主體實體表.

圖3 多元主體權限管理實體關系圖
例如:“中層干部”角色中分配了“部長”、“副部長”、“主任”、“副主任”這幾個對象,人力資源的員工崗位職務信息中員工A、員工B 及員工C 通過職務關聯被間接“分配”至“中層干部”角色,通過系統用戶表得到用戶A、用戶B 及用戶C,當給角色“中層干部”授予某種權限時,即實現對應給用戶A、用戶B 及用戶C 授予了相應權限.同樣“用戶及終端管理”角色中分配了“信息中心”這個“組織機構”,示例的數據表明用戶X,用戶Y 實際分配于這一角色,當管理員給“信息中心”這個角色授予某種權限時即實現了給用戶X,用戶Y 授權.
(2)權限驗證
通過Spring 框架攔截器(interceptor)機制實現所有訪問URL的權限驗證處理.用戶登錄后會話對象中保存的“用戶角色、菜單功能、許可操作集合”授權信息作為本處理的輸入.權限控制活動如圖4所示.
① 獲取登錄用戶所關聯的角色,包括:用戶對象分配的角色+用戶關聯的組織崗位分配的角色+用戶所在組織機構及其所有上級組織機構分配的角色.
② 從角色功能關聯表查詢用戶、用戶組織機構、用戶所在崗位關聯的角色、這些角色所關聯的功能及其操作集合.
③ 將用戶角色、菜單功能、許可操作集合保持在用戶會話對象中,用于驗證用戶訪問操作URL的合法性、限制訪問資源的范圍.

圖4 權限控制活動圖
2.3.2 代碼及報表自動生成
在平臺效率方面,該平臺創新設計了基于數據物理模型的實體代碼生成工具.基于元數據的代碼自動生成功能,避免重復的機械的工作,按照統一的規范生成實體類,并具有自動化在線表單頁面設計、自動化報表設計功能.
(1)自動生成代碼
連接到數據源,自動獲取到全部數據表,選擇數據表,創建模型.
通過freemarker 模板自動生成代碼.自動生成的代碼包括:列表界面、新增界面、查看界面、審核界面、controller 控制器、service 接口及service 實現代碼、實體類.目前平臺設置的模板列表如圖5所示.

圖5 模板列表
(2)自動化報表設計
編寫SQL 語句后,自動解析出數據列,然后對每個數據列進行展示維護.創建成功后,自動生成訪問的URL 地址.對用戶分配該報表地址,進行報表查詢展示.自動化報表設計功能界面如圖6所示.

圖6 報表設計
為提高人力資源管理業務工作質量,提高工作效率,做好決策依據,有必要將以往大量重復的業務活動利用現代化的信息技術手段進行管控,通過建立業務信息的關聯模型,使業務數據的管理自動化、智能化,從而大幅度消減業務人員的重復勞動,提高工作效率,提升人力資源管理業務水平,為高層決策提供高質量的人力資源數據.
通過該系統平臺搭建的人力資源管理系統,提供了人力資源管理的數據管理、業務管理以及數據展示功能[1-13].系統功能框架圖如圖7所示.
(1)數據管理能力
主要實現了人力資源數據的信息化管理功能,并作為其他應用系統的基礎數據.建立組織機構、員工信息開放式服務,供其他系統調用,同時向注冊系統發布組織機構、員工信息變更信息.具體包括以下功能模塊:
① 組織管理:實現組織機構設置、職位管理、崗位管理,按崗位說明書建立崗位體系;按照“單位-部門-崗位”實現對組織的信息化管理.
② 人員配置:實現人與崗位的對應,包括減員、增員、員工信息、試用/見習管理、內部調動等功能.
③ 勞動合同管理:實現了合同簽訂、變更、續簽、解除記錄的查詢及相關管理、提醒功能.
④ 領導干部管理:實現行政干部職務信息、任免職管理、考核情況登記等功能.
⑤ 型號干部管理:實現技術干部職務信息、任免職管理等功能.
⑥ 檔案信息管理:實現員工個人基本信息的登記、變動、查詢等功能.
(2)業務管理能力
主要實現了在人力資源數據信息的基礎上,結合各項人力資源管理業務流程,開展具體的應用[14,15].具體包括以下功能模塊:
① 績效管理:實現了可以按部門管理也可以面向項目定制的績效考核管理,以及360 度評估、量化考核等功能.
② 薪酬管理:實現了面向部門領導的薪酬發放功能和面向員工個人的查詢功能.
③ 考勤管理:實現了考勤的外部數據導入、統計管理、實時假期控制、請假處理、出勤記錄查詢等功能,并對出勤數據進行統計分析.
④ 培訓管理:實現了培訓需求上報、培訓計劃匯總、培訓評價、培訓資源管理、培訓費用統計、培訓檔案記錄等管理功能.
⑤ 招聘管理:實現了根據崗位空缺發布信息制定招聘計劃的功能.
(3)數據展示能力
具體包括:報表中心,主要實現了基于上述模塊和不同應用者的權限的各種報表統計、分析、展示、查詢功能.
本文后續將詳細介紹其中的考勤管理模塊的設計與實現.

圖7 人力資源管理系統功能架構
全所員工出勤存在多種刷卡狀態,有各類請假、請假后又出勤、工作日歷設置也可變、有部分員工公假、企業特殊時段假等,為了應對這種復雜多變的出勤情況,保證每個員工考勤記錄正確,設計了考勤日志計算引擎,計算出每個員工每天的出勤狀態值及文字表述.在這些數據基礎上,提供了各類考勤狀態查詢、綜合統計分析.考勤管理模塊用例圖如圖8所示.

圖8 考勤管理用例圖
3.2.1 請假申請及查詢
利用activiti 框架,實現了員工在線辦理請假申請審批流程.
各類請假,在同一時間只能有一類有效的請假信息.按部門、請假員工工號、請假姓名拼音、請假類型、起止查詢日期執行查詢,實現了各類角色分級查詢功能.
請假時間計算規則:
(1)事假、病假、市內公出請假起止時間記錄單位精確到分,請假時間計算:計量單位為小時,不包括非工作日,采用四舍五入原則計算;
(2)帶薪休假請假起止時間記錄單位精確到天,請假時間計算不包括非工作日;
(3)產前假、哺乳假請假起止時間記錄單位精確到小時,請假時間計算不包括非工作日,且每天最多請1 小時;
(4)其余公假類中請假類型請假起止時間記錄單位精確到天,請假時間計算包括工作日和非工作日.
事假、病假、工傷假、帶薪休假請假人為單人,其余請假類型請假人可多選.
3.2.2 刷卡記錄
讀取考勤機上的原始刷卡記錄,并依據考勤刷卡時間,計算異常類別.具體計算規則如下:
(1)讀取系統設置的上班時間,下班時間;
(2)上班時間容忍一分鐘:上班時間+1 分鐘,上班遲到:30 分鐘(系統可設置),下班早退:30 分鐘(系統可設置);
(3)首先判斷今天是否需要出勤,如果否,則不計算;如果是,則計算.
進所時間和出所時間相同,表示單次打卡或者未打卡,出勤狀態為“缺勤”;
進所時間>=上班容忍時間 &&進所時間<上班遲到,出勤狀態為“遲到”;
出所時間>=下班早退 &&出所時間<下班時間,出勤狀態為“早退”;
進所時間>=上班遲到 &&出所時間<=下班早退,出勤狀態為“上下班缺勤”;
進所時間>=上班遲到,出勤狀態為“上班缺勤”;
出所時間>進所時間,且出所時間<=下班早退,出勤狀態為“下班缺勤”;
進所時間<上班容忍時間 &&出所時間>下班時間,出勤狀態為“正常出勤”.
3.2.3 考勤統計
考勤統計分析以考勤數據為基礎,對個人、部門考勤數據進行匯總統計,分為:個人考勤信息、部門考勤匯總和出勤統計分析.考勤統計分析數據權限設計原則:個人考勤信息對普通員工開放查詢權限,部門考勤匯總和出勤統計分析,對領導及具有該菜單功能權限的角色用戶進行開放查詢.
個人考勤信息:以日歷卡片形式顯示員工每月每日的考勤狀態.默認顯示系統當月的考勤狀態,可切換年或月顯示不同月份的考勤日志顯示考勤刷卡進出所時間.界面展示如圖9所示.

圖9 個人考勤信息界面
(1)顯示刷卡記錄
進所時間~出所時間,時間格式:HH24:MI.
(2)顯示考勤狀態
出勤、缺勤n小時、某種假n小時、遲到、早退、刷卡異常.
(3)顯示假日及特殊工作日
若是異常刷卡,顯示“說明”按鈕,點擊此按鈕可發起刷卡異常說明流程.
若有缺勤,顯示“補假”按鈕,點擊此按鈕可發起請假流程,傳遞缺勤的時間,為2 補假提供方便.
(4)顯示統計項目
年度帶薪休假日數、年度已公休日數、年度事假累計(小時)、當月事假累計(小時)、年度公出累計(小時)、當月公出累計(小時)、當月遲到早退累計(次)、當月缺勤累計(小時).
部門考勤匯總:以表格方式匯總出部門考勤.界面示意圖如圖10所示.

圖10 部門考勤匯總
點擊員工姓名,可以進行穿透查詢,查詢該員工的刷卡記錄及考勤日志明細信息.左側“組織機構”根據用戶角色顯示相應權限內的數據,右側上部默認組織機構內的全部一級部門考勤匯總數據;右側下部顯示選中的組織機構內,人員的考勤匯總信息.點擊一級部門后,右側上部顯示該一級部門內各個二級部門考勤匯總數據,右側下部顯示選中的組織機構內,人員的考勤匯總信息.
出勤統計分析:以圖形界面直觀的展示全所出勤情況.出勤統計分析界面如圖11所示.
點擊一級部門柱狀圖,可以進行穿透查詢,查詢其子部門的出勤圖形統計;點擊二級部門柱狀圖,可以進行穿透查詢,該部門每個員工日出勤明細及圖形統計.
出勤時間統計計算部門人均日均出勤時間,計算公式如下:
指定期間內:
(1)個人每天出勤時間=該員工計算對象日的刷卡時間差+該員工計算日的公假;單位為“分鐘”;若刷卡時間差>480 且 刷卡時間差<=(480+30)記為480 分(即8 小時);刷卡時間差>(480+30),則刷卡時間差=刷卡時間差-30;
(2)個人日均出勤時間=個人每天出勤時間之和/指定期間內工作日歷工作日日數/60;單位為“小時”,小數點后保留2 位,四舍五入;
(3)部門人均日均出勤時間=(部門內每個人的個人日均出勤時間之和)/ 部門內總人數;單位為“小時”,小數點后保留1 位,四舍五入.

圖11 出勤統計分析
(1)菜單功能及操作注冊
對URL 路徑地址進行注冊登記,如圖12所示.

圖12 配置菜單及操作
(2)角色分配
創建角色,并分配對象,如圖13所示.
(3)權限分配
指定角色,分配對應的菜單及操作,如圖14所示.
企業信息管理的數字化、信息化、規范化是增強企業核心競爭力的關鍵環節.人力資源管理系統支撐了人力資源管理全線業務,大大提高了人力資源管理工作效率.在滿足業務流程的同時,積累了大量有用的數據,基于這些數據支撐了人員效能分析,優化了人員配置,提供的綜合統計分析結果,為企業決策提供了依據.同時這些數據將為建立企業大數據分析提供基礎數據.通過人力資源管理系統的建設,也驗證了系統開發平臺運行穩定、具有可擴展性、可維護性,能夠支撐人力資源管理業務.通過該系統開發平臺可以模塊化、高效快速開發項目,適應復雜業務及需求變化,具有廣泛推廣應用價值.

圖13 創建角色

圖14 權限分配