企业管理系统开发平台①
2021-05-21孙道兵田苏梅施元超刘晓光
孙道兵,田苏梅,施元超,刘晓光
(上海航天控制技术研究所,上海 201109)
1 引言
上海某院某研究所是拥有两千多名员工的航天大所,员工组成成分复杂,人力资源管理业务多样,涉及面广,人员及其岗位、职位变化频繁,业务逻辑复杂,业务数据种类繁多,业务人员日常需要花费大量的时间和精力来处理各种纷繁复杂的业务过程和数据.而且单位内并没有一个系统能够完整实现人力资源管理相关业务管理的信息化,当前手工业务管理模式效率低下,容易出错,不利于大量历史数据的统计汇总分析,不便于为领导层提供好的决策依据.同时,尽管市场上成熟的人力资源管理系统数量比较多,但是与本单位管理需求差异较大,不能很好的适应本单位人员管理的特殊性.
基于此,集合人力资源部、信息技术部门的管理和技术力量,自主构建管理系统开发平台,该平台支持可持续开发,系统具有良好的伸缩性、可扩展性、可移植性.并基于此平台实现人力资源管理业务,提高工作效率,提升人力资源管理业务水平,为高层决策提供高质量的人力资源数据.
2 企业管理系统开发平台
2.1 平台概述
基于当前业界先进的Spring+SpringMVC+Hibernate开源技术自主构建JavaEE 开发平台.
系统开发平台支持可持续开发,系统具有良好的伸缩性、可扩展性、可移植性.
平台采用B/S 多层架构,提供良好的用户体验,集成Activiti5 流程引擎,支撑企业信息管理的业务流程,同时基于Apache CXF 服务框架构建服务模块,满足系统集成要求及面向未来的服务架构.
2.2 技术方案
运用Spring、SpringMVC、Hibernate 框架建立了平台基础,并在其中集成了Activiti5 流程引擎,Apache CXF 服务基础框架、spring-quartz 定时任务调度.技术框架如图1所示.
图1 系统平台技术架构
基于JQuery EasyUI 前端框架技术实现前端展示,面向HTML5 技术,兼容主流浏览器.
基于Servlet3 规范的模块化设计,应用RESTful结构,统一接口规则.
创建基于Web的远程部署、管理控制台使开发人员、系统管理员与生产环境完全隔离,结合数据加密技术,既保证了敏感数据安全,又提高了部署、管理效率.
数据库管理系统采用Oracle 11g R2 以上版本.
2.3 平台创新性分析
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 报表设计
3 人力资源管理系统设计与实现
3.1 功能描述
为提高人力资源管理业务工作质量,提高工作效率,做好决策依据,有必要将以往大量重复的业务活动利用现代化的信息技术手段进行管控,通过建立业务信息的关联模型,使业务数据的管理自动化、智能化,从而大幅度消减业务人员的重复劳动,提高工作效率,提升人力资源管理业务水平,为高层决策提供高质量的人力资源数据.
通过该系统平台搭建的人力资源管理系统,提供了人力资源管理的数据管理、业务管理以及数据展示功能[1-13].系统功能框架图如图7所示.
(1)数据管理能力
主要实现了人力资源数据的信息化管理功能,并作为其他应用系统的基础数据.建立组织机构、员工信息开放式服务,供其他系统调用,同时向注册系统发布组织机构、员工信息变更信息.具体包括以下功能模块:
① 组织管理:实现组织机构设置、职位管理、岗位管理,按岗位说明书建立岗位体系;按照“单位-部门-岗位”实现对组织的信息化管理.
② 人员配置:实现人与岗位的对应,包括减员、增员、员工信息、试用/见习管理、内部调动等功能.
③ 劳动合同管理:实现了合同签订、变更、续签、解除记录的查询及相关管理、提醒功能.
④ 领导干部管理:实现行政干部职务信息、任免职管理、考核情况登记等功能.
⑤ 型号干部管理:实现技术干部职务信息、任免职管理等功能.
⑥ 档案信息管理:实现员工个人基本信息的登记、变动、查询等功能.
(2)业务管理能力
主要实现了在人力资源数据信息的基础上,结合各项人力资源管理业务流程,开展具体的应用[14,15].具体包括以下功能模块:
① 绩效管理:实现了可以按部门管理也可以面向项目定制的绩效考核管理,以及360 度评估、量化考核等功能.
② 薪酬管理:实现了面向部门领导的薪酬发放功能和面向员工个人的查询功能.
③ 考勤管理:实现了考勤的外部数据导入、统计管理、实时假期控制、请假处理、出勤记录查询等功能,并对出勤数据进行统计分析.
④ 培训管理:实现了培训需求上报、培训计划汇总、培训评价、培训资源管理、培训费用统计、培训档案记录等管理功能.
⑤ 招聘管理:实现了根据岗位空缺发布信息制定招聘计划的功能.
(3)数据展示能力
具体包括:报表中心,主要实现了基于上述模块和不同应用者的权限的各种报表统计、分析、展示、查询功能.
本文后续将详细介绍其中的考勤管理模块的设计与实现.
图7 人力资源管理系统功能架构
3.2 考勤管理
全所员工出勤存在多种刷卡状态,有各类请假、请假后又出勤、工作日历设置也可变、有部分员工公假、企业特殊时段假等,为了应对这种复杂多变的出勤情况,保证每个员工考勤记录正确,设计了考勤日志计算引擎,计算出每个员工每天的出勤状态值及文字表述.在这些数据基础上,提供了各类考勤状态查询、综合统计分析.考勤管理模块用例图如图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 出勤统计分析
3.3 权限管理
(1)菜单功能及操作注册
对URL 路径地址进行注册登记,如图12所示.
图12 配置菜单及操作
(2)角色分配
创建角色,并分配对象,如图13所示.
(3)权限分配
指定角色,分配对应的菜单及操作,如图14所示.
4 结语
企业信息管理的数字化、信息化、规范化是增强企业核心竞争力的关键环节.人力资源管理系统支撑了人力资源管理全线业务,大大提高了人力资源管理工作效率.在满足业务流程的同时,积累了大量有用的数据,基于这些数据支撑了人员效能分析,优化了人员配置,提供的综合统计分析结果,为企业决策提供了依据.同时这些数据将为建立企业大数据分析提供基础数据.通过人力资源管理系统的建设,也验证了系统开发平台运行稳定、具有可扩展性、可维护性,能够支撑人力资源管理业务.通过该系统开发平台可以模块化、高效快速开发项目,适应复杂业务及需求变化,具有广泛推广应用价值.
图13 创建角色
图14 权限分配