首页> 中国专利> 对动态调用服务的执行结果进行渲染的方法、装置及系统

对动态调用服务的执行结果进行渲染的方法、装置及系统

摘要

本发明实施例公开了对动态调用服务的执行结果进行渲染的方法、装置及系统。根据本发明一个实施例的对动态调用服务的执行结果进行渲染的方法包括:确定所述执行结果所属的类;从模板库中查找所述执行结果所属的类对应的模板,其中所述模板库是预先根据所述本体中的各个类及其属性而生成的;以及利用所找到的模板,对所述执行结果进行渲染。通过本发明的实施例,能够减少系统中的模板的数量,便于模板的组织、管理和维护。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-17

    未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20150617 终止日期:20190131 申请日:20110131

    专利权的终止

  • 2015-06-17

    授权

    授权

  • 2012-09-26

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20110131

    实质审查的生效

  • 2012-08-01

    公开

    公开

说明书

技术领域

本发明一般地涉及执行结果渲染技术,尤其是对动态调用服务的执行结果进行渲染的方法、装置及系统。

背景技术

在互联网高速发展的今天,大量的Web服务或各自独立或互相协作地运行于互联网上,并提供包括基础设施、平台和软件在内的各种各样的服务。然而,Web服务技术主要被设计为用于机器与机器之间的交互,其输入和输出的类型都是通过XML schema来定义的,并不包含如何对输出进行显示的信息,也就无法将Web服务的执行结果友好而直接地展示给执行结果查看者。因此,对Web服务执行结果进行渲染是很必要的。

传统的方法可以用来解决静态调用的Web服务的执行结果的渲染问题。因为对于静态调用的Web服务来说,调用者在设计其调用客户端时就可以确定该Web服务,进而确定其输出类型,然后便可以通过硬编码的方式对该Web服务的执行结果进行渲染。而对于动态调用的Web服务来说,由于被调用的Web服务及其输出类型不可预知,所以不能通过硬编码的方式来进行渲染。

现有技术中,根据每个Web服务的XML schema为其输出类型配置模板,可以实现对动态调用的Web服务的执行结果进行渲染。这种方法很灵活,因为仅通过修改模板,而不用修改代码,便可改变对执行结果进行渲染的方式。然而,由于记录有每个Web服务的输出类型的XML schema是由各个服务提供者自定义的,而这些服务提供者不可能事先达成一个如何对相同类型进行定义的共识。因此,这便造成了很多在语法上不同但是在语义层面上却是重复的模板,这些模板彼此没有关系,不便于组织、管理和维护。

发明内容

有鉴于此,本发明实施例提供对动态调用服务的执行结果进行渲染的方法、装置及系统,能够减少系统中的模板的数量,便于模板的组织、管理和维护。

根据本发明实施例的一个方面,提供一种对动态调用服务的执行结果进行渲染的方法,其中所述执行结果是本体中的类的实例,包括:确定所述执行结果所属的类;从模板库中查找所述执行结果所属的类对应的模板,其中所述模板库是预先根据所述本体中的各个类及其属性而生成的;以及利用所找到的模板,对所述执行结果进行渲染。

根据本发明实施例的另一个方面,提供一种对动态调用服务的执行结果进行渲染的装置,其中所述执行结果是本体中的类的实例,所述装置包括:确定单元,用于确定所述执行结果所属的类;查找单元,用于从模板库中查找所述执行结果所属的类对应的模板,其中所述模板库是预先根据所述本体中的各个类及其属性而生成的;以及第一渲染单元,用于利用所找到的模板,对所述执行结果进行渲染。

根据本发明实施例的再一个方面,提供一种对动态调用服务的执行结果进行渲染的系统,包括:模板库,用于保存根据本体中的各个类及其属性而生成的模板;管理模块,包括查找子模块,用于接收到查找指定类对应的模板的请求时,返回该类对应的模板;以及本发明实施例所述的对动态调用服务的执行结果进行渲染的装置。

另外,根据本发明的另一方面,还提供了一种存储介质。所述存储介质包括机器可读的程序代码,当在信息处理设备上执行所述程序代码时,所述程序代码使得所述信息处理设备执行根据本发明的上述对动态调用服务的执行结果进行渲染的方法。

此外,根据本发明的再一方面,还提供了一种程序产品。所述程序产品包括机器可执行的指令,当在信息处理设备上执行所述指令时,所述指令使得所述信息处理设备执行根据本发明的上述对动态调用服务的执行结果进行渲染的方法。

