用于自主计算的合成服务转让专利

申请号 : CN03822261.2

文献号 : CN1689298B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 拉加什·达斯伊万·尼古拉斯·沃利

申请人 : 国际商业机器公司

摘要 :

公开提供用于保存关于硬件和软件组件的信息的改进目录服务的方法、计算机程序产品和数据处理系统。所述目录服务不仅保存其它硬件和软件组件为定位并使用目录中列举的组件而需要的信息,而且还能够动态构成达到客户机的功能性要求的“元服务”。

权利要求 :

1.一种计算机实现的自动管理硬件和软件组件的方法,所述方法包括:a)接收(501)来自客户机的请求,所述请求包含功能要求;

b)咨询(502)目录(401),以确定是否存在满足功能要求的单一组件;

c)响应不存在满足功能要求的单一组件的确定,识别(816)当按照组合方法组合时,会满足所述功能要求的多个功能性;和d)自动识别(818)满足多个功能性的多个组件;

e)得出根据组合方法组合多个组件,以便达到功能要求的指令;和f)把指令提供给远程元服务提供者,以致远程元服务提供者通过把多个组件组合成一个元服务,向客户机提供满足功能要求的功能性。

2.按照权利要求1所述的方法,其中功能要求是服务定义,并且其中咨询目录的步骤包括目录通过咨询可用服务的数据库来确定定义的服务是否可用。

3.按照权利要求2所述的方法,还包括:在执行步骤f)之后,把所述指令返回给客户机,从而客户机利用远程元服务提供者提供的多个组件来达到功能要求。

4.按照任意前述权利要求所述的方法,还包括:在执行步骤e)之后,登记所述多个组件供未来之用,而不必重新识别所述多个组件。

5.按照权利要求1所述的方法,其中所述步骤d)还包括:使所述多个组件的识别对除客户机之外的服务可用。

6.按照权利要求1所述的方法,其中:所述步骤d)还包括:

识别满足多个功能性的组件的多个组合;和所述步骤f)还包括:

向客户机提供所述多个组合中的某一组合的选择。

7.按照权利要求1所述的方法,其中:所述步骤d)还包括:识别满足多个功能性的组件的多个组合;

所述步骤f)还包括:

查询客户机以确定客户机是否有另外的偏爱;和根据所述另外的偏爱,从所述多个组合中选择至少一个组合提供给客户机。

8.一种自动管理硬件和软件组件的数据处理系统,所述系统包括:接收来自客户机的请求的装置(501),所述请求包含功能要求;

咨询目录(401),以确定是否存在满足功能要求的单一组件的装置(502);

响应不存在满足功能要求的单一组件的确定,识别当按照组合方法组合时,会满足所述功能要求的多个功能性的装置(816);

自动识别满足多个功能性的多个组件的装置(818);

得出根据组合方法组合多个组件,以便达到功能要求的指令的装置;和把指令提供给远程元服务提供者,以致远程元服务提供者通过把多个组件组合成一个元服务,向客户机提供满足功能要求的功能性的装置。

9.按照权利要求8所述的数据处理系统,其中功能要求是服务定义,系统还包括由目录咨询的服务定义的数据库。

10.按照权利要求8或9所述的数据处理系统,其中请求由客户机进行,所述数据处理系统还包括:把所述指令返回给客户机的装置,

从而客户机利用远程元服务提供者提供的多个组件来达到功能要求。

11.按照权利要求8或9所述的数据处理系统,还包括:登记所述多个组件供未来之用,而不必重新识别所述多个组件的装置。

12.按照权利要求10所述的数据处理系统,还包括:登记所述多个组件供未来之用,而不必重新识别所述多个组件的装置。

13.按照权利要求8所述的数据处理系统,还包括:使所述多个组件的识别对除客户机之外的服务可用的装置。

14.按照权利要求8所述的数据处理系统,还包括:识别满足多个功能性的组件的多个组合的装置;和向客户机提供所述多个组合中的某一组合的选择的装置。

15.按照权利要求8所述的数据处理系统,还包括:识别满足多个功能性的组件的多个组合的装置;

查询客户机以确定客户机是否有另外的偏爱的装置;和根据所述另外的偏爱,从所述多个组合中选择至少一个组合提供给客户机的装置。

