企业应用与目录系统信息同步方案研究与实现
2010-11-16孔震
孔震
(国网电科院信息技术研究所,江苏 南京 210003)
1 引言
企业用户在日常工作过程中,往往需要面对多个不同业务应用系统进行信息浏览与处理。由于不同的业务应用系统是由不同的厂家开发实现,各系统均独立存储一套企业公共信息,如组织机构等,当企业公共信息发生变化时,需对各应用系统进行公共信息的同步维护,工作量大,且易出错。针对此类问题,业界普遍采用目录系统等技术,实现组织机构等企业公共信息的单点维护,并在不同业务应用系统间共享。本文主要论述了一种以松耦合方式同步企业应用与目录系统间公共信息的实现方案。
2 目录系统
目录系统是一种特殊的数据库系统,其专门针对信息的读取,浏览和搜索操作进行了优化。目录系统一般用来包含描述性的、基于属性的信息并支持精细复杂的过滤功能。目录系统一般不支持通用数据库针对大量更新操作所需要的复杂的事务管理功能。目录系统通常用来存储包括个人信息、Web链接、文件索引等轻量信息。此外,目录系统能够提供标准的信息访问接口,便于与各类异质应用系统集成,主流的有LDAP(轻量级目录访问协议)目录和基于X.500的目录。
针对目录系统的上述特性,企业通常会对内部不同应用系统中的公共信息进行抽取,统一放置于目录系统中进行维护,再共享、同步给其它应用系统。例如,组织机构信息是典型的企业公共信息,其数据量小,变化不频繁,适合放置于目录系统中进行统一管理。当企业组织机构信息放置于目录系统后,目录系统是企业组织机构信息的维护源头,其它应用系统只能对组织机构信息进行引用,当组织机构信息变更时,各应用系统需及时同步变更信息,以保持一致性。目录系统与各应用系统的集成关系如图1所示:
图1 目录系统与应用系统的集成关系
在企业应用系统与目录系统的信息同步过程中,主要有以下技术难点:
如何让应用系统及时、可靠的获得目录系统信息变更的消息及内容。
如何实现松耦合集成,且尽可能不影响应用系统的已有结构和业务逻辑。
3 企业应用与目录系统的信息同步方案
3.1 信息同步方式
当目录系统中的信息发生变化时,可有两种方式在应用系统间同步:
方式1:目录系统主动推送方式,即目录系统主动将变更信息通知给各应用系统。
方式2:应用系统主动获取方式,即应用系统主动向目录服务获取已变更的信息。
方式1的优点是实时性强,应用系统可第一时间获得目录系统变更的信息,且效率高,变更信息的范围在目录系统推送时已被明确;缺点是目录系统需主动访问各应用系统,接口需要统一,否则目录系统的接口适配工作量较大。
方式2的优点是,各应用系统可通过目录系统提供的标准接口进行交互;缺点是实时性低、效率差,通常需要由各应用系统轮询目录系统以获得变更信息,当应用系统较多且轮询频率较高时,会对目录系统造成较大负载。
综上分析,本文采用方式1,并可结合面向服务架构的实现思路,解决应用系统接口一致性的问题。
3.2 集成方案
目录系统与应用系统的信息同步过程主要分为以下几个步骤,如图2所示:
目录系统将变更信息通知给应用系统。
根据面向服务架构的实现规范,目录系统与各应用系统共同约定目录信息变更后,目录系统通知各应用系统的Web服务接口如下:
图2 目录系统与应用系统的信息同步过程
public Boolean notifyInfoChange(String p_info);
其中,输入参数p_info表示变更信息的内容,该内容为XML格式(示例参见图表3);返回值为布尔值,表示应用系统是否成功接收通知信息。该服务接口由各应用系统实现,被目录系统在信息变更时调用。为保证目录系统的高效性,该服务方法采用异步调用方式,即目录系统调用notifyInfoChange方法后立刻返回,应用系统以回调方式通知目录系统是否已接收成功。若接收失败,目录系统在本地“消息通知失败队列”中记录目标应用系统标示和当前变更信息内容。目录系统自身实现对“消息通知失败队列”的轮询,以不断尝试向目标应用系统重发通知消息,保持信息同步。
图3 以组织机构-部门为例的
p_info数据结构
应用系统在本地同步变更信息。
应用系统的notifyInfoChange方法接收到目录系统的调用请求后,首先将变更信息记录在本地数据库的InfoExchange数据表中,数据表结构见图4。
若目录系统变更信息的DS_CLASS、DS_ID在InfoExchange中已存在对应记录,则说明该信息在应用系统中已存在,需要执行
图4 InfoExchange数据表结构说明
?更新同步操作,即将当前记录的Info字段设置为p_Info参数值,OperationType字段设 置 为 Update,IsNeedSync字 段 设 置 为 True,ModifyTime字段设置为当前时间;否则需要执行新增同步操作,即在InfoExchange中插入一条新记录,其中DS_Class、DS_ID、Info 字 段的值分别来自于p_info参数,Local_Table字段的取值与DS_Class有关(预先建立一一映射关系,如目录系统中的部门信息映射到应用系统中的Department数据表),Local_ID字段则根据Local_Table表的主键规则生成一个新的编号,OperationType字段设置为Insert,IsNeedSync 字段设置为 True,ModifyTime 字段 设置为当前时间;若p_info参数中的isDelete属性为True,则 OperationType 字段设置为Delete。
应用系统通过周期性扫描进程轮询InfoExchange数据表,筛选出IsNeedSync字段为True的记录,按ModifyTime字段由远至近排序,依次根据OperationType字段的值,将待同步信息在本地数据表(Local_Table)中更新、插入或删除,同步成功后将InfoExchange表中相应记录的IsNeedSync字段设置为False。 至此,目录系统变更的信息已完全同步至应用系统中。
4 结论
本文所述的企业应用与目录系统的信息同步方案,通过标准Web服务接口,由目录系统主动推送变更信息至各应用系统,再由各应用系统自身实现Web服务异步执行、中间表缓冲及同步等机制,最终实现目录系统与应用系统的信息同步。该方案不仅无需改动应用系统已有结构和业务逻辑、实现松耦合集成,还能防止目录系统待同步信息的丢失、提高可靠性。此外,本方案具有通用性,可满足不同企业的应用系统与目录系统的信息同步需求。
[1]吴荣国,Web服务与目录服务在系统集成中的应用研究,计算机工程与设计,200627(8).
[2]王谢宁,目录服务在信息资源整合中的应用——目录服务的协议及产品分析比较,情报杂志,200827(7).
[3]丁维龙,一种基于Web Service的虚拟化目录服务,微电子学与计算机,200724(9).