根据本发明实施例的上述方法,可以根据本体中的类进行模板的定义,并利用这些本体中的类对应的模板对动态调用服务的执行结果进行渲染,也即,各个动态调用服务的执行结果都可以使用本体中的类对应的模板进行渲染。换言之,不需要分别为各个动态调用服务的执行结果分别生成各自的模板,因此,有利于减少系统中的模板的数量,便于模板的组织、管理和维护。

在下面的说明书部分中给出本发明实施例的其他方面,其中,详细说明用于充分地公开本发明实施例的优选实施例,而不对其施加限定。

附图说明

下面结合具体的实施例,并参照附图,对本发明实施例的上述和其它目的和优点做进一步的描述。在附图中,相同的或对应的技术特征或部件将采用相同或对应的附图标记来表示。

图1是本体结构示意图;

图2是本发明实施例提供的方法的流程图;

图3是本发明实施例提供的方法中渲染结果示意图;

图4是本发明实施例提供的方法中另一渲染结果示意图;

图5是本发明实施例提供的第一装置的示意图;

图6是本发明实施例提供的第二装置的示意图;

图7是本发明实施例提供的第三装置的示意图;

图8是本发明实施例提供的第四装置的示意图;

图9是本发明实施例提供的系统的示意图;

图10是本发明实施例提供的另一系统的示意图;

图11是示出作为本发明的实施例中所采用的信息处理设备的个人计算机的示例性结构的框图。

具体实施方式

下面参照附图来说明本发明实施例的实施例。

在本发明实施例中,为了对动态调用服务的执行结果进行渲染,首先需要生成模板,这种模板是根据本体中的类生成的。为了便于理解,下面首先对本体的概念进行简单地介绍。

本体可以看作是形式化定义词语关系的规范化文件,通常由各个领域的专家维护,在每个领域都具有一个标准的分类体系,在该分类体系下,各个类别能够涵盖整个领域,同时又不重复。在本发明实施例中,本体可以是某个领域本体或者由多个领域本体组合产生的通用本体(或称核心本体)。

本体中的每一个类(Class)代表一种数据类型,每个数据类型还有自己的属性,包括数据属性(DataProperty)或对象属性(ObjectProperty),同时对象属性也描述了数据类型之间的关系。

例如,图1所示为一个本体的示意图,其中,RootType是这个本体的根节点类。共有三个叶子节点类,分别是Item、Rss和Search;ClassHasItem是Rss和Search共同的父类,它具有一个或多个hasItem对象属性(ObjectProperty)。hasItem属性的值域是Item。Item和Rss都有以下值域为http://www.w3.org/2001/XMLSchema#string的数据属性(DataProperty):hasTitle、hasLink、hasDescription、hasCategory、hasPubDate。Search具有一个值域为http://www.w3.org/2001/XMLSchema#string的数据属性:hasKeyword。这个本体的命名空间(namespace)为http://www.example.com。每一个类或者属性都有各自的URL,用于唯一标识该类或属性。其中,类或属性的URL都可以是以”namespace#name”形式表示的,比如Rss这个类的URL为http://www.example.com#Rss。

也就是说,本体中具有标准的数据类型(例如Item、Search、Rss等)及其之间的关系,每种数据类型具有自己的URL以及各自的属性,同时,每个属性也分别具有自己的URL。

而对于实际的动态调用服务的执行结果而言,是本体中的某个类的实例。也即,虽然动态调用服务的输出类型是由服务提供者自定义的,但是,无论服务提供者在创建动态调用服务时,如何定义数据类型,其执行结果总会是某个本体中某个类的实例。因此,在本发明实施例中,就是要利用依据本体中的类创建的模板,对各个动态调用服务的执行结果进行渲染。为此,首先需要创建模板,下面对创建模板的过程进行介绍。

在本发明实施例中,模板是根据本体中描述的数据类型及其属性创建的,它可以采用HTML等语言来描述,并且与本体中描述的数据类型一一对应,也就是说,本体中有多少个数据类型,针对该本体就可以创建多少个模板,可以将这些模板进行保存,生成针对该本体的模板库。并且,在保存时,还可以保存数据类型的URL及其模板之间的对应关系,这样,根据数据类型的URL可以唯一找到该数据类型对应的模板。

对于某数据类型而言,其模板就是要描述出,该数据类型的各个属性的值出现的位置。在模板中,由于各个属性还没有具体的取值,因此,可以由各个属性的URL(为方便描述,本发明实施例就以此为例进行介绍)来代替。在渲染时,相当于是将执行结果中各个属性的值,替换对应属性的URL即可。

其中,如前文所述,一个数据类型可能具有数据属性,还可能具有对象属性,在生成某数据类型的模板时,该数据类型的数据属性的URL必须出现在模板中,否则,该属性的值将无法出现在最终的渲染结果中。而该数据类型的对象属性则不必在模板中进行显示声明,如果出现在模板中,则该对象属性的值将会出现在该属性的URL在模板中的位置,否则,该对象属性的值将会依次连接到该对象属性部分所属实例的渲染结果的末端。

