资源描述
EHR软件开发突破简述
《Design in EHR》
HR软件工作室
QQ:1265208346
2012年2月
目 录
导 言 2
第1章 通用EHR的平台库表设计思路 2
第2章 EHR系统平台模块 5
第3章 通用EHR的平台核心组件 6
第4章 主表和附表的设计思想 8
第5章 EHR软件模块 8
第6章 组织机构 8
第7章 人员管理 9
第8章 薪资管理 11
第9章 考勤管理 13
第10章 合同管理 14
第11章 通用报表 15
结束语 15
附录一:专业eHR通常包括以下功能 16
导 言
感谢您阅读本书!
本书是写给致力于开发人力资源管理软件(HR软件)的公司或开发者,帮其突破种种困惑!使其拥有专业的、通用的HR软件!
困惑一、根据客户的要求开发完成了HR软件,功能似乎很全,该用户也基本满意。但面对新的需求时,必须要不断地修改代码、不停地重新编译程序以满足客户。
困惑二、完成的软件,在面对新的客户时,总是要把大量的需求提交给开发者,对现有的软件功能进行调整、甚至重新实现。导致多个客户多个版本!软件不通用!
困惑三、经常困惑于某些人力资源业务流程上该如何设计?软件如何实现?比如人员模块人员的变动如何与工资模块发放人员进行联动?比如通用的报表制作工具?这种设计是不是符合绝大多数客户的情况?
困惑四、有了用户需求、有了开发技术,就可以写各种各样的功能满足用户需求,似乎没有什么困难,只是不停地写、不停地改、单调忙碌!但好像大部分功能,没有通用性,不能适用所有的客户!
困惑五、那些专业的知名HR厂商,她们的HR软件又是如何设计的呢?是如何做到软件通用?如何做到代理商实施HR软件而不用修改代码就能让客户满意呢?
诸多的困惑使许多HR软件开发者迷茫、抱怨,并且更多的困惑还存在于软件的实现细节当中!初级的HR软件系统迟迟得不到客户的验收,款项无法及时收回,造成公司管理者焦虑!
这是一本简要讲述通用HR软件设计的书,她会协助您建立更专业的HR软件!满足绝大多数客户的需求!
本人有幸在国内知名的软件公司、国内知名的HR专业厂商从事开发工作10多年,并有幸参与了大型客户的HR软件改造、实施、服务工作,对HR行业客户的需求、软件的开发、实施、服务,积累了丰富的经验。愿意与各位分享、沟通、共同推动HR行业软件的发展!
第1章 通用EHR的平台库表设计思路
1. Sys_Tables
表表
Name varchar(20) 表名
SN int 表序号
Caption varchar(50) 表标签
Visible smallint 表可见性:0-不可见 1-可见 2-可见不可删 3-可见不可改
2. Sys_Fields
字段表
ID int
TableName varchar(20) 表名
SN int 字段序号
Name varchar(20) 字段名
Caption varchar(50) 字段标签
Type varchar(20) 字段类型(物理类型、支持重构)
Width smallint 字段宽度 (总位数,整数位数即Width- Scale)
Scale smallint 数值精度(小数位数)
EditorType varchar(20) 编辑类型(同TcxGridDBColumn.Properties)
DisplayFormat varchar(30) 内容显示格式
LookUp varchar(50) 下拉关联键
Activity smallint 活性(1-关键字,2-固定项,3-自定义固定项,4-被定义固定项, 5-可选已选且固定项,6-自定义项,7-可选且已选项,8-可选且未选项,9-自定义可选且未选项)
Visible bit 可见性(0/1)
3. Sys_LookUp
选择项表
ID int 自增长ID
Code varchar(50) 代码
ParentCode varchar(50) 父代码
Name varchar(50) 名字
Grade smallint(2) 层级
PYM varchar(20) 拼音码
4. Sys_Module
模块表
ID int 自增长ID
Name varchar 名字
5. Sys_Functions
功能块表
Code varchar 代码
SN int 功能块序号 新增
ParentCode varchar 父代码
Name varchar 名字
Module_ID int 所属模块
6. Sys_Dept
组织结构表
Code varchar 代码
ParentCode varchar 父代码
Grade smallint 层级
Name varchar 名字
7. Sys_User
用户表
UserName varchar 账户
Description varchar 用户描述
PassWord varbinary 密码
IsGroup bit 是否组(0/1)
GroupID int 所属组ID
8. Sys_Rights
权限表(功能模块、组织结构权限)
UserName varchar 用户名
RightType smallint 权限类型(0-功能权限,1-部门权限)
Rights text //存储格式:Code=RightLevel,……
9. Sys_RightTables
表、字段权限表
ID int 自增长ID
UserName varchar 用户名
FieldID int 字段编号
ReadOnly bit 是否只读(0/1)
SN int 显示顺序
Module_ID int 所属模块
TableName varchar 表名(此字段非必需,冗余是为提高查询效率)
系统表间关系
分为几个类:
(1)数据定义类:Tables、Fields、Looup
(2)软件组成类:Module、Function
(3)用户及组织类:Dept、User
(4)权限类:Rights、RightTables
Rights-> Function/Module
RightTables-> Fields/Tables
第2章 EHR系统平台模块
一、 数据重构,软件通用的灵魂模块
数据重构是HR系统最重要的维护模块之一,是保证数据库及指标项能够满足不同用户需求的实现工具。她主要完成以下功能:
1. 建立新的人事、工资及其他信息库
2. 修改已有信息数据库结构,增加、修改、删除信息项目
3. 管理不同功能模块的各类信息库,定义各类信息库的归属
现在我们来想一想,不同的客户,其人员基本信息内容是不是不完全一样?比如‘银行账号’、‘社保账号’、‘岗档级’等等,有的客户需求,有的客户不需要,不同的行业、不同的客户,其人员信息内容肯定是不相同的!而工资信息表,内容也肯定不相同!人员档案信息不同的客户需求也不同:有的要‘员工培训结果子集’,有的要‘特殊工种情况’子集等等。
初级的HR软件一般没有这个模块,当面对上面的客户需求时,只能是不同客户进行不同的编码,一个项目一个项目的去定制开发完成!
有了数据重构模块,我们就可以根据用户的需求,建立不同的表、不同的字段!完全不用修改程序代码,就可满足用户的需要!
数据重构模块的有无,在某种程序上,可视作专业HR软件与初级HR软件的分水岭!
数据重构模块的有无,是通用HR软件与非通用HR软件的最重要区别!
拥有数据重构模块的HR软件,其功能设计、开发实现更简洁、更快速、功能更稳定!其开发思路和实现代码与没有该模块的初级HR软件完全不同!后者开发新功能时所需时间更长,还会带来功能不易稳定、操作不易一致等诸多问题!
既然数据重构模块如此重要,那么为什么许多的HR软件没有去实现她呢?
原因不外乎以下几点:
1. HR软件开发者没有通用软件设计的经验,完全不会想到这样设计软件
2. 该模块的实现,需要设计系统表来管理HR数据表结构,这种设计思维,一般的开发者也难以想到
3. 最重要的一点是,数据重构模块操作影响的是数据库的表结构,在前台的软件功能界面上,如何自动地反映出数据库表结构的变化,满足不同用户的操作要求,这需要一个核心组件(或者多个组件)去实现,这个组件的设计和实现有一定的难度!
后面,我会讲到如何实现数据重构和这个核心组件。
相关表:
《模块表Sys_Module》、 《表表Sys_Tables》、 《字段表Sys_Fields》。
二、 权限管理
实现对系统用户及使用权限的管理,包括增加、修改、删除用户并对它们进行授权。
人力资源数据保密性要求高。
一般的HR软件权限管理内容比较简单:只是增删改用户,对部门权限、功能权限进行控制而已。
而专业的HR软件不仅具有这些基础功能,还具有以下功能:
n 表及字段的控制权限:拒绝、查看、编辑权限;
人力资源数据的权限控制精确到表和每一个字段。不同的用户,可以查看不同的项目内容。
n 角色或用户组,方便授权
n 大用户功能
一般的HR软件,只有‘系统管理员’用户可以进入权限模块进行授权。但对于集团型大客户,用户数过百时,系统管理员的授权工作就会变得繁重。这时,引入‘大用户’功能,大用户可进入权限管理,建立自己分公司内的使用用户并授权。
相关表:
《模块表Sys_Module》、 《表表Sys_Tables》、 《字段表Sys_Fields》、
《用户表Sys_User》、 《功能表Sys_Functions》、 《组织机构表Sys_Dept》、
《权限表Sys_Rights》、 《表、字段权限表Sys_RightTables》。
三、 代码管理
同‘数据重构’、‘权限管理’、‘日志管理’一样,“代码维护”也是系统维护模块,它用于对指标代码的维护。
指标代码一般分成单级代码、多级代码、多选代码来分别管理,单级代码下只有一级(比如:人员模块中‘性别’字段关联的代码选项:男、女),多级代码下有多级(如:行政区划),它们都是单选;多选代码可以多选(如:兴趣)。
相关表:
《选择项表Sys_LookUp》
第3章 通用EHR的平台核心组件
前面我们讲到了通用EHR软件的平台组成:数据重构、系统表、核心组件(这里,我们称之为HRGrid组件)。
平台保证了软件的通用性。拥有了平台,软件功能的扩展变得更容易、更稳定、更易用!
当应用数据重构功能,添加完用户需要的信息表和信息项目后,业务模块(比如人员管理、薪资管理)应该能自动地展现这些项目,并可让用户维护这些项目的数据,而不用修改任何程序代码,这样才可做到软件的通用。
一、 HRGrid组件界面展现
Grid模式查看部门人员列表信息:
卡片模式查看某个人员信息:
二、 HRGrid组件基本实现方法
HRGrid组件从平台库表中获取业务表信息,显示人员业务数据。并提供数据维护的属性和方法。
以下是HRGrid基本的方法,供开发者参考。
public
procedure Open;
procedure OpenEditors(Parent: TWinControl; ColumnCount: Integer = 2);
function AppendData: Boolean; //追加数据
function InsertData: Boolean; //插入数据
function DeleteData: Boolean; //删除数据
function CancleChange: Boolean; //取消编辑
function PostData: Boolean; //提交数据
property GridState: TGridState read FGridState write SetGridState;
property DataSet: TADOQuery read FDataSet;
published
property Connection: TADOConnection read FConn write SetConnection;
property UserName: string read FUserName write FUserName;
property ModuleID: Integer read FModuleID write FModuleID;
property FixedCols: Integer read FFixedCols write SetFixedCols;
property SQL: TStrings read FSQL write SetSQL;
end;
三、 应用HRGrid组件
应用HRGrid组件进行数据维护操作,只需在平台表中添加业务表的信息,给HRGrid组件赋值即可完成。简单、稳定!
第4章 主表和附表的设计思想
主表和附表,有时也称之为主表和子集。
每个业务模块的数据表,基本都可以按照‘主表和附表’的思想划分。
如:
组织机构:部门表和附表(附表如:单位信息表)
人员模块:人员基本信息表和附表(附表如:学历子集、教育培训子集、家庭关系子集)
工资模块:工资基本信息表和工资子集(子集如:考勤结果表、扣款子集)
合同模块:劳动合同签订表和合同子集(子集如:医疗期管理)
第5章 EHR软件模块
专业的EHR软件通常包括以下模块:
组织机构、人员管理、薪资管理、考勤管理、合同管理、保险福利、招聘管理、培训管理、绩效考核、综合查询、员工自助、通用报表、系统提醒;
数据重构、权限管理、代码管理、日志管理。
关于各个模块所包含的功能描述,各位可参看百度百科名片‘eHR’内容,给出了专业eHR软件通常包括的功能模块和内容。为了方便,我把这些内容附在了本书后面附录一中)。
第6章 组织机构
建立本单位的组织结构框架。
实现要点精述:
1. 建立部门树构件
2. 部门树的建立算法要高效,这样当面对集团多部门时,部门列表加载时不停滞
3. 部门树要显示部门代码
有的HR软件,即使是专业的HR软件,部门树经常只显示‘部门名称’,而在名称后面并没有‘部门代码’。这样看起来似乎对系统没有什么影响。但实际上,会给用户的操作带来不便!
4. 独立公司概念
5. 要能很好的解决‘部门删除’的问题
既能让当前用户看到最新组织机构列表,又不影响历史部门的人员、工资等业务数据
6. 支持部门拖动功能
7. 部门表结构
前面的《组织结构表Sys_Dept》只包含了基本的字段。当我们要实现高效的HR系统的时候,有必要对《组织结构表》进行字段扩展,以消除关联《组织结构表》造成的嵌套查询(嵌套查询极大的影响性能!)。你思考一下你的程序,是不是在工资模块,为了获取当前人员所在的独立公司,经常是使用嵌套查询。
功能参考:
第7章 人员管理
对人员的管理是企业劳动人事管理最基本的日常工作。
人员管理基本分为两大功能:人事档案的维护 和 人员异动。
实现要点精述:
1. 根据用户所选的‘人员类别’、‘部门’来显示人员信息
2. 人员类别能够自定义:如在职人员、离职人员等
3. 能够自定义人员基本表信息内容、能够创建人员子集信息
4. 能够自定义人员异动业务流程、人员变动时录入的内容,如:离职原因、日期等
5. 方便的查找、定位、统计功能
6. 自动计算功能(如计算工龄)
7. Excel导出/导入功能
8. 总之,人员档案信息的维护要让用户方便、快速、高效
9. 人员异动的设计非常重要:不仅要能很好地跟工资模块衔接,还要方便人员报表的制作!
功能参考:
第8章 薪资管理
薪资管理是HR软件的中心模块,关联各个信息管理模块,从而实现了企业管理数据的集成,满足企业工资核算和工资日常管理的各项需要。是企业劳资人员轻松制作工资的好帮手。
各家企业在工资管理上是不相同的,工资套和公式具有不确定性和可变性。通用的HR软件可以为用户建立工资方案提供最大程度的灵活性:
n 用户可以根据自已的需要通过数据重构新建工资表或工资项目。
n 灵活的公式编辑器,用户可添加任意工资项目公式,编写公式表达式或SQL语句
实现要点精述:
1. 薪资体系
可建立多个工资套、公式;可从其他业务模块如人员模块引入项目值。
一般根据‘独立公司’和‘人员类别’设置对应的工资套。也可以设置人员范围条件进行工资套设置。
拥有非常棒的公式编辑器!
2. 工资变动应用
人员模块人员的变动(新增、部门变动、离职等),通过工资变动应用,来确定本月发放工资人员名单。
此功能的设计要严谨、符合绝大数客户的处理逻辑。
3. 根据用户所选的‘人员类别’、‘部门’来显示工资信息
4. 方便的查找、定位、功能
10. Excel导出/导入功能
11. 方便的工资数据编辑功能:如:回车光标自动移到下一个项目编辑框
12. 灵活强大的数据查询、统计报表功能
功能参考:
第9章 考勤管理
与人事、工资模块完全无缝连接,将每月的考勤计算结果数据自动提供给工资模块,参加工资计算。
支持任意的考勤刷卡文本格式,支持多种主流考勤机。
实现要点精述:
考勤模块的实现一定要灵活,方便实施人员根据客户复杂的考勤情况,进行设置。
功能参考:
第10章 合同管理
可进行劳动合同的订立、变更、解除、续签、终止等操作。
合同管理模块的实现,相对来说,比较容易。
功能参考:
第11章 通用报表
报表制作模块是HR系统非常重要的模块之一,实施人员可以应用报表模块制作用户需要的大量报表。
一般用户手头有大量的报表,不仅样式复杂而且统计项目繁多,这种情况下对每一个用户或者实施人员来说都是比较头痛的事情。
通用的报表制作模块,是HR系统中较难实现的模块!她成为诸多HR厂商和开发者头疼的模块!
实现要点精述:
1. 应用组件或插件
不同的开发平台(如:.net或java)上,都有一些优秀的报表组件。一般来说,我们需要借助优秀的第三方报表组件,来实现我们的报表模块。比如:用友cell组件/插件、润乾报表。
2. 支持图形界面方式和SQL构造方式
前者方便普通用户操作,后者方便实施人员创建复杂的报表
结束语
HR软件工作室,可以协助您拥有专业的人力资源管理软件!
联系我们:QQ: 1265208346
附录一:专业eHR通常包括以下功能
注:转载于百度百科‘eHR’。
专业eHR通常包括以下功能:
一、人事档案
人事档案分为在职、离职、退休、后备四个人员库。系统内置丰富的人事档案字段。用户可自行定义人事档案的数据字段,可自行设计人事档案界面。
人事档案中包括薪酬记录、考勤记录、绩效记录、培训记录、社保记录、调岗记录、调薪记录、奖惩记录等常用数据子集。用户也可自行增加新的数据子集。可以针对子集进行独立的导入、导出、统计分析。
系统支持人事业务的在线办理,包括:入职、转正、调岗、调薪、奖励、处分、离职、复职等。这些业务即可以直接办理,也可以通过系统工作流平台进行审批处理。业务办理的结果直接记录在人事档案中。
人事档案数据支持分部门管理。各分公司或部门可以独立管理本部人员。
可以使用人事档案的所有字段(包括自定义字段)组合查询。查询条件可以保存为查询模板。快捷查询与组合查询可以联合使用。
人事档案数据支持Excel格式的导入与导出。用户可对人事档案进行批量编辑。
系统内置丰富的人事报表、图表,包括:人员构成情况分类统计表、员工明细花名册、部门员工花名册、各部门职务统计表、 员工入职离职统计表、各部门员工生日报表、各部门及岗位编制人数统计表。
用户可自定义二维统计报表,也可使用系统报表平台,自行设计个性化的人事报表。
支持自动快速识别、读入员工身份证信息,杜绝伪造身份证,提高员工个人档案信息准确度,减少信息录入工作量。(实现此功能需要配备硬件设备身份证识别器)。
二、组织架构
部门管理。用户可以对部门进行设立和撤销操作,建立无限层级的树形部门结构。可以回顾部门结构的历史记录。可以即时查看组织机构图,并直接打印,也可以导出为HTML格式。
职务及岗位管理。用户可以对职务和岗位进行设计和撤销。对岗位编制进行管理。可以为职务及岗位建立说明书。可以实时统计通过各部门及岗位编制人数统计表,可以随时了解企业编制情况。
用户可以建立精确的岗位及员工能力素质模型。为人力资源各项工作提供量化依据。能力素质模块使用系统指标库来构建。
三、合同管理
客户可以对员工的劳动合同、培训合同、保密协议进行新签、续签等操作。
提供劳动合同期满提醒、未签劳动合同人员提醒、合同续签提醒。
合同报表功能可以随时展现各类合同的明细数据。
合同数据支持分部门管理,各分公司或部门可以独立管理本部的合同。
四、薪酬管理
用户可以自定义薪酬帐套。通过计算公式、等级表等方式,实现岗位工资、级别工资、工龄工资、学历津贴、考勤扣款、社保扣款、绩效奖、个人所得税等各类常见的工资项目。
可实现一月多次发放工资,支持多次工资合并计税。
支持年终奖的十二个月分摊计税。
薪酬数据支持分部门管理,各分公司或部门可以独立管理本部的薪酬。
薪酬数据支持在线批量编辑。
薪酬发放支持标准的工作流审批。
员工可以在线进行薪酬申诉。
每月薪酬数据自动记录在人事档案中。
系统内置薪酬报表,包括:各部门员工薪酬明细表、各部门及岗位薪酬汇总表、部门月工资条打印表、职务薪酬汇总表、部门及岗位薪酬多月合计表、 部门及岗位多月薪酬对比表、员工薪酬多月合计表。
五、社保管理
用户可以自定义各类保险福利类别。
用户可为员工批量创建保险帐户,支持为当月入职员工开户,离职员工退保。
社保缴费自动核算。
可以工资计算中自动引入社保缴费数据。
社保报表。
六、绩效管理
系统支持定性及定量两种绩效考核方式,如:360度考核、量化考核等考核方式。
系统内置各岗位常用的绩效考核表,可供用户直接使用。用户也可以自行设定考核指标、评分权重、计分公式等项目,创建自己的考核表。
考核任务发布后,员工直接在线进行绩效打分,自动完成分数汇总计算。考核结果自动记录在员工档案中。
薪酬模块可以自动引用绩效考核结果,直接计算用户的绩效工资。
员工可以在线进行考核申诉与反馈。
系统内置绩效报表,包括:绩效考核结果一览表、绩效考核记录一览表、考核结果单指标分析表、考核评分记录明细表、各部门量化指标分析表、部门考核等级汇总表。
绩效数据支持分部门管理,各分公司或部门可以独立管理本部的绩效。
七、考勤管理
与企业现有考勤机结合,实现班次定义、员工排班、智能抓班、考勤汇总计算等功能。
系统支持请假、出差、加班、补休、调班、停工等考勤业务管理。
薪酬模块可以直接引用月考勤结果进行相关计算。
假期管理中可以自定义法定假期与企业假期。
考勤数据支持分部门管理,各分公司或部门可以独立管理本部的考勤。
系统提供常用的一组考勤数据报表。
八、培训管理
培训管理员可以向员工进行培训需求调查。
各部门上报培训需求,汇总成培训计划,计划内容包括培训的时间、地点、参与人、预算等。培训计划可以在线申报。
由培训计划生成培训的实施方案,详细记录培训实施情况。
培训评价管理,记录员工在每次培训中的评价。
培训记录自动记入员工档案。
培训资源管理。可以管理培训课程、培训机构、培训讲师、培训资料、培训地点等。
培训数据支持分部门管理,各分公司或部门可以独立管理本部的培训。
系统内置培训报表,包括:各部门培训计划费用统计表、各部门培训计划人数统计表、各部门培训实施费用统计表、各部门培训实施人数统计表、各部门实施费用明细表等。
九、招聘管理
用户可以制订招聘计划,包括招聘的岗位、要求、人数,招聘流程定义等。招聘计划可在线申报。
应聘简历可以详细记录应聘者资料,并记录他们在应聘各阶段的评价。
应聘流程通过系统工作流平台完成,可以管理求职者的整个应聘过程。
系统内置招聘报表,包括:各部门招聘计划明细表、各部门招聘岗位应聘情况明细表、应聘人员构成情况分类统计表、招聘计划各阶段人数统计表、各岗位招聘及应聘人数统计表。
十、招聘门户
企业可在互联网上对外发布招聘网站,通过网站实时发布各类招聘职位。
应聘者可以在招聘网站上直接应聘,在线填写简历等信息。
招聘管理员可在系统后台直接查阅、筛选、统计应聘人员信息。
招聘全过程管理,可以记录应聘者在各阶段面试、笔试中的成绩、评价。
通过筛选的应聘人员,可以直接入岗,转为在职人员,或进入企业后备人员库。
提供各岗位应聘人员汇总表等报表。
十一、报表中心
报表设计中心,用户可以自行定义各类明细、统计报表。
十二、预警功能
劳动合同期满提醒
员工生日提醒
未签劳动合同人员提醒
合同续签提醒
员工转正提醒
十三、系统管理
系统日志管理
在线用户查看
业务监控台。查看系统中所有工作流业务的运行状态
部门数据权限管理
栏目访问权限管理
用户及角色管理
标准代码库
数据结构管理
展开阅读全文