一种可配置的定时数据同步方法与流程

文档序号:12178463阅读:763来源:国知局

本发明涉及数据交换技术,尤其涉及一种可配置的定时数据同步方法。解决企业内部异构系统之间的数据同步问题。主要利用计算机多线程技术、XML技术、数据库技术实现。具有简单配置、快速部署、灵活扩展的特点,并且对于特定系统(比如CRM与ERP系统之间),一次配置后,可重复使用,有利于配置模板的积累。



背景技术:

在企业中,由于开发时间或开发部门的不同,往往有多个异构的、运行在不同的软硬件平台上的信息系统同时运行,这些系统的数据源彼此独立、相互封闭,使得数据难以在系统之间交流、共享和融合,从而形成了"信息孤岛"。随着信息化应用的不断深入,企业内部、企业与外部信息交互的需求日益强烈,急切需要对已有的信息进行整合,联通“信息孤岛”,共享信息。

数据集成:数据集成通过应用间的数据交换从而达到集成,主要解决数据的分布性和异构性的问题,其前提是被集成应用必须公开数据结构,即必须公开表结构,表间关系,编码的含义等。

对于数据集通常的解决办法,一是我们系统中直接访问对方系统的数据库的方式。这样的方式数据实时性好,没有延迟。缺点是安全性比较差、互相影响的风险也比较大,对方系统可能担心会打乱数据,影响他们的系统,我们系统也因为对方系统数据库是否可用而受影响。第二个是把对方系统的数据拿过来,放到我们的系统的数据库里。



技术实现要素:

对于上述第二种情况,本发明提出了一种可配置的定时数据同步方法,它可以将来自某个系统的数据定时同步到目标系统中。数据同步需要了解5方面信息,数据的来源、来源中的数据、目标、应该放到目标的什么地方还有同步频率。

1、同步数据信息配置DbCrmJob.config。

在这个文件里需要配置的信息包括数据的来源、目的,需要同步的数据,数据同步的方向和步骤。主要节点如下:

数据库信息配置节点,配置数据的来源和目的数据库连接信息,根据实际项目的环境修改配置。

WebService信息配置节点,配置数据的来源和目的为UpdateCrm Interface的连接信息,根据实际项目的环境修改配置,一般只需要修改接口服务器的IP地址。

同步数据配置节点,配置需要同步的数据。每个InfObject相当于数据库中的一个表,Field相当于表中的字段。如果同步双方的表结构相同,可以只配置一个,如果双方的表结构不同都需要配置。

数据同步任务配置节点,配置数据同步的方向,同步的步骤,即将来源于某个数据库或UpdateCRM中的什么数据同步到目的数据库或UpdateCRM。每一个Task表示一个同步任务,可包含多个同步步骤Item,Item为具体的需要同步的数据。

2、数据同步任务定时配置文件jobs.xml。

主要对DbCrmJobCfg.xml配置的数据同步任务的定时执行信息进行配置。配置节点如下:

主要配置作业节点Job和时间触发器节点trigger。Job和DbCrmJobCfg中的任务对应,Job的name需要与DbCrmJob.Config中Task的taskName相同,其他参照注释说明。

trigger配置作业的执行时间,其中的job-name需要job节点的name相同。Trigger的定时分为两种Simple和cron,可以满足不同的需求。

如果需要让任务只在某个时刻执行一次,或者,在某个时刻开始,然后按照某个时间间隔重复执行,简单地说,如果你想让触发器在2007年8月20日上午11:23:54秒执行,然后每个隔10秒钟重复执行一次,并且这样重复5次。那么Simple就可以满足你的要求。

如果你需要像日历那样按日程来触发任务,而不是像Simpler那样每隔特定的间隔时间触发,通常使用cron方式配置定时时间。使用cron,你可以指定诸如“每个周五中午”,或者“每个工作日的9:30”或者“从每个周一、周三、周五的上午9:00到上午10:00之间每隔五分钟”这样日程安排来触发。甚至,象Simple一样,Cron也有一个StartTime以指定日程从什么时候开始,也有一个(可选的)EndTime以指定何时日程不再继续。