生成的模板可以存储于模板库的一张表中,该表可以含有两个字段,第一个字段用于存储数据类型的URL,第二个字段用于存储模板的内容。如前文所述,数据类型的URL可以以”namespace#name”形式表示,存储URL的字段可以做为该表的主键用来唯一查找指定数据类型的模板。假设在图1所示的本体中,模板库中保存了表1所示的各个数据类型的模板。

表1

其中,“http://www.example.com#Item”是Item这一数据类型的URL,对应的模板是该数据类型的模板。如前文所述,该数据类型具有数据属性:hasTitle、hasLink、hasDescription、hasCategory、hasPubDate,从表1中可以看出,该数据类型的模板中,这五个数据属性的URL都出现了,其中,“http://www.example.com#hasLink”是数据属性hasLink的URL,“http://www.example.com#hasTitle”是数据属性hasTitle的URL,“http://www.example.com#hasDescription”是数据属性hasDescription的URL,“http://www.example.com#hasCategory &nbsp”是数据属性hasCategory的URL,“http://www.example.com#hasPubDate”是数据属性hasPubDate的URL。可见,在该模板中,规定了各个数据属性的值按照hasLink、hasTitle、hasDescription、hasCategory、hasPubDate的顺序依次显示在渲染结果中。这样,在对某执行结果进行渲染时,如果该执行结果是Item类的实例,就可以利用该模板对该执行结果进行渲染,渲染时,直接用执行结果中各个属性的值替换对应属性的URL即可。表1中的其他部分都是与以上所述类似的,因此,这里不再赘述。

需要说明的是,在实际应用中,由于模板是根据本体中的数据类型生成的,并且与本体中的数据类型一一对应,因此,可以设计一个管理接口来保证模板与数据类型之间的一致性,避免重复创建模板等问题。具体的,在管理员创建模板时,可以输入某数据类型的URL,管理接口首先检查该URL对应的模板是否已经存在于模板库中。如果已经存在,则终止创建操作,以避免重复创建;否则,管理接口根据该URL从数据类型本体库中查找该URL所代表的数据类型(Class)。如果该数据类型类不存在,则证明该数据类型不是该本体中的类,并终止创建操作,否则,证明该数据类型数本体中的类,并且尚未创建模板,因此可以返回一个包含了该类所有数据属性和对象属性的URL的原始模板至管理员的编辑窗口。管理员在接收到这个原始模板后,通过加入HTML标签、调整属性URL的位置来修改原始模板,最后将修改后的模板保存到模板库中。

也就是说,由于已经本体中的数据类型及其对应的属性都是确定的,因此,在接收到管理员的创建模板请求时,在满足创建条件的情况下,就可以将该数据类型的各个属性的URL以一个原始模板的形式返回给管理员,例如,对于表1中所示的Item的模板,原始模板可能如下所示:

http://www.example.com#hasLink

http://www.example.com#hasTitle

http://www.example.com#hasDescription

http://www.example.com#hasPubDate

http://www.example.com#hasCategory  

管理员在此基础上就可以添加上“a href=”、“</a>”、“<br>”等HTML标签,并调整各个URL的顺序,例如,将http://www.example.com#hasTitle调整到http://www.example.com#hasLink之前等等,最终得到表1所示的Item的模板,并进行保存即可。

此外,上述管理接口还可以用于对某数据类型的模板进行查找、修改或删除操作。例如,在查找过程中,当输入本体中的一个数据类型的URL时,可以返回模板库中该URL相对应的模板的内容。在修改过程中,可以根据管理员输入的URL,首先检查该URL对应的模板是否已经存在于模板库中。如果不存在,那么终止修改操作,否则,管理接口返回该URL所对应的模板至管理员的编辑窗口。管理员在接收到这个模板后,通过加入或删除HTML标签或属性的URL,或者调整它们的顺序来修改该模板,最后将修改后的模板保存到模板库中,并覆盖原有的模板。删除操作的输入为本体中的一个数据类型的URL。收到删除请求后,管理接口可以向管理员进行确认。如果管理员确认执行删除操作,那么执行对该URL对应的模板的删除操作,还可以将是否删除成功的消息返回给管理员。

具体在对执行结果进行渲染时,渲染引擎就可以调用模板库中的模板对执行结果进行渲染,具体的,参见图2,本发明实施例提供的对动态调用服务的执行结果进行渲染的方法可以包括:

S101:确定所述执行结果所属的类。