说明书 :

技术领域

本发明涉及改进的数据处理系统,具体地说,涉及管理硬件和软件组件的方法和设备。更具体地说,本发明提供自动识别和组合组件,以便达到功能性要求的方法和设备。

背景技术

现代计算技术已导致极其复杂并且不断变化的环境。一种这样的环境是因特网(也称为互联网络)。因特网是借助网关连接在一起的可能相异的一组计算机网络,所述网关处理数据传送和把消息从发送网络的协议转换成接收网络使用的协议。当用大写字母开头时,术语“因特网”指的是使用TCP/IP协议组的网络和网关的集合。目前,最常用的通过因特网传送数据的方法是采用万维网环境(也简称为Web)。也存在用于传送信息的其它因特网资源,例如文件传送协议(FTP)和Gopher,但是不如Web普及。在Web环境中,服务器和客户机利用超文本传送协议(HTTP)实现数据事务,超文本传送协议(HTTP)是一种用于传送各种数据文件(例如文本、静止图像、音频、运动视频等)的已知协议。用标准页面描述语言,超文本置标语言(HTML)格式化各种数据文件中的信息,以便向用户呈现。因特网还广泛用于把应用程序传送给使用浏览器的用户。用户时常可通过因特网搜索并获得软件包。
其它类型的复杂网络数据处理系统包括为简化大公司中的工作而创建的那些网络数据处理系统。许多情况下,这些网络可在世界范围内跨越多个地区。这些复杂网络还可把因特网用作进行业务的虚拟产品网络的一部分。由于需要管理和更新在网络内使用的软件,从而使这些网络更复杂。
随着软件逐渐变得日益“自主”(autonomic),安装和配置软件的任务将越来越多地由计算机本身进行,与由管理员进行所述安装和配置相反。目前的安装和配置机制正在朝着“自主”进程发展。例如,许多操作系统和软件包将根据用户指定的要求,自动寻找特定的软件组件。这些安装和更新机制通常在预先选择的位置与因特网连接,以查看更新组件或所需组件是否存在。如果更新组件或其它组件存在,那么向用户呈现消息,其中所述消息询问用户是否下载和安装该组件。这种系统的一个例子是作为开放式源码Debian GNU/Linux操作系统一部分的程序包管理程序“dselect”。
朝着“自主”计算的下一障碍涉及在不需要用户干预的情况下,识别并安装/下载必需的硬件和软件组件。在这种下一代系统中,自主配置实用程序会响应对特定功能性的需要的检测,安装组件。在这种情况下,可能不存在提供所需功能性的单一硬件或软件组件。从而,最好存在这样一种方案,借助该方案,能够在缺少提供必需功能性的单一组件的情况下,获得所需的功能性。

发明内容

因此,本发明提供一种计算机实现的保存关于硬件和软件组件的信息的进程,包括:接收包含功能要求的请求;咨询目录以确定是否存在满足功能要求的单一组件;响应不存在满足功能要求的单一组件的确定,识别当按照组合方法组合时,会满足所述功能要求的多个功能性;和识别满足多个功能性的多个组件。
还提供一种包含实现本发明的进程的指令的计算机程序产品。还提供一种实现所述进程的数据处理系统。
从而本发明提供一种改进的目录服务,所述目录服务不仅保存其它组件为定位并利用目录中列举的组件而需要的信息,而且还能够动态地构成满足客户机的功能要求的“元服务”(meta service)。
响应来自客户机的对特定功能要求的请求,目录服务确定提供所需功能性的一组硬件和/或软件组件。随后借助根据域知识的逻辑推断,组合和配置该组中的组件,以获得所需的功能。历史机制便于立即再调用(recall)已经导出的硬件或软件组件的配置。

附图说明

