一、背景介绍
上海立邦TU报销系统,是上海立邦集团针对内部的报销的业务,编写的一套系统,此系统主要特点是和Web、SAP和Notes等系统实现无缝对接,从而完成整体业务的流转,目前立邦已经存在SAP报销系统、Notes系统,情况如下:
n SAP报销系统:实现上海立邦主要业务的实现,例如:供应商、客户、员工、人员等信息的维护及控制
n Notes:主要通过邮件实现对业务流转中的具体单据进行审核以及日常的业务管理
n TU报销系统:主要通过同步SAP报销系统中的供应商、客户、员工、项目等主数据信息,编写报销单,递交到Notes系统进行数据流转,并且递交数据到SAP,从而完成整个业务处理
二、需求说明
在SAP报销系统中的主数据据达到百万级的数据,需要要将其中的供应商、客户、员工、项目等信息同步到本地数据库中:
1) SAP每天每种类型的主数据大约会增加2000条以上的数据量
2) 要求每天同步数据一次,在紧急状态下,可以实现手动同步
3) 5年只能不能因为数据量太大,导致同步业务失败,引起代码重构
三、概要设计
由于数据量太大,决定采用增量同步的方式进行数据同步;为了满足用户需求,同时设计手动同步的模块,实现手动及时同步。
四、详细设计
1. SAP的数据获取
采用PI方式获取SAP数据,通过WebService方式发布数据,由于是采用增量同步,因此有2个必备参数为:开始时间、中止时间,数据获取逻辑如下
n 在返回数据列表中存在DataStatesMark字段
n 新增的数据在DataStatesMark中为“I”
n 编辑的数据在DataStatesMark中为“U”
n 删除的数据在DataStatesMark中为“D”
2. 数据定时同步的设计
采用WindowsService的方式进行处理,增加定时器,通过设置启动时间,判断当前时间和启动时间的小时一致的话,直接运行程序;程序调用逻辑:
n Window Service调用Web Service获取SAP中的增量数据
n Windows Service调用本地同步方法,以获取到的增量数据为参数,同步增量数据到数据库中。
3. 同步增量数据逻辑的设计
n 在数据库中设置同步数据的临时表,增加DataStatusMark字段,将通过WebService中获取到的数据全部插入到临时表中
n 编写同步的存储过程,实现临时表到正式表的同步。
4. WindowsService数据同步步骤
1) 调用WebService获取增量的SAP端数据
2) 调用方法,将获取到的增量的SAP端数据插入到临时表中
3) 调用存储过程,实现将临时表中的数据,同步到正式表中。
五、同步存储过程技术说明
1. 传入参数 outmsg输出参数、Error 错误输出参数
2. 循环临时表中的数据判断DataStatusMark字段
3. 如果DataStatusMark为“D”直接实现将Enable字段修改为“D”,代表已经将数据删除
4. 如果DataStatusMark为“I”或者为“U”,根据业务主键字段,在正式表中判断数据是否存在,存在的话,直接插入,否则更新。
5. 增加错误判断机制,如果出错,直接抛出异常给Error参数
6. 执行的每一步,必须实现数据数据,通过OutMsg参数接收。
需要同步存储过程示例代码的朋友们,可以到我的资源中去下载相关代码。
张晓斌
2013年6月29日14:20:31 于 上海龙阳路