如前文所述,动态调用服务的执行结果总是某个类的实例,而该执行结果是哪个类的实例,该执行结果就属于哪个类。例如,对于某执行结果,判断出其是Search类的实例,则该执行结果所属的类就是该Search类。

具体实现时,可以通过对执行结果进行分析,来确定执行结果所属的类。例如,某执行结果为:

<j.0:hasDescription>笫15章三维编辑、创建复杂实体模型及渲染本章要点本章介绍AutoCAD 2009的...选择对象:(选择对应的实体对象)选择对象:(也可以继续选择对象)执行结果:</j.0:hasDescription>

<j.0:hasDescription>在将CHC/CHC++引入到OGRE的问题中,优先级比较高的就是必须要改变渲染流程,因为我们要在硬件没有返回遮挡裁减查询结果的时候执行一些渲染操作,而且也要保证以</j.0:hasDescription>

<j.0:hasDescription>Zero平台提供了两种方式来将执行结果渲染到客户端。一种是直接采用OutputStream或PrintWriter将结果写到HTTP response中,比如:</j.0:hasDescription>

<j.0:hasTitle>用Ruby脚本在Project_Zero平台上构建Restful应用-豆豆网</j.0:hasTitle>

<j.0:hasDescription>本文将从网页渲染方面执行比较评测。首先测试在Google图片搜索页面执行一次全新的图片搜索(用比较冷门的词汇),然后记录结果页面上的所有图片加载完毕所须要的</j.0:hasDescription>

<j.0:hasEnclosure></j.0:hasEnclosure>

<j.0:hasGuid></j.0:hasGuid>

<j.0:hasTitle>IE8等多款最新阅读器网页渲染比较评测-网页浏览-网络技术-...</j.0:hasTitle>

<j.0:hasTitle>全面提升Web 2.0应用程序的性能,第3部分:浏览器渲染时间...</j.0:hasTitle>

<j.0:hasComments></j.0:hasComments>

<j.0:hasSource></j.0:hasSource>

<j.0:hasDescription>本文将继续介绍Web 2.0应用性能分析过程中对于页面渲染性能分析的方法学和工具,并结合IBM MashupsCenter产品,介绍如何对一个在浏览器端进行渲染的页面做性能

其中,可以根据执行结果中的标签,来识别该执行结果所属的类。例如,从以上执行结果的顶层<j.0:Search>可以看出,该执行结果所述的类是Search类。

S202:从模板库中查找所述执行结果所属的类对应的模板。

其中,模板库就是前文所述预先根据本体中的各个类及其属性而生成的。具体在查找执行结果所属的类对应的模板时,可以根据执行结果所属的类的URL,从模板库中查找该类的模板。例如,在上述例子中,确定出执行结果所属的类为Search类,则可以根据该类的URL“http://www.example.com#Search”查找该类的模板。

假设该Search类的模板为:

<b>Keyword</b>:

http://10.167.174.139:8080/2010/owl-s/1.1/service/DataType.owl#hasKeyword

根据上述模板,在渲染时,就可以将该hasKeyword这个数据属性的URL替换为执行结果中该数据属性的值。也就是说,如果执行结果中存在实例的数据属性,则直接利用执行结果中该数据属性的值替换模板中该数据属性的URL即可。

具体应用中,同样可以根据执行结果中的标签,确定各属性的值。例如,在执行结果中,两个<j.0:hasKeyword>之间出现的内容,就是hasKeyword这一数据属性的值,因此,在该例子中,该数据属性的值为“执行结果渲染”,然后用该值去替换模板中hasKeyword的URL,得到的渲染结果中会出现:“Keyword:执行结果渲染”。

需要说明的是,在实际应用中,执行结果中还可能存在实例的对象属性。对于这种情况,则可以将对象属性的值转换为另一实例,确定该另一实例所属的类,利用该类对应的模板,对执行结果中实例的对象属性部分进行渲染。

例如,从前述例子可以看出,执行结果中,Search这个对象除了具有一个hasKeyword属性以外,还具有多个对象属性:hasItem,根据执行结果中的标签可以确定出,该对象属性的值是Item,而该值并不是一个具体的值,而是Item类的一个实例。因此,在对对象属性这部分执行结果进行渲染时,就可以首先将该对应属性的值转换为另一个实例,并确定该另一个实例所属的类,在该例子中,该另一个实例所属的类就是Item类。接下来,就可以根据该Item类的URL,在模板库中找到该Item类对应的模板。

其中,在前述执行结果中,第一个hasItem对象属性部分,转换为Item类的实例之后,该Item对象具有以下数据属性的值:

两个<j.0:hasTitle>之间显示的是hasTitle这一数据属性的值,在该执行结果中为http://www.tup.tsinghua.edu.cn/Resource/tsyz/028213-01.txt。