在附加的权利要求中陈述了本发明特有的新特征。但是,结合附图,参考例证实施例的下述详细说明,将更好地理解发明本身,以及发明的优选使用模式,其它目的和优点,其中:
图1表示其中可实现本发明的联网数据处理系统;
图2是图1的联网数据处理系统内的服务器系统的方框图;
图3是图1的联网数据处理系统内的客户机系统的方框图;
图4表示根据本发明的优选实施例的自主合成中介系统的整体视图;
图5是在本发明的优选实施例中,满足对硬件或软件组件的请求的进程的流程图;
图6是向本文档中使用的E-R(实体-关系图)中的符号提供图例的图;
图7是表示供本发明的优选实施例使用的数据库系统的例证E-R图;
图8是根据本发明的优选实施例的接下来是控制逻辑的进程的流程图;
图9描述了本发明的结构变化,其中远程元服务提供者被用于提供导出的元服务;
图10描述了本发明的结构变化,其中远程元服务能力被合并到合成服务中。

具体实施方式

现在参见附图,图1描述了其中可实现本发明的数据处理系统的网络。网络数据处理系统100是其中可实现本发明的计算机网络。网络数据处理系统100包含网络102,网络102是用于提供在网络数据处理系统100内连接在一起的各种设备和计算机之间的通信链路的媒介。网络102可包括连接,例如有线、无线通信链路,或者光缆。
在所示例子中,服务器104连同存储单元106一起与网络102连接。另外,客户机108、110和112与网络102连接。这些客户机108、110和112可以是例如个人计算机或网络计算机。在所示例子中,服务器104向客户机108-112提供数据,例如引导文件,操作系统映像和应用程序。客户机108、110和112是服务器104的客户机。网络数据处理系统100可包括未示出的另外的服务器、客户机和其它设备。在所示例子中,网络数据处理系统100是因特网,网络102代表使用传输控制协议/因特网协议(TCP/IP)协议组相互通信的网络和网关的全球集合。因特网的核心是由成千上万的路由数据和消息的商业、政府、教育和其它计算机系统组成的主节点或主计算机之间的高速数据通信线路的主干网。当然,网络数据处理系统100也可被实现成许多不同类型的网络,例如企业内部网,局域网(LAN)或者广域网(WAN)。
图1只是一个例子,并不是对本发明的结构限制。
参见图2,根据本发明的一个优选实施例,描述了可被实现成服务器,例如图1中的服务器104的数据处理系统的方框图。数据处理系统200可以是对称的多处理器(SMP)系统,包括与系统总线206连接的多个处理器202和204。另一方面,可以采用单处理器系统。存储器控制器/高速缓存208也与系统总线206连接,存储器控制器/高速缓存208提供到本地存储器209的接口。I/O总线桥210与系统总线206连接,提供到I/O总线212的接口。存储器控制器/高速缓存208和I/O总线桥210可如图所示被集成。
与I/O总线212连接的外设部件互连(PCI)总线桥214提供到PCI局部总线216的接口。许多调制解调器可与PCI局部总线216连接。典型的PCI总线实现将支持四个PCI扩展插槽或者内插连接器。通过经内插板与PCI局部总线216连接的调制解调器218和网络适配器220,可提供到图1中的客户机108-112的通信链路。
附加的PCI总线桥222和224向附加的PCI局部总线226和228提供接口,从所述附加的PCI局部总线226和228可支持附加的调制解调器或网络适配器。按照这种方式,数据处理系统200允许连接到多个网络计算机。存储变换图形适配器230和硬盘232也如图所示,直接地或者间接地与I/O总线212连接。
本领域的普通技术人员会认识到图2中描述的硬件可发生变化。例如,除了所示硬件之外或者代替所示硬件,也可使用其它外设部件,例如光盘驱动器等。所描述的例子并不意味着对本发明的结构限制。
图2中所示的数据处理系统可以是,例如运行AdvancedInteractive Executive(AIX)操作系统或LINUX操作系统的IBMeServer pSeries系统(Armonk,New York的国际商用机器公司的产品)。
现在参见图3,描述了其中可实现本发明的数据处理系统的方框图。数据处理系统300是客户机计算机的一个例子。数据处理系统300采用外设部件互连(PCI)局部总线体系结构。虽然描述的例子采用PCI总线,不过也可使用其它总线体系结构,例如加速图形端口(AGP)和工业标准结构(ISA)。处理器302和主存储器304通过PCI桥308与PCI局部总线306连接。PCI桥308还可包括用于处理器302的集成存储器控制器和高速缓冲存储器。通过直接组件互连或者通过内插板,能够实现到PCI局部总线306的附加连接。在所示例子中,局域网(LAN)适配器310,SCSI主总线适配器312和扩展总线接口314通过直接组件连接与PCI局部总线306连接。相反,音频适配器316,图形适配器318和音频/视频适配器319通过插入扩展插槽中的内插板与PCI局部总线306连接。扩展总线接口314为键盘和鼠标适配器320,调制解调器322和附加存储器324提供连接。小型计算机系统接口(SCSI)主总线适配器312为硬盘驱动器326,磁带驱动器328和CD-ROM驱动器330提供连接。典型的PCI局部总线实现将支持三个或四个PCI扩展插槽或内插连接器。
操作系统在处理器302上运行,用于协调并提供图3中的数据处理系统300内的各种组件的控制。操作系统可以是可从市场上获得的操作系统,例如Windows XP(它可从Microsoft公司获得)。面向对象的编程系统,例如Java可以和操作系统一起运行,并提供从在数据处理系统300上执行的Java程序或应用程序对操作系统的调用。“Java”是太阳微系统的商标。操作系统、面向对象的操作系统和应用程序或程序用指令存在于存储装置,例如硬盘驱动器326上,并且可被装入主存储器304,以便由处理器302执行。
本领域的普通技术人员会认识到图3中的硬件可随着实现而变化。除了图3中所示的硬件之外或者代替图3中所示的例子,可以使用其它内部硬件或外围装置,例如快速只读存储器(ROM),等同的非易失性存储器或者光盘驱动器等。另外,本发明的进程可被应用于多处理器数据处理系统。
作为另一例子,数据处理系统300可以是配置成能够不依赖于某一类型的网络通信接口而引导的独立系统。作为另一例子,数据处理系统300可以是个人数字助理(PDA)设备,该个人数字助理(PDA)设备配有ROM和/或快速ROM,以便提供用于保存操作系统文件和/或用户生成的数据的非易失性存储器。
图3中描述的例子和上述例子并不意味着对结构的限制。例如,除了采取PDA的形式之外,数据处理系统300也可以是笔记本计算机或手持式计算机。数据处理系统300也可以是信息站或Web设备。
本发明的目的在于一种保存关于硬件和软件组件的信息的改进目录服务。在本文档中,术语“服务”用于描述硬件和软件组件。在自主计算范例中,可根据功能要求动态取得和组合(绑定)服务。从而,自主计算环境中的硬件和软件组合被称为“服务”,以强调在自主计算中,只是关于当前功能要求部署系统组件的事实。从而在构建(build)时,自主计算系统不是由固定不变的一组组件静态构成,而是根据需要动态地利用可用“服务”。
有时单一服务不能提供自主计算系统所需的功能性。在这种情况下,通过把许多服务组合在一起,能够实现所需的功能性。从而,本发明提供的目录服务不仅保存其它组件为定位和利用在目录中列举的服务所需的信息,而且还能够动态地构成满足客户机的请求的“元服务”。
例如,如果客户机请求目录提供目录中不存在的关于某一类型服务的细节(包括(但不限于)该服务的位置或身份),那么简单的目录服务会简单地答复不存在这样的服务。但是,改进的目录服务具有根据预编程的知识或者飞击式(on-the-fly)推论,导出(或者使另一软件实体导出)某一机制,借助所述机制,存在于该目录中的组件可被组合,以便获得与发出请求的客户机最初寻求的服务的功能性等效的功能性。
例如,考虑发出请求的服务(例如软件组件)向目录要求和能够提供1PB(帕字节)的直接存取存储空间的可用服务有关的信息的情形。在目录不包含关于任意这种服务的信息,但是包含和均能够提供100TB(太字节)的直接存取存储空间的10个服务相关的信息的情况下,目录服务能够向发出请求的服务返回一个响应,指示如果发出请求的服务组合所述10个服务,那么它能够获得最初请求的服务的等同物。
图4描述了根据本发明的一个优选实施例的目录和合成服务(composition service)的整体视图。请求服务400向目录服务401请求满足特定功能性要求的服务,目录服务401本身是一个服务(硬件或软件组件)。目录服务401咨询可用服务数据库406,查找提供必需功能性的服务(硬件或软件组件)的位置。如果不存在这样的单一服务,那么目录服务401可利用合成服务402(它也是一个硬件或软件组件)把单个的服务组合成“元服务”来提供所需的功能。
在优选实施例中,通过利用标准化目录服务方案,例如Web服务描述语言(WSDL)和系统,例如统一描述、发现和集成协议(UDDI),目录服务401可提供目录服务,诸如统一描述、发现和集成协议(UDDI)之类的系统允许程序查找提供特定服务的实体的位置,并且自动确定如何与这些服务通信以及如何与这些服务实施事务。WSDL是由代表性公司,例如国际商用机器公司,Ariba公司和Microsoft公司创建的万维网联盟正在讨论的建议标准。UDDI版本3是用于Web服务应用和服务的当前规范。UDDI的其它发展和变化将由结构化信息标准推动组织(OASIS)处理。
合成服务402将首先试图借助保存先前导出的服务组合的结果的历史数据库405来满足请求。如果不存在适用的先前导出的组合,那么合成逻辑403将被用于导出可用服务的新组合,所述新组合满足请求的功能要求。在一个优选实施例中,合成逻辑403是利用来自组合提示404的关于组件可组合性的可用服务数据库406信息中的组件信息,导出满足请求服务400的初始请求的功能要求的组件组合的软件。
图5是根据本发明的一个优选实施例,满足服务请求的进程的流程图。图5被分成两个部分。目录服务部分500包括涉及(例如由图4中的目录服务401)识别和定位单个服务的块,合成服务部分512包括涉及组合单个服务以形成元服务的块。本领域的普通技术人员会认识到这种块的划分可与不同的软件进程相符(例如,目录服务部分500中的块由一个软件进程执行,而合成服务512中的块由一个不同的软件进程执行),或者可不与不同的软件进程相符(例如,一个进程执行所有块,或者多个进程执行不同分组的块)。图5假定使用软件的两个独立组织单元(例如进程、线程、函数、子例程等)(即目录服务401和合成服务402),不过如上所述,在实践中,这样的划分不是必需的。
现在参见图5表示的进程流,该进程始于从客户机收到请求(即,服务或组件请求另外的功能)(方框501)。随后,确定可用服务(即可用服务数据库406)是否能够满足所述请求(方框502)。如果是(方框502:是),那么从可用服务数据库406取回恰当的响应(方框503),所述响应提供与恰当服务的使用相关的指令。该响应随后被返回给客户机,以允许客户机利用选择的服务(方框504)。
如果可用服务不能满足所述请求(方框502:否),那么所述请求被转发给合成服务402(方框505)。合成服务402接收该请求(方框506),并确定历史数据库405是否能够满足所述请求(方框507)。如果是(方框507:是),那么从历史数据库405返回一个响应(方框509)。如果否(方框507:否),那么使用合成逻辑403导出提供必需功能性的组合(方框510)。该新组合被输入历史数据库405(方框508),并返回一个响应(方框509)。目录服务401随后接收合成服务402的响应(方框511),并把该响应返回给客户机(方框504)。
如图4和5可看出,响应请求识别和/或组合服务的任务涉及从一个或多个数据库取回数据,并对数据应用逻辑(例如合成逻辑403)来导出恰当的响应。图6和7描述在本发明的一个优选实施例中,可用于保存目录、组合和历史信息的一种可能数据库方案。本领域的普通技术人员会认识到这里描述的方案的许多变化和替代也是适用的,而不会脱离本发明的范围和精神。下面的图中描述的数据库方案只是用于举例说明的目的。
数据库建模的E-R(实体-关系)方法提供数据库的概念设计的语义学(semantics)。就E-R方法来说,用实体、实体的属性和实体之间的关系来表示数据库信息,其中应用了下述定义。图6中图解说明了与每种定义对应的建模语义学。图6改编自Elmasri和Navathe,Fundamental of Database Systems,第3版,Addision Wesley(2000)第41-66页,该文献包含关于E-R图的另外材料,在此引为参考。
实体:实体是与之相关的信息被收集的主要对象。例如,在包含关于公司职员的信息的数据库中,实体可能是“雇员”。在E-R建模中,用方框表示实体。根据其与另一实体的依赖性,实体可被称为弱实体或强实体。强实体不依赖于另一实体,即,强实体的存在不要求另一实体的存在。如图6中所示,用单一的无阴影的方框表示。弱实体从另一实体得到其存在。例如,如果只有当其与某一雇员相关联时,工作时间表才能够存在,那么实体“工作时间表”从实体“雇员”得出其存在。如图6中所示,弱实体用同心方框表示。
属性:属性是给出实体的描述性质的标记(lable)(例如名称、颜色等)。存在两类属性。主属性(key attribute)区分实体的具体值(occurence)。例如在美国,社会保险号是区分个人的主属性。描述符属性仅仅描述实体具体值(例如性别、体重)。如图6中所示,在E-R建模中,用和它所属的实体(方框)连接在一起的椭圆表示属性。
在一些情况下,属性可具有多个值。例如,表示企业的实体可具有一个多取值属性“位置”。如果企业具有多个位置,那么属性“位置”将具有多个值。如图6中所示,多取值属性由同心椭圆表示。
关系:关系是实体具体值之间表现出的连通性。关系可以是一对一,一对多和多对多,某一实体参与某一关系可以是随意的或者强制的。例如,在包含关于某一公司的职员的信息的数据库中,雇员实体具体值之中的关系“配偶”是一对一的(如果一般认为一个雇员最多具有一个配偶)。此外,参与该关系是可以任意选择的,因为可能存在未婚雇员。作为另一例子,如果公司政策规定每个雇员确实具有一个经理,那么雇员实体具体值之间的关系“由谁管理”是多对一(许多雇员可能具有相同的经理),和强制的(每个雇员必须具有一个经理)。
如图6中所示,在E-R建模中,如果关系与一个或两个实体相关,那么用菱形表示该关系,如果关系与两个以上的实体相关,那么用n边形表示该关系。通过使用字符“1”和“N”来表示1∶1或1∶N基数比(cardinality ratio),或者通过使用明确的结构结束条件,指示关系中的基数比(一对一,一对多等),如图6中所示。当实体的的所有实例参与该关系时,用双线连接该实体方框和关系菱形框;否则,用单线连接该实体和该关系,如图6中所示。
图7是可应用于本发明的优选实施例的例证数据库方案的实体-关系(E-R)图。根据图4中描述的体系结构,图7中描述的方案被分成多个部分,即目录服务部分700,历史数据库部分702和组合提示部分704。本领域的普通技术人员会认识到这样的划分仅仅是概念上的划分,并不意图要求彼此不同的部分中信息的任何物理分离。
图7中的“基本”(base)实体是组件实体706,代表一个基础的“基本”服务,意味着不是其它组件(服务)的合成物的一个单个组件(服务)。每个组件可具有由多值属性“要求”708表示的多个要求,例如某些最小硬件要求或者对其它服务的依赖性。
在特定的应用(712)下,三元关系(ternary)“提供1(provides1)”710使每个组件(706)与一个或多个基本功能性(714)相关。三元关系“提供1”710表示当按照某一方式(712)使用时,特定组件(706)提供一个或多个基本功能性(714)。
三元关系“综合”(synthesize)716使一个或多个基本功能性(714)与一个组合方法(组合方法实体718)和一个对应的导出功能(导出功能实体720)相关。三元关系“综合”716表示可按照某一方式(718)组合一个或多个基本功能(714),获得导出功能(720)。例如,把图形文件从“BMP”(位图)文件转换成“TIFF”(标志图像文件格式)文件可以是一个基本功能性,把TIFF文件转换成“GIF”(图形交换格式)可以是另一基本功能性。从而,从BMP转换成GIF格式理应是可通过应用把BMP-TIFF转换服务的输出提供给TIFF-GIF转换服务的组合方法,而获得的导出功能性。应注意在图7中,三元关系“综合”716关系到功能性,而不是组件。例如,三元关系“综合”716会指出任意BMP-TIFF转换服务可和任意TIFF-GIF转换服务相结合,产生BMP-GIF转换元服务;在三元关系“综合”716中没有就应使用哪个特定的BMP-TIFF转换服务做出任何指示。
“可组合的”关系722使组合方法(718)与一个或多个组件(706)相联系。“可组合的”关系722表示可按照特定的组合方法(718)组合特定的一组组件。从而,就上述图形文件格式转换来说,“可组合的”关系722会保存通过把一个转换服务的输出馈送给另一转换服务的输入,可组合两个特定的转换服务的指示。从而,如果必须从基本功能性得到某一功能,那么可咨询“可组合的”关系722,以确保可按照获得所需导出功能性必需的方式,组合一组特定组件。
把一组基本功能性(714)组合成一个导出功能性(720)的组件(706)的组合是由“组合”实体724表示的组合,“组合”实体724通过关系722、728和730与实体706、714和720相关。“组合”实体724的“组合方案”属性726表示形成或使用该组合的信息。组合实体724提供保存已导出的组合的历史机构。例如,“组合方案”属性726可包含组合方法信息(例如,来自“组合方法”实体718),或者使用或形成某一组合的任意其它有关信息(例如,由单个组件形成组合的指令或者包含来自单个组件的代码的组合软件组件的副本)。
数据库方案,例如图7中描述的方案可利用数据库管理系统,例如关系数据库管理系统,面向对象的数据库管理系统,对象相关的数据库管理系统或演绎数据库管理系统来实现。在本发明的优选实施例中,本领域中可用的其它数据存储范例也是可能的。
根据本发明的一个优选实施例,使诸如图7中所示的数据库方案与控制逻辑(例如由图4中的目录服务401,合成服务402和合成逻辑403提供的控制逻辑)结合,以允许作为功能要求的补偿,选择和/或组合可用服务。图8以流程图的形式,描述了可在本发明的一个实施例中使用的控制逻辑的一个可能实施例。图8中描述的控制逻辑以图7中的数据库方案为基础,组合参考图4说明的目录服务401、合成服务402和合成逻辑403的功能。如同结合图4所述,本发明不要求严格分离目录服务401、合成服务402和合成逻辑403。和图7中的数据库方案的情况一样,图8中描述的进程只是起控制逻辑如何工作的一个例子的作用,并不是对本发明的限制。
图8中描述的进程开始于调用某一子例程寻找与规定的功能要求相联系的组件和约束条件(方框800)。方框800中调用的子例程是作为规定的每个功能要求的补偿,寻找和/或组合组件的递归子例程。当组件被包含到关于每个功能要求的解决方案中时,该子例程被递归调用,以便作为剩余要求的补偿,包含另外的组件和/或组合。当最初调用该子例程时,功能要求的完整列表和代表迄今为止的解决方案中的组件和约束条件的两个空列表可作为参数被传递给子例程。当该子例程被反复递归调用时,组合和约束条件被加入代表迄今的解决方案的两个列表中,并从功能要求列表中删除迄今的解决方案已满足的功能要求。
每次调用该子例程时,确定是否还存在没有解决的任何功能要求(方框802)。如果不存在任何另外的功能要求(方框802:否),那么迄今的解决方案应作为结果被返回(方框804)。
如果确实存在任意功能要求(方框802:是),那么确定是否已选择了用于包含在迄今的解决方案中的任意组件(方框806)。如果是(方框806:是),那么确定任意剩余要求是否能够被已选择的用于包含在该解决方案中的组件满足(方框808)。如果否(方框808:否)或者迄今没有选择任何组件,那么进程进行到方框812。
如果存在由已选择的组件满足的要求(方框808:是),那么使用信息(即,指令客户机如何使用所讨论的组合来实现所需功能性的信息)被加入迄今的解决方案中的约束条件列表中(方框810)。随后进行递归调用,以解决任何剩余的功能要求(方框811)。
在方框812中,确定是否存在可由还未被选择以便包含在迄今的解决方案中的单一组件满足的要求。如果是(方框812:是),那么把该组件加入迄今的解决方案中的组件列表中(方框814),关于该组件的使用信息被加入迄今的解决方案中(方框810),递归调用该子例程以处理任意剩余的功能要求(方框811)。
如果单一组件不能满足任何功能要求(方框812:否),那么确定功能的组合是否能够满足某一功能要求(方框816)。如果是(方框816:是),那么递归调用该子例程,找出满足为获得必需的导出功能要求所需的功能要求的一组组件(方框818)。随后检查递归子例程调用,查看是否可按照必需的方式组合子例程返回的组件(方框819)。如果否(方框819:否),那么该进程产生另外的子例程调用,寻找可组合的组件(方框818)。如果找到可恰当组合的一组组件(方框819:是),那么组件被加入迄今的解决方案中(方框814),规定如何组合和使用组件的使用信息被加入迄今的解决方案中(方框810),递归调用该子例程,以解决任何剩余的功能要求(方框811)。
一旦子例程返回解决方案,那么导出的组合被保存在历史数据库中(方框820)。本领域的普通技术人员会认识到可利用常规的数据库存储技术,或者通过用支持制表逻辑编程或自修改代码的语言(例如Prolog)修改程序逻辑,或者通过任意其它恰当的手段(并局限于简单数据库表示法)来实现历史数据库。
虽然图4-8中描述的优选实施例假定目录服务或组合目录和合成服务将返回包含允许客户机组合和使用服务(组件)的指令或其它信息的响应,不过许多其它体系结构也是可能的。图9描述了本发明的利用远程元服务提供者912的一个实施例。远程元服务提供者912允许从客户机远程执行服务的实际组合。具体地说,客户机900向目录服务904发出请求902,如果需要服务的组合,那么目录服务904把请求906转发给合成服务908。合成服务908随后把组合指令910转发给远程元服务提供者912。目录服务904随后应答(914,未示出)客户机900,通知客户机900远程元服务提供者912现在可以提供所请求的功能性。客户机900随后可利用远程元服务提供者912,好像它是提供所请求功能性的单个服务一样。但是,远程元服务提供者912实际上充当根据组合指令910,构成“元服务”的服务的组合的接口。
图10表示了本发明的另一结构变化,其中远程元服务提供者被合并到用于导出组合的合成服务中。客户机1000向目录服务1004发出请求1002,如果需要服务的组合,那么目录服务1004把请求10006转发给合成服务1008,如同图9中的元服务提供者912那样,合成服务1008把导出的元服务提供给客户机1000。目录服务1004随后应答(1010,示未出)客户机1000,通知客户机1000合成服务1008现在可以提供所请求的功能。关于图10中的体系结构的一个变化就是目录服务1004提供导出的元服务,而不是合成服务1008提供导出的元服务。
本发明的其它变化也是可能的。例如,可分布式地完成推导组合的进程,以致从同时工作的多个合成服务返回多个解决方案,并从返回的解决方案中选择最好的一个解决方案。另一种变化是向发出请求的客户机提供两个或更多的可能组合,可能还伴随将被用作选择标准的辅助信息,允许客户机选择提供的可能组合之一。可支持多个解决方案的另一种方式是合成服务(或目录服务)询问客户机是否有会帮助从多个候选者中选择一个导出组合的偏爱,以致合成服务(或者目录服务)随后能够提供最适合客户机的偏爱的一个或多个解决方案。例如,可询问客户机是更关心速度还是可靠性,并且可提供其中根据客户机的需要,处理速度/可靠性折衷的解决方案。
重要的是要注意到,尽管在全功能数据处理系统的上下文中描述了本发明,但是本领域的普通技术人员会认识到,本发明的进程能够以指令或其它功能描述材料的计算机可读介质的形式以及各种其它形式分布,并且无论实际用于进行所述分布的信号承载介质的具体类型如何,本发明都同样适用。计算机可读介质的例子包括可记录类型的介质,比如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM,以及传输类型的介质,比如数字和模拟通信链路,使用诸如射频和光波传输等传输形式的有线或者无线通信链路。计算机可读介质可以采用编码格式的形式,所述编码格式被解码以实际用于具体的数据处理系统。功能描述材料是把功能性给予机器的信息。功能描述材料包括(但不限于)计算机程序,指令,规则,事实,可计算的函数的定义,对象和数据结构。
上面出于举例说明的目的,描述了本发明,并不是要穷尽本发明或者将本发明限于所公开的形式。对于本领域普通技术人员来说,许多修改和变化是显而易见的。上述实施例的选择和描述是为了更好地解释本发明的原理及其实际应用,并使本领域的普通技术人员能够理解本发明的针对所能想到的具体用途进行各种适当修改的各种实施例。