罗惠恒 周容 李哲
摘要:该文首先就企业存在多套人员组织机构基础数据这一问题及其产生的原因进行了概述和分析,进而提出通过建设企业弹性人员组织机构数据接口以根本解决上述问题,最后详细论述了接口的设计和实现方法。
关键词:人员组织机构;基础数据;数据接口
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)28-0006-02
1问题分析
1.1问题的描述
随着国内企业信息化建设的不断深入,越来越多业务需求需要通过软件系统实现。这些软件系统在提高员工工作效率,提升企业管理水平的同时,由于企业信息化发展的整体规划存在不足,导致企业软件系统存在多套人员、组织机构编码,并且系统间的编码不统一的问题。
1.2问题产生原因的分析
目前国内企业软件系统的建设,基本上都是将不同的系统,外包给不同的软件产品开发商来实现。此种建设模式的优点就是:针对每个业务系统的建设,企业都能选择最贴合自身实际需要的软件产品。但是上述建设模式会导致企业通用功能模块的重复建设。
由于人员组织机构管理是每个软件产品所必有的基础功能模块,不同的软件产品开发商会根据其产品的特点,对人员组织机构管理进行不同的设计和开发。企业如果通过采购不同的软件产品完成各个业务系统的建设,就会导致每个业务系统都有其独立的人员组织机构管理模块。这些功能模块对于人员、组织机构的管理没有统一标准的模式,导致了企业人员、组织机构等核心业务数据的冗余、错误及无法共享,从而使得系统间的业务链条无法打通。
1.3问题的解决思路
为避免企业软件系统日后人员组织机构管理功能模块重复建设,实现系统间人员、组织机构等基础数据共享,必须在对企业现有软件系统进行全面分析之上,首先确定人员、组织机构等基础数据来源的主软件系统(主数据系统);其次设计和开发出人员组织机构数据接口,供其他软件系统与主数据系统之间进行数据的交互访问。下文将主要对弹性人员组织数据接口的设计与实现进行介绍。
2弹性人员组织机构数据接口的设计与实现
2.1数据库设计与实现
由于各个软件系统对人员组织机构管理的方式不同,导致在对人员、组织机构等相关数据表的设计无法统一。
因此,弹性弹性人员组织机构数据接口关于人员、组织机构的表设计只能进行高度的抽象,选择任何系统都必须会用到的字段,基于主数据系统,进行数据视图的设计。用户组织机构视图具体设计如下:——以用户表为主表,与组织机构表进行左连接
CREATE OR REPLACE VIEW USER_GROUP_VIEW
AS
SELECT
主数据系统人员表.人员ID||主系统人员表.人员编码 AS ID,
主数据系统人员表.人员ID AS USER_ID,
主数据系统人员表.人员编码 AS USER_CODE,
主数据系统人员表.人员姓名 AS USER_NAME,
主数据系统人员表.人员所属组织ID AS GROUP_ID,
主数据系统组织机构表.组织机构编码 AS GROUP_CODE,
主数据系统组织机构表.组织机构名称 AS GROUP_NAME
FROM
主数据系统人员表
LEFT JOIN 主数据系统组织机构表
ON 主数据系统人员表.人员所属组织机构ID = 主数据系统组织机构表.组织机构ID
2.2接口的设计与实现
此接口用来暴露给其他软件系统使用人员组织机构等基础数据。具体设计如下:
public interface UserGroupMapper {
public int insert(UserGroup userGroup);
public int delete(String id);
/**
* 根据组织机构ID查询下属人员信息
*
* @param userGroup
* 包含视图名称,组织机构ID {viewName=viewName,
* groupIdColumn=groupId}
* @return 人员组织机构信息列表
*/
public List
Map
/**
* 根据人员ID查询所属组织机构信息
*
* @param userGroup
* 包含视图名称,人员ID {viewName=viewName,
* userIdColumn=userId}
* @return 人员组织机构信息列表
*/
public List
Map
/**
* 根据人员ID和组织机构ID查询人员组织机构信息
*
* @param userGroup
* 包含人员ID,组织机构ID {viewName=viewName,
*userIdColumn=userId,groupIdColumn
* =groupId}
* @param groupId
*
* @return 人员组织机构信息
*/
public Map
Map
/**
* 人员组织机构多条件组合查询
*
* @param userGroup
* 查询条件,包含 {viewName=viewName,
* fields={fieldName1=fieldValue1, ...}}
* @return 人员组织机构信息列表
*/
public List
Map
/**
* 人员组织机构多条件组合查询计数
*
* @param userGroup
* 查询条件,包含 {viewName=viewName,
* fields={fieldName1=fieldValue1, ...}}
* @return 查询计数
*/
int selectUserGroupCount(Map
/**
* 根据组织机构ID查询下属人员信息<分页>
*
* @param pageParam
* 分页查询条件
* @return 人员组织机构信息列表
*/
public List
Map
/**
* 根据人员ID查询所属组织机构信息<分页>
*
* @param pageParam
* 分页查询条件
* @return 人员组织机构信息列表
*/
public List
Map
/**
* 人员组织机构多条件组合查询<分页>
*
* @param pageParam
* 分页查询条件
* @return 人员组织机构信息列表
*/
public List
Map
/**
* 自定义SQL查询
*
* @param sqlMap
* 自定义SQL包含:viewName, selectColumns, whereClause, orderClause
* @return 人员组织机构信息列表
*/
public List
Map
/**
* 根据人员ID或组织ID列表查询人员组织信息
*
* @param params
* @return
*/
public List
Map
}
3结束语
通过上述弹性人员组织机构能实现企业多个软件系统对人员、组织机构等基础数据共享,大大减少了基础数据的冗余性和不一致性,增强了系统间的交互,为建立企业一体化的信息管理奠定了基础。
参考文献:
[1] 黎宇. Ajax+J2EE开发静态页的组织机构管理系统[J].电脑编程技巧与维护,2010(5).