两个<j.0:hasDescriptioh>之间显示的是hasDescription这一数据属性的值,在该执行结果中为“第15章三维编辑、创建复杂实体模型及渲染本章要点本章介绍AutocAD 2009的...选择对象:(选择对应的实体对象')选择对象:(也可以继续选择对象)执行结果:”。

两个<j.0:hasPubDate>之间显示的为hasPubDate这一数据属性的值,在该执行结果中为“2010-11-10”。

两个<j.0:hasLink>之间显示的为hasLink这一数据属性的值,在该执行结果中为http://www.tup.tsinghua.edu.cn/Resource/tsyz/028213-01.txt。

用各个数据属性的值替换模板中的对应属性的URL之后,就可以得到针对这部分执行结果的渲染结果。假设Item类对应的模板为:

则具体的渲染结果如图3所示。

需要说明的是,在该例子中,Search类对应的模板中仅对数据属性hasKeyword进行了声明,对于对象属性hasItem并没有进行显示声明,因此,在图3所示的渲染结果中,针对该对象属性的渲染结果将依次连接到对数据属性部分的渲染结果的末端。

为了更好地理解本发明实施例所述将对象属性进行了显式声明,及未进行显式声明的区别,下面通过另一个具体的例子进行对比介绍。

仍以前述执行结果为例,先假设模板库中search类对应的模板为:

http://10.167.174.139:8080/2010/owl-s/1.1/service/DataType.owl#hasItem

http://10.167.174.139:8080/2010/owl-s/1.1/service/DataType.owl#hasItem<b>Keyword</b>:

http://10.167.174.139:8080/2010/owl-s/1.1/serVice/DataType.owl#hasKeyword

可以看出,在该模板中不仅对数据属性hasKeyword进行了显式声明,同时,还对对象属性hasItem进行了显式声明,并且只声明了两个对象属性,并且这两个对象属性出现在数据属性的前面。

这样,在对前述执行结果中的对象属性部分进行渲染时,就会将前两个对象属性的渲染结果显示在数据属性部分的渲染结果之前,其他的对象属性的渲染结果,再依次连接到数据属性渲染结果的末端。假设Item类对应的模板仍如前文所示,则具体的渲染结果可以如图4所示。

从图3及图4中可以看出,根据模板中是否对对象属性进行了显式声明的不同,最终的渲染结果会有所不同。在图3中,由于Search类对应的模板中未对对象属性hasItem进行显式声明,因此,执行结果中各个对象属性部分的渲染结果都出现在hasKeyword的渲染结果的末端;而在图4中,由于Search类对应的模板中显式声明了两个对象属性hasItem,因此,执行结果中前两个hasItem对象属性部分的渲染结果显示在了hasKeyw6rd的渲染结果之前,其余HasItem对象属性部分的渲染结果出现在hasKeyword的渲染结果的末端。

在实际应用中,当对某执行结果进行渲染时,可能存在执行结果所属的类的模板不存在的情况。例如,当渲染引擎接收到一个执行结果时,首先确定出该执行结果所属的类是C1,然后就可以根据该类的URL去模板库中查找该类对应的模板,但是查找的结果可能是该类对应的模板不存在(该模板可能是尚未创建,或者已经被删除)。针对这种情况,本发明实施例可以查找与该执行结果所属的类最相似的类,假设为C2,利用该C2类对应的模板,对该执行结果进行渲染。如果C2的模板也不存在的话,返回一个空字符串,表示本次渲染失败。

例如,如果Search类的模板不存在的话,则RSS类的模板就可以被用来替代其进行渲染,因为根据计算,它与Search类之间的距离最短。其中,关于计算两个类之间的距离或相似度的方法属于已有技术,并且并不属于本发明的重点,因此,这里不再赘述。

总之,在本发明实施例中,对于当接收到一个执行结果时,假设该执行结果为实例I1,渲染引擎首先查找I1所属的类C1和C1的模板。如果C1的模板不存在,那么查找与C1距离最短(最相似)的一个类C2以及C2的模板。如果C2的模板也不存在的话,返回一个空字符串,表示本次渲染失败。否则,利用查找到的模板对I1进行渲染。对于I1的每一个属性,如果是一个数据属性,那么将模版中所有该属性的URL替换成该属性的值;如果是一个对象属性,那么将该属性的值转换成一个另一个实例I2,然后递归调用渲染引擎对I2进行渲染。如果该对象属性的URL出现在I1所属的类对应的模版中,那么将该模版中所有该对象属性的URL替换成I2的渲染结果,否则将I2的渲染结果连接到I1的渲染结果的末端。最后,将此I1的渲染结果以<div>标签封装,返回给服务使用者的浏览器进行显示即可。

前文所述对本发明实施例提供的对动态调用服务的执行结果进行渲染的方法进行了详细地介绍。通过以上介绍可以看出:可以根据本体中的类进行模板的定义,并利用这些本体中的类对应的模板对动态调用服务的执行结果进行渲染,也即,各个动态调用服务的执行结果都可以使用本体中的类对应的模板进行渲染。换言之,不需要分别为各个动态调用服务的执行结果分别生成各自的模板,因此,有利于减少系统中的模板的数量,便于模板的组织、管理和维护。

另外需要说明的是:本发明实施例所描述的动态调用服务是指任意服务提供者创建的动态调用服务。其中,服务提供者在创建动态调用服务时,可以利用本体中的数据类型及其属性对输出数据进行定义,即直接将动态调用服务创建为OWL-S(Ontology Web Language for Services,服务的本体语言)服务,这样,执行结果中出现的数据类型及其属性的名称就会是与本体中的定义相同的。

当然,为了体现服务提供者在创建服务时的灵活性,也可以允许服务提供者采用自定义的方式定义数据类型及其属性的名称,即直接创建为WSDL(Web Services Description Language,Web服务描述语言)服务。但是,显然对于这种情况,如果不进行特殊处理,则执行结果中出现的数据类型及其属性的名称将是与服务提供者自定义的相同。这样,在利用本发明实施例提供的方法进行渲染时,就可能由于标签名称的不同,造成无法识别具体的标签,进而造成渲染失败。

为此,针对上述情况,在本发明实施例中,还可以提供一个OWL-S服务,该OWL-S文件中带有XSLT(Extensible Stylesheet LanguageTransformations,扩展样式表转换语言)代码。在调用某动态调用服务时,就可以首先调用该OWL-S服务,OWL-S服务再调用服务提供者提供的WSDL服务;WSDL服务向OWL-S服务返回的是XSD文件,OWL-S服务在接收到XSD文件,再利用XSLT代码将该XSD文件进行转换,使其与本体相关联,这样,OWL-S服务最终返回的就是一个本体中的类的实例。

也就是说,在本发明实施例中,服务提供者要么直接将动态调用服务创建为OWL-S服务,要么创建为WSDL服务,对于后者,本发明实施例还需要将动态调用服务执行结果实例的类型名称及属性名称,转换为所述本体库中描述的类名称及其属性名称,再根据转换得到的类名称,确定该执行结果实例所属的类,并利用该类对应的模板对该执行结果进行渲染。

与本发明实施例提供的对动态调用服务的执行结果进行渲染的方法相对应,本发明实施例还提供了一种对动态调用服务的执行结果进行渲染的装置,参见图5,该装置包括以下单元:

确定单元501,用于确定所述执行结果所属的类。

查找单元502,用于从模板库中查找所述执行结果所属的类对应的模板,其中所述模板库是预先根据所述本体中的各个类及其属性而生成的;以及

第一渲染单元503,用于利用所找到的模板,对所述执行结果进行渲染。

其中模板的内容部分保存有类的各个数据属性的统一资源标识符URL,参见图6,第一渲染单元503进一步包括:

第一替换子单元5031,用于如果执行结果中存在实例的数据属性,则利用所述执行结果中该数据属性的值替换所述模板中该数据属性的URL。

如果执行结果中存在实例的对象属性,则第一渲染单元503进一步包括:

实例转换子单元5032,用于如果执行结果中存在实例的对象属性,则将所述对象属性的值转换为另一实例;对象属性渲染子单元5033,用于确定该另一实例所属的类,利用该类对应的模板,对所述执行结果中实例的对象属性部分进行渲染。

其中,参见图7,对象属性渲染子单元5033可以包括:

第二替换子单元50331,用于如果所述对象属性的URL出现在所述执行结果所属的类的模板中,则利用所述对象属性部分的渲染结果,替换该模板中该对象属性的URL;

连接显示子单元50332,用于如果所述对象属性的URL没有出现在所述执行结果所属的类的模板中,将所述对象属性部分的渲染结果依次连接到所述对象属性所属实例的渲染结果的末端。

参见图8,该装置还包括:

相似查找单元504,用于如果所述执行结果所属的类的模板不存在,查找与所述执行结果所属的类最相似的类;第二渲染单元505,用于利用所述最相似的类对应的模板,对所述执行结果进行渲染。

通过本发明实施例提供的装置,可以根据本体中的类进行模板的定义,并利用这些本体中的类对应的模板对动态调用服务的执行结果进行渲染,也即,各个动态调用服务的执行结果都可以使用本体中的类对应的模板进行渲染。换言之,不需要分别为各个动态调用服务的执行结果分别生成各自的模板,因此,有利于减少系统中的模板的数量,便于模板的组织、管理和维护。

与本发明实施例提供的对动态调用服务的执行结果进行渲染的方法及装置相对应,本发明实施例还提供了一种对动态调用服务的执行结果进行渲染的系统,参见图9,该系统包括:

模板库901,用于保存根据本体中的各个类及其属性而生成的模板。

管理模块902,包括查找子模块9021,用于接收到查找指定类对应的模板的请求时,返回该类对应的模板。

前文所描述的对动态调用服务的执行结果进行渲染的装置903。

其中,参见图10,管理模块902还可以包括:

创建子模块9022,用于在接收到创建指定类对应的模板的请求时,如果所述模板库中不存在所述指定类对应的模板,并且所述指定类属于本体中的类,则返回包含本体中该类的所有属性的原始模板;当用户对所述原始模板进行修改并发出保存指令后,将修改后的模板保存为该类对应的模板。

此外,为了便于对模板库中的模板进行修改,管理模块902还可以包括:

修改子模块9023,用于在接收到修改指定类对应的模板的请求时,返回该类对应的模板;当用户对该类对应的模板进行修改并发出保存指令后,将修改后的模板保存为该类对应的模板。

为了便于删除已经创建的模板,管理模块902还可以包括:

删除子模块9024,用于在接收到删除某类对应的模板的请求时,将该类对应的模板删除。

通过本发明实施例提供的系统,可以根据本体中的类进行模板的定义,并利用这些本体中的类对应的模板对动态调用服务的执行结果进行渲染,也即,各个动态调用服务的执行结果都可以使用本体中的类对应的模板进行渲染。换言之,不需要分别为各个动态调用服务的执行结果分别生成各自的模板,因此,有利于减少系统中的模板的数量,便于模板的组织、管理和维护。

另外,还应该指出的是,上述系列处理和装置也可以通过软件和/或固件实现。在通过软件和/或固件实现的情况下,从存储介质或网络向具有专用硬件结构的计算机,例如图11所示的通用个人计算机1100安装构成该软件的程序,该计算机在安装有各种程序时,能够执行各种功能等等。

在图11中,中央处理单元(CPU)1101根据只读存储器(ROM)1102中存储的程序或从存储部分1108加载到随机存取存储器(RAM)1103的程序执行各种处理。在RAM 1103中,也根据需要存储当CPU 1101执行各种处理等等时所需的数据。

CPU 1101、ROM 1102和RAM 1103经由总线1104彼此连接。输入/输出接口1105也连接到总线1104。

下述部件连接到输入/输出接口1105:输入部分1106,包括键盘、鼠标等等;输出部分1107,包括显示器,比如阴极射线管(CRT)、液晶显示器(LCD)等等,和扬声器等等;存储部分1108,包括硬盘等等;和通信部分1109,包括网络接口卡比如LAN卡、调制解调器等等。通信部分1109经由网络比如因特网执行通信处理。

根据需要,驱动器1110也连接到输入/输出接口1105。可拆卸介质1111比如磁盘、光盘、磁光盘、半导体存储器等等根据需要被安装在驱动器1110上,使得从中读出的计算机程序根据需要被安装到存储部分1108中。

在通过软件实现上述系列处理的情况下,从网络比如因特网或存储介质比如可拆卸介质1111安装构成软件的程序。

本领域的技术人员应当理解,这种存储介质不局限于图11所示的其中存储有程序、与设备相分离地分发以向用户提供程序的可拆卸介质1111。可拆卸介质1111的例子包含磁盘(包含软盘(注册商标))、光盘(包含光盘只读存储器(CD-ROM)和数字通用盘(DVD))、磁光盘(包含迷你盘(MD)(注册商标))和半导体存储器。或者,存储介质可以是ROM 1102、存储部分1108中包含的硬盘等等,其中存有程序,并且与包含它们的设备一起被分发给用户。

还需要指出的是,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。

虽然已经详细说明了本发明及其优点,但是应当理解在不脱离由所附的权利要求所限定的本发明的精神和范围的情况下可以进行各种改变、替代和变换。而且,本发明实施例的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

关于包括以上实施例的实施方式,还公开下述附记:

附记1.一种对动态调用服务的执行结果进行渲染的方法,其中所述执行结果是本体中的类的实例,所述方法包括:

确定所述执行结果所属的类;

从模板库中查找所述执行结果所属的类对应的模板,其中所述模板库是预先根据所述本体中的各个类及其属性而生成的;以及

利用所找到的模板,对所述执行结果进行渲染。

附记2.根据附记1所述的的方法,其中模板的内容部分保存有类的各个数据属性的统一资源标识符URL,所述对所述执行结果进行渲染进一步包括:

如果执行结果中存在实例的数据属性,则利用所述执行结果中该数据属性的值替换所述模板中该数据属性的URL。

附记3.根据附记1所述的方法,其中所述对所述执行结果进行渲染进一步包括:

如果执行结果中存在实例的对象属性,则将所述对象属性的值转换为另一实例,确定该另一实例所属的类,利用该类对应的模板,对所述执行结果中实例的对象属性部分进行渲染。

附记4.根据附记3所述的方法,其中对所述执行结果中实例的对象属性部分进行渲染进一步包括:

如果所述对象属性的URL出现在所述执行结果所属的类的模板中,则利用所述对象属性部分的渲染结果,替换该模板中该对象属性的URL;否则,将所述对象属性部分的渲染结果依次连接到所述对象属性部分所属实例的渲染结果的末端。

附记5.根据附记1至4任一项所述的方法,其中如果所述执行结果所属的类的模板不存在,所述方法还包括:

查找与所述执行结果所属的类最相似的类;

利用所述最相似的类对应的模板,对所述执行结果进行渲染。

附记6.根据附记1至4任一项所述的方法,其中各个类对应的模板与各个类的URL一一对应,以及所述从模板库中查找所述执行结果实例所属的类对应的模板进一步包括:

根据所述执行结果所属的类的URL,从所述模板库中查找该类的模板。

附记7.一种对动态调用服务的执行结果进行渲染的装置,其中所述执行结果是本体中的类的实例,所述装置包括:

确定单元,用于确定所述执行结果所属的类;

查找单元,用于从模板库中查找所述执行结果所属的类对应的模板,其中所述模板库是预先根据所述本体中的各个类及其属性而生成的;以及

第一渲染单元,用于利用所找到的模板,对所述执行结果进行渲染。

附记8.根据附记7所述的装置,其中模板的内容部分保存有类的各个数据属性的统一资源标识符URL,所述第一渲染单元进一步包括:

第一替换子单元,用于如果执行结果中存在实例的数据属性,则利用所述执行结果中该数据属性的值替换所述模板中该数据属性的URL。

附记9.根据附记7所述的装置,其中所述第一渲染单元进一步包括:

实例转换子单元,用于如果执行结果中存在实例的对象属性,则将所述对象属性的值转换为另一实例;

对象属性渲染子单元,用于确定该另一实例所属的类,利用该类对应的模板,对所述执行结果中实例的对象属性部分进行渲染。

附记10.根据附记9所述的装置,其中所述对象属性渲染子单元包括:

第二替换子单元,用于如果所述对象属性的URL出现在所述执行结果所属的类的模板中,则利用所述对象属性部分的渲染结果,替换该模板中该对象属性的URL;

连接显示子单元,用于如果所述对象属性的URL没有出现在所述执行结果所属的类的模板中,将所述对象属性部分的渲染结果依次连接到所述对象属性所属实例的渲染结果的末端。

附记11.根据附记7至10任一项所述的装置,还包括:

相似查找单元,用于如果所述执行结果所属的类的模板不存在,查找与所述执行结果所属的类最相似的类;

第二渲染单元,用于利用所述最相似的类对应的模板,对所述执行结果进行渲染。

附记12.根据附记7至10任一项所述的装置,其中各个类对应的模板与各个类的URL一一对应,所述查找单元根据所述执行结果所属的类的URL,从所述模板库中查找该类的模板。

附记13.一种对动态调用服务的执行结果进行渲染的系统,包括:

模板库,用于保存根据本体中的各个类及其属性而生成的模板;

管理模块,包括查找子模块,用于接收到查找指定类对应的模板的请求时,返回该类对应的模板;以及

附记7至12任一项所述的对动态调用服务的执行结果进行渲染的装置。

附记14.根据附记13所述的系统,所述管理模块还包括:

创建子模块,用于在接收到创建指定类对应的模板的请求时,如果所述模板库中不存在所述指定类对应的模板,并且所述指定类属于本体中的类,则返回包含本体中该类的所有属性的原始模板;当用户对所述原始模板进行修改并发出保存指令后,将修改后的模板保存为该类对应的模板。

附记15.根据附记13所述的系统,所述管理模块还包括:

修改子模块,用于在接收到修改指定类对应的模板的请求时,返回该类对应的模板;当用户对该类对应的模板进行修改并发出保存指令后,将修改后的模板保存为该类对应的模板。

附记16.根据附记13所述的系统,所述管理模块还包括:

删除子模块,用于在接收到删除某类对应的模板的请求时,将该类对应的模板删除。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号