数据同步 版权通告
本专利文本所公开内容的一部分包含有受版权保护的材料。版权所有人不反对任何人对专利文档或专利公开内容进行如专利和商标局中的对专利文件和专利公开的翻印复制,但除此之外将保留所有的各种版权权利。
相关申请的参照引用
本申请声明要求在2001年10月24日提交的美国临时专利申请No.60/386,487(律师案号No.BEAS1112US0)的权利,并在此引用作为参考。
【发明背景】
1.技术领域
本发明涉及部署和同步数据的技术。
2.背景技术
基于网站的软件应用程序已作为强大的工具出现,以同样的方式提供有用的服务给卖主和顾客。电子商务网站应用程序可配置为依照业务逻辑而运作来实现有助于电子商务的各种过程。这种应用程序也可提供与远程互联网客户交互的服务和/或应用程序。
Java2平台企业版(J2EE),来自于加州圣克莱拉的Sun微系统公司,有助于在多层企业应用程序环境中运行地电子商务网站应用程序的开发。这种网站应用程序的运作由用于配置网站应用程序的数据(“应用程序数据”)来控制。因此,通过更新与应用程序关联的应用程序数据,可修改由网站应用程序所提供的功能。
遗憾的是,从新的或更新的应用程序数据到J2EE网站应用程序的部署和同步工作是麻烦的过程。新创建的应用程序数据通常依照数据库所使用的特定模型存储在数据库中。如果开发者试图部署这种应用程序数据到运行中的产品服务器,数据在转换成适合传输到服务器的形式之前必须先从数据库中提取出来。通常都需要脚本来从数据库导出应用程序数据到文件系统中。导入应用程序数据到运行中的服务器也需要脚本。因为这些原因,维护应用程序数据的不同版本也会成为一种笨拙和难做的努力。
此外,在新应用程序数据可被移动到运行中的产品服务器之前,可能需要部署应用程序数据到多个服务器以遵循多阶段测试过程。这种应用程序数据迁移可能会是麻烦的手工过程,在应用程序数据从一个服务器迁移到另一个服务器并且涉及多个人时会变得愈加容易出错。因此,在J2EE平台环境中部署和同步应用程序数据的现有技术很大程度上是专用的和不方便的。
【发明内容】
本发明,粗略地说,公开了同步运行在一个或多个服务器上的企业应用程序所用的应用程序数据。例如,在一个实施例中,接收应用程序数据并与数据库和数据储藏库同步。在另一个实施例中,提供了应用程序数据部署方法,允许应用程序数据的创建、提交到源码控制系统、以及发送到其数据储藏库与数据同步的远程服务器。
在另一个实施例中,通过使用代理数据储藏库来在企业应用程序之间同步应用程序数据。在另一个实施例中,通过使用一个数据储藏库询问另一个来在数据储藏库之间同步应用程序数据。
系统和计算机可读介质也提供作为这些方法的实现部分和变体。如本公开内容中所述,也可能有其他许多实施例。
【附图说明】
图1展示了如本发明的实施例所述的用于创建应用程序数据文件和划分其版本的系统的概念图。
图2展示了如本发明的实施例所述的用于同步数据的系统的高层方框图。
图3展示了如本发明的实施例所述的运行着具有可被同步的数据的企业应用程序的服务器的方框图。
图4是展示了如本发明的实施例所述的用于同步数据的过程的流程图。
图5展示了如本发明的实施例所述的运行着企业应用程序的多个服务器的方框图,该企业应用程序带有通过使用代理数据储藏库可被同步的数据。
图6展示了如本发明的实施例所述的运行着企业应用程序的一群服务器的方框图,该企业应用程序带有可被管理服务器同步的数据。
【具体实施方式】
图1展示了如本发明的实施例所述的用于创建应用程序数据文件和划分其版本的系统的概念图。创建者110是具有创建可被一个或多个网站应用程序和/或服务所使用的应用程序数据的职责的人。在各种实施例中,创建者110可以是业务线(line-of-business)经理、业务工程师、开发人员或负责创建应用程序数据的其他人。应用程序数据可被用于配置网站应用程序来依照创建者110所定义的业务逻辑运作。例如,创建者110创建的应用程序数据可包括比如活动定义的业务政策文档、计划说明书、业务规则集、门户定义和/或网站应用程序使用的其他类型数据。
为了产生应用程序数据,创建者110可与各种软件工具建立联系,比如控制中心120。在一个实施例中,控制中心120是来自加州圣约斯的BEA系统公司的电子商务控制中心工具。创建者110使用控制中心120创建的数据可作为一组应用程序数据文件存储在本地层次文件系统中。图1展示了存储在层次文件系统中的应用程序数据文件130的例子。应用程序数据文件130可根据需要创建它们的网站应用程序来组织。在一个实施例中,由控制中心120创建的应用程序数据存储在遵循由需要创建(author)这些数据的网站应用程序所解释的XML(可扩展标记语言)模型的XML文件中。因为XML可被跨越多种平台的各种系统所读取和解释,使用XML应用程序数据要优于数据库面向脚本方法。
创建者110和控制中心120交互所产生的应用程序数据文件130可被检入源码控制系统140。源码控制系统140允许应用程序数据文件130的不同版本可为测试、部署、同步和/或其他用途而很容易地取回。例如,如果网站应用程序部署了有错的应用程序数据,源码控制系统140允许创建者110来取回应用程序数据的先前版本和重新部署数据到网站应用程序。可当并行创建应用程序数据时,使用源码控制系统140也避免多个创建者覆盖彼此的文件。在一个实施例中,源码控制系统140是本领域中所知的任何适用的源码控制系统。
在创建系统数据后,典型地要遵循多阶段核准过程来测试新创建的应用程序数据和其他创建者所创建的其他数据和/或应用程序之间的交互。例如,在应用程序数据部署到产品服务器之前,会遵循独立的开发和质量保证阶段。这些阶段帮助确保在产品服务器上运行的网站应用程序将可靠地运作。
在网站应用程序的这种协作开发中,软件开发者会很希望同步跨越企业应用程序界限来将应用程序数据与远程服务器同步。此后进一步描述的各种数据同步过程利用(leverage)了由HTTP(超文本传输协议)提供的优势来使可通过互联网访问的远程服务器上的应用程序数据同步变得更容易。如本发明的特定实施例所述,新创建的应用程序数据可与一个或多个正运行的远程服务器同步。通过识别服务器所关联的URL(统一资源定位符),应用程序数据可远程地与经过HTTP通过互联网可访问的任何服务器同步。
图2展示了如本发明的实施例所述的用于同步数据的系统的高层方框图。图2的系统可用于在将网站应用程序最终部署到产品服务器上之前协作开发和测试它们。在一个实施例中,图2的系统实现为使用来自加州圣约斯的BEA系统公司的BEA WebLogic平台的一个或多个组件。如图2中所示,多个服务器与网络210通讯。在一个实施例中,图2的系统实现为点对点网络。图2的每个服务器与可存储运行在服务器上的网站应用程序和/或服务所用的应用程序数据的数据库相关联。如图2所示,在多阶段应用程序数据核准过程中,每个服务器可用于不同的用途。例如,这些用途可包括:开发(服务器230和数据库235)、质量保证(服务器240和数据库245)、产品化(服务器250和数据库255)和其他(未显示)。
图2的每个服务器通过网络210能够接收来自于创建者系统220的应用程序数据。接收自创建者系统220的应用程序数据可与此后进一步描述的各种服务器上运行的网站应用程序所用的应用程序数据同步。在一个实施例中,创建者系统220是图1中展示的系统。
服务器工具260和数据库工具265也在图2中展示。这些工具允许分别对在产品服务器250和产品数据库255上的数据进行实时修改。在一个实施例中,服务器工具260是基于JSP(Java服务器端页面)的工具,允许直接地施加变化到产品服务器250去。
图3展示了如本发明的实施例所述的运行着有可被同步的数据的企业应用程序的服务器的方框图。服务器310可为图2中展示的能够接收来自于创建者系统220的应用程序数据的任何服务器。如图3中所示,多个网站应用程序和服务驻留在服务器310上运行的企业应用程序320中。电子商务网站应用程序350包括依赖于在服务数据储藏库370、375和/或377中存储的应用程序数据的服务360。在企业应用程序320环境中运行的附加服务365也可依赖于在服务数据储藏库中存储的应用程序数据。在一个实施例中,服务数据储藏库是作为对于已被部署的服务类而言重要的、在数据项的内存中缓冲的Java对象。
数据同步网站应用程序330也运行在企业应用程序320中并且负责执行如本发明所述的数据同步操作。如图3所示,数据同步应用程序330可通过网络210与图2的创建者系统220通讯。企业应用程序320中的主数据储藏库340可与数据同步应用程序330、数据库380和数据储藏库370及375通讯。
数据同步应用程序330可拦截通过网络210从创建者系统220发送的同步请求。在一个实施例中,这些同步请求遵循远程协议通过HTTP作为XML发送。当数据同步应用程序330接收到来自创建者系统220的同步请求时,它引导接收自创建者系统220的应用程序数据到作为应用程序数据的运行时间表示的主数据储藏库340去。数据同步应用程序330也引导所接收的应用程序数据到作为应用程序数据的持久性存储位置的数据库380去。在一个实施例中,数据储藏库340以企业Java Beans(EJB)存储到来的应用程序数据。在另一个实施例中,数据库380是关系数据管理系统。
在一个实施例中,数据同步应用程序330包括一组JSP,它们能够报告:主数据储藏库340的内容、与主数据储藏库340成功同步的数据储藏库和在企业应用程序320中每个数据储藏库的内容。
图3的服务数据储藏库中的每个都包含了存储在主数据储藏库340中的应用程序数据的子集。服务360和365使用服务数据储藏库中的数据来执行商业任务。例如,规则服务可使用数据来评定顾客是否适合特定的顾客区段(segment)。因为图3的服务数据储藏库只维护在主数据储藏库340中数据的子集,每个服务能够解析服务所需要的应用程序数据的一个小的特定集合,而不需要维护在主数据储藏库340中维护的所有应用程序数据的副本。
每次主数据储藏库340同步时,它通知数据储藏库370和375。这些数据储藏库于是将这些数据子集与主数据储藏库中的数据进行同步。在一个实施例中,应用程序数据遵循二进制协议在企业应用程序320的组件之间通讯。运行在服务器310上的多个企业应用程序(未显示)也可使用运行在每个企业应用程序中的独立数据同步应用程序进行同步。代理数据储藏库可用来辅助这种同步。
在某些情况下,主数据储藏库340不直接将数据与数据储藏库同步。而是,使用多个数据储藏库来形成通知链。参见图3,数据储藏库375和377建立了通知链。当数据储藏库375接收到来自主数据储藏库340的更新后的应用程序数据时,它通知数据储藏库377。数据储藏库377于是可与数据储藏库375所接收的应用程序数据进行同步。因此,储藏库375和377都可以不需要在主数据储藏库340发送更新后的应用程序数据到这些储藏库的条件下进行同步。
图4是展示了如本发明的实施例所述的用于同步数据的过程的流程图。当应用程序数据创建者系统220与图2的任何服务器进行同步时,可通过从创建者系统220发送同步请求到待同步服务器的URL来发起同步过程,在那里请求会被数据同步应用程序330拦截。在各种实施例中,创建者110可使用控制中心120的图形界面或Java命令行发起同步过程。
在本发明的各种实施例中,可使用不同的同步模式。在从客户刷新模式中,同步所有用于特定应用程序的应用程序数据。使用这种模式,所有数据从数据储藏库中清除,然后将所有相关应用程序数据文件从创建者的本地文件系统发送到数据同步网站应用程序。这种模式有助于将内存中数据与持久性数据进行同步,或者从同步错误中恢复。在非客户(one-way-from-client)模式中,只更新那些已被删除、更新或者在创建者的本地文件上创建的应用程序数据文件。于是,将在创建者系统和待同步服务器之间的数据传输量减到最少。
当在步骤410中的同步过程初始化时,待同步应用程序数据将通过网络210从创建者系统220发送到服务器310(步骤420)。在一个实施例中,应用程序数据使用POST命令通过HTTP作为XML文件发送。应用程序数据由数据同步应用程序330接收。数据同步应用程序330于是将数据库380和主数据储藏库340与新接收的应用程序数据进行同步(步骤430)。作为步骤430的结果,数据库380包含以用于持久性存储的数据库格式来存储的更新后的应用程序数据,并且主数据储藏库340包含以EJB运行时间格式存储的更新后的应用程序数据。
如此前所述,图3的各种应用程序和服务会依赖于驻留在服务数据储藏库中的应用程序数据。从而,每个服务数据储藏库可订阅接收更新后的应用程序数据。为了更新在数据储藏库370和375中的应用程序数据,主数据储藏库340通知服务数据储藏库370和375中的每一个:以这些储藏库已订阅接收的任何更新后的应用程序数据(步骤440)。如前所述,服务数据储藏库377通过通知链接收它的通知。主数据储藏库340也通知运行在其他服务器上的企业应用程序所用的代理数据储藏库(未显示),如此后进一步描述。在服务数据储藏库已被通知更新后的应用程序数据之后,每个储藏库将自己与它所订阅的主数据储藏库中的特定应用程序数据进行同步(步骤450)。代理数据储藏库也转发在步骤440中发送的任何通知到它们的远程数据同步网站应用程序,以同步在服务器310上的其他企业应用程序(未显示)中运行的储藏库或其他远程服务器(步骤460),如此后进一步描述。
服务数据储藏库370和/或375也可周期性询问主数据储藏库340来检查应用程序数据是否已更新。如果检测到更新后的数据,则在主数据储藏库340中维护的应用程序数据可与服务数据储藏库370和/或375同步。
主数据储藏库340维护着描述每次更新的日志和包括了对哪个数据储藏库已成功更新和哪个没有的描述。数据同步应用程序330可通过HTTP或Java命令解释器返回状态消息到创建者系统220来标识哪个应用程序数据文件已成功同步。图3的每个数据储藏库也可维护描述当前内容的日志。
如图3中所示,应用程序数据可在创建者系统和运行在单个服务器上的企业应用程序之间同步。如本发明的各种实施例所述,多个服务器也可通过在图4的步骤410中发起的单个同步过程同步。通过使用在图5中阐述的附加部件,可辅助这种多个服务器的同步。
图5展示了如本发明的实施例所述的运行着企业应用程序的多个服务器的方框图,该企业应用程序带有通过使用代理数据储藏库可被同步的数据。企业应用程序620和660分别运行在服务器610和650上。运行在企业应用程序620中的主数据储藏库630可被数据同步应用程序(未显示)同步,如此前所述,该数据同步应用程序与创建者系统(未显示)通讯。主数据储藏库630与也在企业应用程序620中运行的代理数据储藏库640通讯。代理数据储藏库640可订阅,以接收在主数据储藏库630中存储的更新后的应用程序数据。
数据同步网站应用程序680是运行在远程服务器650上的数据同步应用程序的实例。但是,数据同步应用程序680并非直接从创建者系统220(类似于图3的数据同步应用程序330)接收更新,而是接收从代理数据储藏库640发送的更新。远程主数据储藏库670是用于企业应用程序660的主数据储藏库,该企业应用程序依照由数据同步应用程序680接收的应用程序数据进行更新。远程主数据储藏库670可传递更新后的应用程序数据到在如此前讨论的在企业应用程序660中运行的其他代理和/或服务数据储藏库(未显示)。应该理解,在图5的服务器上可出现附加部件(未显示),比如在图3和/或图6的服务器中阐述的一个或多个部件。
在操作中,主数据储藏库630从与诸如图2的创建者系统220一样的创建者系统(未显示)通讯的数据同步网站应用程序接收更新后的应用程序数据。代理数据储藏库640订阅,以接收来自于主数据储藏库640的更新后的应用程序数据。因此,主数据储藏库630接收的更新后的应用程序数据被传递到代理数据储藏库640。代理数据储藏库640于是从服务器610传递应用程序数据到运行在服务器650上的数据同步应用程序。在一个实施例中,应用程序数据由代理数据储藏库640遵循二进制协议接收。从而,在以XML通过HTTP传递应用程序数据到在远程服务器650中的数据同步应用程序680之前,代理数据储藏库640将应用程序数据编制成XML格式。
当数据同步应用程序680接收更新后的应用程序数据时,数据同步应用程序650开始用更新后的应用程序数据更新远程主数据储藏库670。如图3中所示的持久性存储数据库(未在图5中显示)也被同步,并且更新后的应用程序数据则转发到企业应用程序660的所有数据储藏库(未显示),该数据储藏库订阅以接收更新后的应用程序数据。
于是,通过订阅代理数据储藏库来接收来自于主数据储藏库的更新,运行在远程服务器上的企业应用程序中的应用程序数据可用由主数据储藏库接收的应用程序数据来同步。也可用代理跨越运行在相同服务器上的不同企业应用程序来同步数据。此外,通过经由代理链接远程服务器到附加远程服务器,可同步多个服务器的链。这些准则也可进一步用于对跨越如图6中阐述的服务器群集的应用程序数据进行同步。
图6展示了如本发明的实施例所述的一群服务器的方框图,该服务器运行着具有可被管理服务器同步的数据的企业应用程序。在管理服务器710上的企业应用程序720的数据同步网站应用程序730和主数据储藏库740可与群集790的被管理服务器760通讯。如前所述,在远程服务器760上运行的企业应用程序770的数据储藏库(未显示)中驻留的应用程序数据可与在主数据储藏库740中存储的更新后的应用程序数据进行同步。主数据储藏库740可传递更新后的应用程序数据到代理数据储藏库(未显示),代理数据储藏库于是传递数据到在企业应用程序770上运行的数据同步网站应用程序(未显示)。因此,多个服务器760可被从创建者系统(未显示)接收更新后的应用程序数据的单个管理服务器710同步。应该理解,在图6的服务器上可出现附加部件(未显示),比如在图3和/或图5的服务器中阐述的一个或多个部件。
如果可行,本发明可使用硬件、软件或硬件和软件的组合来实现。符合本发明的软件,比如程序代码和/或数据,可存储在一个或多个计算机可读介质上。在不脱离本发明的精神的情况下,如果也可行,此处阐述的各种硬件组件和/或软件组件可组合成包括软件、硬件或两者的复合组件。类似地,在不脱离本发明的精神的情况下,如果可行,此处阐述的各种硬件组件和/或软件组件可分解成包括软件、硬件或两者的子组件。此外,如果可行,应该想到,软件组件可实现为硬件组件,和反之亦然。而且,如果可行,这里阐述的各种步骤可组合成复合步骤和/或分解成子步骤。也应该想到,这里阐述的软件组件可使用一个或多个一般用途或特定用途的计算机和/或计算机系统、网络和/或其他来实现。
上述公开内容不是要将本发明局限在所公开的特定应用程序领域的精确形式里。应该想到,根据本公开内容的本发明的各种替代实施例和/或修改都是可能的。