保证不同软件应用程序采集的数据随时间的一致性的方法和系统的制作方法

文档序号:6454932阅读:363来源:国知局

专利名称::保证不同软件应用程序采集的数据随时间的一致性的方法和系统的制作方法
技术领域
:本发明总体上涉及数据处理以及数据处理装置和系统领域,并且尤其涉及分布式数据处理和分布式数据处理系统,尤其涉及计算机网络。更具体地,本发明涉及由不同软件应用程序从相同或者不同信息源进行数据采集的方面。
背景技术
:当前,分布式数据处理和计算机网络很普及。分布式数据处理的成功范例是客户端_服务器体系结构。客户端-服务器软件产品通常包含客户端应用程序组件以及服务器应用程序组件,所述客户端应用程序组件意图被安装于一个或多个端点,也就是,计算机网络的目标(target)数据处理装置(例如,个人计算机-PC-,工作站等等)上并且由该一个或多个端点执行,所述服务器应用程序组件意图被安装于网络的服务器数据处理装置上并且由该网络的服务器数据处理装置执行,所述服务器数据处理装置因而与端点具有数据通信关系。一些已知的分布式软件产品具有包含软件代理的客户端组件以及安装于网络服务器上的服务器组件,所述客户端組件意图被安装于几个端点上并且由这几个端点执行。运行于不同端点上的软件代理适合于从各自端点上可用的一个或多个信息源釆集信息,并且将采集的信息上传至服务器组件。服务器组件管理信息储存库(repository),其是存储由运行于不同端点上的不同软件代理所采集和上传的信息的数据库。服务器组件还包括专门设计的用户接口,用户通过该用户接口能够访问存储在储存库中的信息。4以下情况出现得越来越频繁必需地,或者至少期望将两个或更多已经存在的不同软件产品集成为一个组合的解决方案,适合于将每个单独产品所提供的功能合在一起,使得产生对客户可用的更加完整和强大的套件(suite)。两个或更多已有产品到套件的集成应当包括对产品自身的最小可能修改,使得将到集成套件市场的成本和时间减到最少。当集成两个或更多已有软件产品时,保证由一个软件应用程序所生成的数据被保持同步并且与由套件的其它软件应用程序所生成的数据同时被存储在各自储存库中的必要性可能增加。例如,存在这样的情况,当期望集成两个或更多上述类型的软件产品时,其每一个适合于从安装软件代理的端点上可用的信息源采集数据,并且将所采集的数据上传至服务器组件用于将它们存储在适当的中央储存库(centralrepository)中。例如,假设需要集成两个这种产品的情况,考虑以下情形两个不同的软件代理安装于一个端点上并且由该端点执行,并且在该端点上从相同或者从不同信息源采集数据;由这两个软件代理所采集的数据接着被独立地上传至各自的服务器组件,所述服务器组件将所收集的数据存储到各自的储存库中。由于两个软件产品不同,安装于通用端点上并且由该通用端点执行的两个软件代理中的每一个都察觉不到另一个的存在;它们通常以不同的方式并且在不同的时间启动数据采集机制;换言之,它们以完全不相关联的方式运转。当用户访问这两个储存库时,利用各自的用户接口,他/她可能注意到由这两个软件代理采集并且存储在这两个储存库中的信息,虽然涉及相同端点,但随时间推移而趋于不同,因为数据是在端点的不同时间采集的。在追求实现两个产品集成时,这被认为是不合需要的。应当避免这种数据的不一致性,并且由两个或更多软件产品在各自储存库中维护的数据应当被保持同步。一种可能的同步数据的方式是在服务器组件级;这通常需要利用数据库同步机制,也被称为"数据复制"。要被集成的两个或更多软件应用程序中的每一个负责按照常规方式,即,按照完全察觉不到另一库中。提供要被集成的软件应用程序之外的工具,其负责将更新后的信息从一个数据库移动到其它数据库。另一种可能的保持数据在两个或更多软件应用程序之间同步的方式是在客户端组件级在此情况下,数据的同步在客户端组件级而不是在软件产品的服务器组件级来完成。参考上述示例,假设当要被集成的两个软件产品中的一个的软件代理采集同样被另一个软件产品的软件代理所采集的数据时,也要触发关于另一个软件代理所采集的数据的所述数据的上传。换言之,运行于通用端点上的软件代理每次必须采集数据并且将它们上传至服务器,使得它们存储在各自的储存库中,其将自己的活动通知给运行于那个端点上的其它软件代理,使得其它软件代理也能开始数据采集和上传。按照这种方式,随着时间的过去存储在不同中央储存库中并且能够由用户通过两个软件产品的用户接口进行访问的信息是相同的。
发明内容申请人观察到上述数据复制方法受到一些缺点的影响。第一个缺点是同步数据在端点处没有共享;在实践中,可能发生如下情况安装于端点上并且由该端点执行的软件产品的客户端组件除了从信息源采集数据之外,在将所采集的数据上传至服务器组件之前,针对它们在各自中央储存库中的存储,还对所采集的数据执行一些处理。在数据复制方法中,仅上传数据的客户端组件能够处理它们。第二个缺点是,为了使服务器组件能够利用上传的数据,需要改变服务器组件代码;事实上,服务器组件通常对运行于端点的客户端組件所上传的输入数据执行操作。在输入数据是从不同数据库直接复制的时,那么需要执行不同的处理流程,其在对存储在数据库中的数据的改变不是由服务器组件自身执行时被触发。关于包括客户端组件级处的同步的上述第二种方法,缺点是其需要修改要被集成的单个产品,例如,意图要被通用端点执行的两个软件代理,使得它们知道怎样互操作(inter-operate)。特别地,需要改变要被集成在套件中的产品的每个软件代理的代码,从而嵌入调用和通知其它软件代理所需的程序。另一个缺点是当另一个软件产品要被集成到在前创建的软件产品套件中时,考虑到新应用程序被包括在套件中的事实,需要再次改变已经集成在产品套件中的应用程序的代码。又一个缺点是如果作为产品套件的一部分的软件产品中的一个增强其自身功能,例如管理附加类型的数据,并且这些新数据类型将要是集成的一部分,则需要修改套件的其它软件产品,使得触发这些新类型的数据的生成。鉴于上述现有技术,通过提供不受上述缺点的影响的、在这些不同软件产品集成到套件中时保证由不同软件产品所采集的数据的随时间的一致性的方法,申请人解决了上述问题。根据本发明的一个方面,提供了如权利要求1所述的方法,用于保持由第一和至少一个第二软件应用程序从各自信息源采集并且存储在各自的第一和第二数据储存库中的数据同步。所述方法包含a)接收刷新存储在第一数据储存库中的数据的请求;b)致使该至少一个第二软件应用程序从各自的信息源采集数据;c)接收由第一和至少一个第二软件应用程序从各自信息源采集的数据,以及d)上传接收的数据至各自的第一和笫二储存库。根据本发明的第二方面,提供如权利要求10所述的系统。根据本发明的第三方面,提供如权利要求11所述的计算机程序。通过仅仅以非限制性示例的方式提供的,结合附图所做出的实施明的特征和优点将会变得明显,在附图中图l是其中本发明能够应用的计算机网络情形的示意图;图2依据功能模块示意性地示出了网络的通用计算机的结构;图3依据功能模块示意性地示出了根据本发明实施例的集成的软件产品套件的服务器侧软件组件和客户端侧组件的主要模块;图4更详细地示意性示出了根据本发明实施例的包括在客户端侧软件组件中的上传管理器模块;图5是示出在本发明实施例中要被集成在套件中的新客户端软件组件的上传管理器模块的注册阶段的示意性流程图;以及图6是示出本发明实施例中数据上传程序的示意性流程图。具体实施例方式参考附图,图1中示意性地示出了其中本发明能够应用的分布式数据处理系统100,特别是计算机网络。数据处理系统100可以是,例如企业、公司、国家机关、大学或者研究所、小型办公室等等的数据处理基础结构。数据处理系统能够是,例如局域网(LAN)、城域网(MAN)、广域网(WAN)或者诸如互联网的网络的网。数据处理系统100包含多个数据处理装置,特别是计算机、工作站、存储设备、输出设备(例如,打印机)、智能手机、个人数字助理以及通常通过数据通信网络105的方式相互连接的每一种类型的数据处理装置。例如,数据通信网络105可以是或者包括以太网络、WiFi网络、GPRS网络、光通信网络、蓝牙网络。出于简化的原因,图1中仅仅示出了数据处理系统100的三台计算机服务器计算机110和构成端点的两台计算机115和120。在本说明书中以示例的方式考虑的情形是提供不同(可能重叠)功能并且具有客户端-服务器体系结构的两个(或者通常更多个)不同软件产品需要集成到套件中,形成适合于提供更丰富功能的新软件产品。因而,出于本说明书的目的,服务器计算机110意图是其上安装和运行8有要被集成到套件中的两个(或者更多个)不同软件产品的服务器组件的计算机。端点115和120意图是其上安装和运行有要被集成到套件中的两个(或者更多个)不同软件产品的客户端组件的计算机。如图2所示,数据处理系统100的通用计算机(如端点115、120或者服务器计算机110中的任何一个)包含几个互连的单元,总体表示为200。特别地,某些单元并行连接至系统总线205。具体地,一个或多个微处理器(nP)210控制计算机200的操作;RAM(随机访问存储器)215被直接用作微处理器200的工作存储器,以及ROM(只读存储器)220(可能包括EPROM和/或EEPROM和/或闪存)存储用于计算机200的引导程序(bootstrap)的基本代码。外围单元(通过各自接口)连接到本地总线225。特别地,大容量存储设备包含硬盘230和用于读取和可能写入CD-ROM/DVD-ROM240的CD-ROM/DVD-ROM驱动器235。此外,计算机200通常包括输入设备245(例如键盘和鼠标或者类似的定位设备),以及输出设备250,如显示设备(监视器)和打印机。网络接口卡(NIC)255(例如,以太网适配器和/或WiFi适配器);故用来将计算机200连接至网络105。桥接单元260在系统总线205和本地总线225之间提供接口。每个微处理器210和桥接单元260能够作为请求访问系统总线205以传输信息的主代理来操作;仲裁器265管理对系统总线205的访问的授权。现在请参考图3,其中更加详细地描述了要被集成到套件中的两个不同软件产品的服务器组件和客户端組件。观察到图3中描述的任何功能块可以代表一个或多个软件模块、一个或多个硬件资源,或者软件模块和硬件资源的混合。程序和数据通常存储在计算机的硬盘上并且当程序执行时被(至少部分地)装载到计算机的工作存储器中(在该图中,并发地运行在通用计算机上的操作系统以及其它基本应用程序出于简洁的原因而未被示出)。假设上述的情形,用Pl和P2表示需要被集成以形成套件的两个不同软件产品。两个产品Pl和P2中的每一个都具有客户端-服务器体系结构,并且包舍意图在通用端点(例如端点115)上安装并执行的客户端组件,以及意图在服务器110上安装并执行的服务器组件。两个软件产品中的每一个的客户端组件分别包含软件代理305("P1代理")和310("P2代理"),其适合于从在端点115处可用的相同或者不同信息源315采集数据,并且上传所采集的数据至各自的服务器组件。两个软件产品中的每一个的服务器组件包含服务器模块320("P1服务器,,)和325("P2服务器"),其适合于从安装于各个端点上的各自软件代理305和310接收软件代理在各自端点处所采集的数据;服务器模块320和325适合于管理所接收的数据到各自中央储存库330和335中的存储。两个软件产品中的每一个的服务器组件进一步包含用户接口模块340("P1接口,,)和345("P2接口"),其适合于允许图中显示为计算机350的一个或多个用户访问各自的中央储存库330和335。如在本说明书的
背景技术
一节中所讨论的一样,由于两个软件产品Pl和P2不同,安装于通用端点上并且由通用端点执行的两个软件代理305和310中的每一个通常都察觉不到另一个的存在;它们通常以不同的方式并且在不同的时间启动数据采集机制;换言之,独立使用的它们以完全不相关联的方式运转。为了保证涉及相同端点并且存储在由服务器110为两个软件产品Pl和P2所管理的中央储存库330和335中的数据保持随时间是一致的,根据本发明实施例,提供上传管理器模块355。特别地,上传管理器模块355意图被安装于每一个端点上并且由每一个端点执行。上传管理器模块355被插入意图成为集成套件的一部分的软件产品的通用软件代理(如软件代理305和310)与各自服务器组件之间。特别地,上传管理器模块355适合于截获由运行于端点上的套件的通用软件代理发送的数据上传请求,以便命令运行于该端点上的其它软件代理从各自信息源采集数据,并且接着上传由每个软件代理所采集的数据至各自服务器组件。图4更详细地示意性示出了本发明实施例中上传管理器模块355的结构。注册管理器模块405接收和处理来自要被集成到产品套件中的新软件产品的客户端组件的注册请求;特别地,当新软件产品的客户端组件安装于所考虑的端点上时发送注册请求。注册管理器模块405管理依赖关系表(dependenciestable)410,其中,针对每个注册的软件应用程序,有关由这个应用程序所处理的数据类型的信息,以及该应用程序所感兴趣的数据类型,与程序(例如,适合于致使软件代理从各自信息源采集数据的命令)一同被存储。上传请求处理器模块415截获并且处理由安装并且运行于端点上的套件的软件应用程序的客户端组件发送的数据上传请求。上传请求处理器模块415包含特别是数据类型鉴定器(evahiator)模块420,其适合于鉴定包含在通用软件代理所发送的上传请求中的数据类型,以及依赖关系解析器(resolver)模块425,基于数据类型鉴定器模块420向其提供的指示,其适合于在依赖关系表410中进行查找,使得在由通用软件代理接收上传请求时,确定将要指示哪些其它软件代理采集数据并且上传它们至各自服务器组件,以保持数据同步。上传请求处理器模块415还可以适合于接收服务器组件320和325的数据上传请求;以与从软件代理接收的上传请求基本相同的方式处理这些请求。依赖关系解析器模块425进给(feed)数据采集器模块430,其基于由依赖关系解析器模块425从依赖关系表410取回的信息,适合于调用适当的命令使得致使对接收的上传请求中指定的数据类型感兴趣的软件代理从各自信息源采集数据。数据采集器模块430将由所调用的软件代理所采集并且从所调用的软件代理接收的数据传递至数据上传器模块435,数据上传器模块435适合于单独地针对由数据采集器模块调用的每个软件代理而上传数据至适当的服务器组件。优选地提供失败处理器模块440,其适合于管理失败的情况。现在将描述根据本发明实施例的上传管理器模块的操作。首先,描述了要添加至集成产品套件的新软件产品向上传管理器模块注册的程序;接着,详细描述了上传管理器模块管理从套件的软件产品的的方法。参考图5的示意性流程图,假设新软件产品要被集成到产品套件中;该产品套件可以是已经存在的产品套件,或者要被创建的套件;例如,假设软件产品P2要与软件产品P1集成。还假设上传管理器模块355已经安装并且运行于所考虑的端点(例如,端点115)上。在端点上安装软件产品Pl的客户端组件之后,被安装的客户端组件(例如软件代理305)发送注册请求至上传管理器模块355;例如,软件产品Pl的客户端组件可以调用上传管理器模块355的命令行接口(CLI),向其传输与软件代理305感兴趣的数据类型有关的指示和上传管理器模块355能够发送的命令,从而导致软件代理305对指定类型的数据的采集,以及所采集的数据到各自服务器组件320的上传。上传管理器模块355接收注册请求(块505)。上传管理器模块355处理所收到的注册请求,并且根据包括在所收到的注册请求中的信息更新依赖关系表410。特别地,上传管理器模块355为新应用程序在依赖关系表410中创建新的项550;新的表项用来存储新客户端组件的指示515、新客户端组件感兴趣的数据类型的指示520以及必须被调用以致使软件代理开始数据采集和上传的命令525。通过向上传管理器模块355注册,被安装的软件产品声明对所采集的数据与由其它应用程序所采集的数据的同步感兴趣。注册软件产品P2,以及随后可能需要增加的任何其它软件产品都是相似的程序。现在参考图6的流程图。假设,一般时候,上传管理器模块355(的上传请求处理器模块415)接收由安装并且运行于所考虑的端点上的一个客户端组件(例如由软件代理305)所发送的,或者由一个服务器组件(例如服务器组件320)所发送的上传请求(块605)。上传管理器模块355(的数据类型鉴定器模块420)鉴定包括在上传请求中的数据类型(块610),接着上传管理器模块355(的依赖关系解析器模块425)在依赖关系表410中进行查找,从而确定安装于该端点上的哪一些客户端组件对所接收的注册请求中所指定的相同12类型数据感兴趣,也就是,它解析了依赖关系(块615)。上传管理器模块355(的数据采集器模块430)接着根据依赖关系表410中存储的信息调用对上传请求中指定的相同类型数据感兴趣的每一个客户端组件(即,每一个软件代理)(块620);这利用依赖关系表410中存储的特定命令来完成。按照这种方式,数据由所有相关联的客户端组件来采集。例如,假设上传管理器模块355接收来自软件产品P1的软件代理305的上传请求;还假设软件产品P2也和软件产品Pl—样对相同的类型数据感兴趣那么,上传管理器模块355调用软件代.理310并且致使其从各自的信息源采集数据。上传管理器模块355(的数据采集器模块430)接收由运行于端点上的软件代理在数据变得可用时所采集的数据(块625)。当已经从所有被调用的软件代理采集全部数据时,上传管理器模块355(的上传器模块435)上传(块630)数据至适当的服务器组件,其将接着将它们存储至各自的中央储存库中。在调用一个软件代理失败的情况中(例如,在上传管理器模块355可能在执行预定次数的重试后在指定的时限内没有从调用的软件代理接收到响应的情况中),上传管理器模块355(的失败处理器模块440)可以彻底中止数据的上传,或者仅仅上传那些已经成功地从调用的软件代理所采集的数据而丢弃其它数据。应当指出上传管理器模块355,替代地或者在由上传请求的接收来触发之外,可以根据时限作为周期性的行为来执行上述操作,可以在上传管理器内与例如每个类型的数据相关联地配置所述时限;在此情况下,当针对给定类型数据的时限过去了时,上传管理器模块355自动地调用对指定类型数据感兴趣的已注册的软件代理,使得其采集数据,并且接着上传它们至各自的服务器组件。本发明的优点是一般的软件产品不需要察觉到其它软件产品的存在,并且其继续好象它是对特定类型数据感兴趣的唯一的实体一样操作在数据上传操作的情形中,上传管理器模块处理多于一个的对相同类型数据感兴趣的软件产品的存在,并且调用适当的命令来导致还来自其它软件产品的数据采集和上传。另一个优点是集成在套件中的不同软件产品的中央储存库能够保持分离并且不共享任何共同的部分。因而,从这个角度看,每个软件产品都独立于其它所有的软件产品。仅仅保持数据同步。而且,仅仅上传管理器模块知道所有具有相关的被管理的数据类型的注册的应用程序。将新客户端组件添加到端点环境的程序不需要对已有应用程序的任何改变。针对已经存在的软件应用程序,根据本发明的解决方案的实现仅仅需要最小的改变;这些改变涉及上传管理器模块的注册阶段(一般应用程序需要发送适当的注册请求)和上传管理器模块对请求数据上传的调用。数据同步不需要对服务器组件代码的任何改变。所有的应用程序流程在服务器组件级仍然是相同的。应用程序和另一个相集成的情形与应用程序以独立的方式工作的情形之间没有区别。已经参考本发明的示例性实施例描述了本发明的实现方法,然而在不脱离由所附权利要求所限定的本发明范围的前提下,本领域技术人员将能够认识到对所述实施例,以及发明的不同实施例的修改。本发明能够采用全部硬件的实施例、全部软件的实施例或者包含硬件和软件元件两者的实施例形式。在优选实施例中,本发明以软件来实现,其包括但不限于固件、常驻软件、微码等等。而且,本发明能够采用可以从提供程序代码的计算机可用或者计算机可读介质来访问的计算机程序产品的形式,所述程序代码由计算机或任何指令执行系统来使用或者结合计算机或任何指令执行系统来使用。出于本文描述的目的,计算机可用或者计算机可读介质可以是任何能够包含、存储、通信、传播或者传输程序的任何装置、设备或元件,所述程序由计算机或指令执行系统来使用或者结合计算机或指令执行系统来使用。介质能够是电的、磁的、光学的、电磁的、红外的或者半导体存储介质、网络或者传播介质。存储介质的示例包括半导体存储器、固定存储磁盘、可移动软盘、磁带和光盘。光盘的当前示例包括只读存储光盘(CD-ROM)、可读写光盘(CD-R/W)和数字通用光盘(DVD)。传播介质的示例包括有线、光纤和无线传输。本发明能够应用在具有不同体系结构或者基于等同元件的数据处理系统中;每个计算机能够具有另外的结构或者其能够由任何数据处理实体(如PDA、移动电话等等)来替代。权利要求1.一种保持由第一和至少一个第二软件应用程序(305,310)从各自信息源(315)采集并且存储在各自的第一和第二数据储存库(330,335)中的数据同步的方法,所述方法包含以下步骤a)接收(605)用于刷新在第一数据储存库中存储的数据的刷新请求;b)致使(610-620)所述至少一个第二软件应用程序从各自信息源采集数据;c)接收(625)由所述第一和至少一个第二软件应用程序从各自信息源采集的数据,以及d)上传(630)所接收的数据至各自的第一和第二储存库。2.如权利要求l所述的方法,其中从第一软件应用程序接收所述刷新请求。3.如权利要求2所述的方法,其中在第一软件应用程序已经从各自信息源采集数据后接收所述刷新请求。4.如权利要求l、2或3所述的方法,其中所述第一和第二软件应用程序中的每一个都是客户端-服务器软件产品的客户端组件,所述客户端-服务器软件产品包含适合于管理各自的笫一或者第二数据储存库的服务器组件。5.如从属于权利要求1时的权利要求4所述的方法,其中从第一服务器组件接收所迷刷新请求。6.如在前任一项权利要求所述的方法,其中所述动作b)、c)和d)被附加地执行预定次数。7.如在前任一项权利要求所述的方法,其中所述致使至少第二软件应用程序从各自信息源采集数据的步骤根据第一和第二软件应用程序所采集的数据具有预定相关性的事实而有条件地执行。8.如在前任一项权利要求所述的方法,包含以下步骤在安装适合于从各自信息源采集将要被存储在各自第三数据储存库中的数据的第三软件应用程序后,确定由第三软件应用程序所采集的数据是否与由第一或者第二软件应用程序所采集的数据具有预定相关性。9.如权利要求8所述的方法,进一步包含在安装第三软件应用程序后,存储致使第三软件应用程序从各自信息源采集数据的命令。10.—种数据处理系统,包含装置,所述装置适合于执行如在前任一项权利要求所述方法的步骤。11.一种计算机程序,包含用于当所述计算机程序在计算机上执行时执行如权利要求1至9中任一项所述方法的步骤的指令。全文摘要一种保持由第一和至少一个第二软件应用程序(305)、(310)从各自信息源(315)采集并且存储在各自的第一和第二数据储存库(330)、(335)中的数据同步的方法。所述方法包含a)接收刷新存储在第一数据储存库(330)中的数据的请求;b)致使至少一个第二软件应用程序(310)从各自信息源(315)采集数据;c)接收由第一和至少一个第二软件应用程序(305)、(310)从各自信息源(315)采集的数据,以及d)上传接收的数据至各自的第一和第二储存库(330)、(335)。文档编号G06F17/30GK101454777SQ200780018980公开日2009年6月10日申请日期2007年3月13日优先权日2006年6月26日发明者E·阿尔伯蒂,F·塞利,M·阿尔切塞,R·甘格米申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1