Cron表达式举例

例1–一个简单的每隔5分钟触发一次的表达式

"0 0/5***?"

例2–在每分钟的10秒后每隔5分钟触发一次的表达式(例如.10:00:10am,10:05:10等.)。

"10 0/5***?"

例3–在每个周三和周五的10:30,11:30,12:30触发的表达式。

"0 30 10-13?*WED,FRI"

例4–在每个月的5号,20号的8点和10点之间每隔半个小时触发一次且不包括10点,只是8:30,9:00和9:30的表达式。

"0 0/30 8-9 5,20*?"注意,对于单独触发器来说,有些日程需求可能过于复杂而不能用表达式表述,例如:9:00到10:00之间每隔5分钟触发一次,下午1:00到10点每隔20分钟触发一次。这个解决方案就是创建两个触发器,两个触发器都运行相同的任务。

3、日志配置文件JobScheduler.exe.config。

对程序的运行信息、任务执行信息、错误信息的日志输出配置。程序默认配置为错误信息输出到文件(运行目录下的log目录)并且将错误日志发送邮件给指定的的维护人员。对于程序的运行日志可运行logView.bat查看实时日志。

部署时主要修改如下信息:

<subject value="JobScheduler Log[测试项目]"/>

<to value="***@inspur.com"/>

[测试项目]修改为实际的项目名称

***@inspur.com修改维护人员的邮件地址

4、SQL Server生成字段配置SQL

本发明的有益效果是

基于XML配置,配置灵活、使用简单;

支持全量更新与增量更新;

支持系统之间双向定时数据同步;

灵活的定时策略,包括固定频次重复执行和特定时间点执行,支持cron表达式;

预制CRM系统和ERP系统数据处理模板,方便特定系统间的快速部署,提高效率;

采用服务部署方式,运行稳定,操作系统启动后自动重启,无须人为参与;

完备的反馈机制,出现错误自动发送邮件给维护人员,及时解决,调试信息和运行信息可通过配置决定是否输出。

附图说明

图1是DbCrmJob.xml和Jobs.xml各配置节点关系示意图。

具体实施方式

下面对本发明的内容进行更加详细的阐述:

本发明提供的一种可配置的定时数据同步方法与装置,实现方式是基于数据库层面来实现系统之间的数据交换,对现有业务系统无影响。支持SqlServer/Oracle与SqlServer/Oracle之间、SqlServer/Oracle与UpdateCRM系统之间双向定时数据同步。

主要实现代码如下:

本发明特点

1、在数据库层面完成数据同步,支持Oracle、SqlServer两种数据库,预制数据库访问层接口,可通过扩展支持其他数据库;

2、部署一套程序,通过配置,可以支持任意多个系统间的数据交换;

3、可通过xml配置,Sql和存储过程三种方式获取数据;

4、可根据不同系统的要求配置字段的时间格式,如20160819、2016-08-19、2016/08/09;

5、可为每次数据同步的一批数据生成一个批号,以方便导入之后的处理;

6、可为每批数据生成记录序号;

7、对于主从表,可以先导入主表数据,再导入从表数据,然后通过本次批次号做后续处理;

8、对于目标数据记录,可以配置数据同步时间信息(何时同步的数据);

9、可自动判断每条数据是更新或添加;

10、支持全量更新和增量更新;

11、存错过程支持灵活的时间表达式;

12、支持在同步前调用源数据库的存储过程,以便对本次同步的数据做预处理;

13、在同步后可以调用目标数据库的存储过程,以便对本次同步的数据做后处理,比如对本批次数据做数据转换;

14、数据同步定时时间,支持Cron表达式,可按固定频次,如没5秒执行,以及特定时间点循环执行,如表达式“0 0 23**?”表示每天晚上11点执行。

15、可以配置日志的输出,如调试日志、运行日志、错误日志等

16、出现错误后,将错误日志发送邮件给维护人,以便及时解决问题。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1