一种生成widget的方法及装置转让专利

申请号 : CN200910161314.9

文献号 : CN101957749A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张杰符海芳

申请人 : 华为技术有限公司

摘要 :

本发明公开了一种生成widget的方法及装置,所述方法包括:获得所述源widget中的待重用元素的标识信息;生成所述待重用元素之间的逻辑关系;根据所述待重用元素的标识信息及所述逻辑关系,生成包括所述待重用元素的标识信息及所述逻辑关系的widget。本发明还公开了一种运行widget的方法及widget引擎。通过本发明实施例,能够通过已有widget的组合重用来生成新的widget,使得开发过程中无须编写代码,减少了widget开发的工作量,有利于widget技术的发展。

权利要求 :

1.一种生成widget的方法,其特征在于,包括:获得源widget中的待重用元素的标识信息;

生成所述待重用元素之间的逻辑关系;

根据所述待重用元素的标识信息及所述逻辑关系,生成包括所述待重用元素的标识信息及所述逻辑关系的widget。

2.根据权利要求1所述的方法,其特征在于,所述获得源widget中的待重用元素的标识信息包括:接收用户在所述源widget中选取元素的指令,所述指令中显示的所述用户选取的元素的标识信息为所述待重用元素的标识信息。

3.根据权利要求1所述的方法,其特征在于,所述生成所述待重用元素之间的逻辑关系之前还包括:接收用户设定所述待重用元素之间逻辑关系的指令,所述指令中显示的所述用户设定的逻辑关系为所述待重用信息之间的逻辑关系。

4.根据权利要求1所述的方法,其特征在于,所述源widget中的待重用元素包括所述源widget自身,所述待重用元素的标识信息包括:系统分配的所述源widget的标识符,或者,所述源widget的保存路径。

5.根据权利要求1所述的方法,其特征在于,所述源widget中的待重用元素包括所述源widget中需要重用的节点,所述待重用元素的标识信息包括:所述节点的ID,或者,所述节点在所述源widget的文档对象模型DOM树中的路径。

6.根据权利要求1所述的方法,其特征在于,所述源widget中的待重用元素包括所述源widget中需要重用的变量或对象,所述获得源widget中的待重用元素的标识信息包括:为源widget的DOM树构建扩展DOM树,将与所述源widget的DOM树中的某节点关联的需要重用的变量或对象,作为该节点的叶节点,所述叶节点在所述扩展DOM树中的路径为所述待重用元素的标识信息。

7.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述待重用元素的标识信息保存在widget源文件的脚本区域;

或者,

将所述待重用元素的标识信息保存在widget源文件的配置文件中;

或者,

将所述待重用元素的标识信息保存在widget源文件的布局文件中。

8.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述待重用元素的标识信息保存为字符串文本、脚本变量、统一资源定位符URL引用或标记语言中的标签或标签属性。

9.根据权利要求1所述的方法,其特征在于,所述生成所述待重用元素之间的逻辑关系包括:将所述逻辑关系写在widget的标记语言中,通过标记语言的布局功能生成所述逻辑关系;

或者,

将所述逻辑关系写在配置文件中,用标签生成所述逻辑关系;

或者,

将所述逻辑关系写在widget的脚本语言中,用脚本语言生成所述逻辑关系。

10.根据权利要求1至9任一项所述的方法,其特征在于,所述待重用元素之间的逻辑关系包括:组合关系、先后关系或协作关系。

11.一种生成widget的装置,其特征在于,包括:标识单元,用于获得源widget中的待重用元素的标识信息;

逻辑关系生成单元,用于生成所述待重用元素之间的逻辑关系;

widget生成单元,用于根据所述待重用元素的标识信息及所述逻辑关系,生成带有所述待重用元素的标识信息及所述逻辑关系的widget。

12.根据权利要求11所述的装置,其特征在于,所述标识单元包括:元素选取指令接收子单元,用于接收用户在所述源widget中选取元素的指令,所述指令中显示的所述用户选取的元素的标识信息为所述待重用元素的标识信息。

13.根据权利要求11所述的装置,其特征在于,所述装置还包括:逻辑关系指令接收单元,用于接收用户设定所述待重用元素之间逻辑关系的指令,所述指令中显示的所述用户设定的逻辑关系为所述待重用信息之间的逻辑关系。

14.根据权利要求11所述的装置,其特征在于,所述源widget中的待重用元素包括所述源widget中需要重用的变量或对象,所述标识单元包括:扩展DOM树构建子单元,用于为源widget的DOM树构建扩展DOM树,将与所述源widget的DOM树中的某节点关联的需要重用的变量或对象,作为该节点的叶节点,所述叶节点在所述扩展DOM树中的路径为所述待重用元素的标识信息。

15.根据权利要求11所述的装置,其特征在于,所述装置还包括:第一保存单元,用于将所述待重用元素的标识信息保存在widget源文件的脚本区域;

或者,

第二保存单元,用于将所述待重用元素的标识信息保存在widget源文件的配置文件中;

或者,

第三保存单元,用于将所述待重用元素的标识信息保存在widget源文件的布局文件中。

16.根据权利要求11所述的装置,其特征在于,所述装置还包括:保存形式确定单元,用于将所述待重用元素的标识信息保存为字符串文本、脚本变量、URL引用或标记语言中的标签或标签属性。

17.根据权利要求11所述的装置,其特征在于,所述逻辑关系生成单元包括:第一生成子单元,用于将所述逻辑关系写在widget的标记语言中,通过标记语言的布局功能生成所述逻辑关系;

或者,

第二生成子单元,用于将所述逻辑关系写在配置文件中,用标签生成所述逻辑关系;

或者,

第三生成子单元,用于将所述逻辑关系写在widget的脚本语言中,用脚本语言生成所述逻辑关系。

18.一种运行widget的方法,其特征在于,包括:识别包括待重用元素的标识信息及逻辑关系的widget;

根据所述待重用元素的标识信息获得待重用元素;

解析所述逻辑关系,将所述待重用元素插入到所述widget中,执行并渲染所述widget。

19.根据权利要求18所述的方法,其特征在于,所述根据所述待重用元素的标识信息获得所述待重用元素的步骤包括:根据所述待重用元素的标识信息,定位到源widget;

运行所述源widget,并从所述源widget中获得所述待重用元素。

20.根据权利要求18所述的方法,其特征在于,所述解析所述逻辑关系包括:从配置文件中解析出所述逻辑关系;

或者,

通过脚本语言调用作为系统函数的所述逻辑关系;

或者,

通过脚本引擎执行写在所述widget脚本区域的逻辑关系。

21.一种widget引擎,其特征在于,包括:识别单元,用于识别包括待重用元素的标识信息及逻辑关系的widget;

获取单元,用于根据所述待重用元素的标识信息获得待重用元素;

解析单元,用于解析所述逻辑关系,将所述待重用元素插入到所述widget中,执行并渲染所述widget。

22.根据权利要求21所述的widget引擎,其特征在于,所述获取单元进一步用于根据所述待重用元素的标识信息定位到源widget,运行所述源widget,并从所述源widget中获得所述待重用元素。

23.根据权利要求21所述的widget引擎,其特征在于,所述解析单元包括:第一解析子单元,用于从配置文件中解析出所述逻辑关系;

或者,

第二解析子单元,用于通过脚本语言调用作为系统函数的逻辑关系;

或者,

第三解析子单元,用于通过脚本引擎执行写在所述widget脚本区域的逻辑关系。

24.一种客户端设备,其特征在于,包括:生成widget的装置,用于获得源widget中的待重用元素的标识信息,生成所述待重用元素之间的逻辑关系,根据所述待重用元素的标识信息及所述逻辑关系,生成带有所述待重用元素的标识信息及所述逻辑关系的widget;

widget引擎,用于根据所述待重用元素的标识信息获得待重用元素,解析所述逻辑关系,将所述待重用元素插入到所述widget中,执行并渲染所述widget。

说明书 :

一种生成widget的方法及装置

技术领域

[0001] 本发明涉及互联网技术领域,特别是涉及一种生成widget的方法及装置。

背景技术

[0002] 微件(Widget)是一个基于网络、可以嵌入网页或独立运行在PC桌面或其它类型联网终端上的实用工具,当然,widget也可以称为微技。例如,时钟widget,可以在桌面上显示当前的时间;天气widget,可以显示定制的地区的天气预报;CPU widget可以显示CPU的占用比率;还有桌面搜索widget、股票widget等等。此外,widget不仅可以在PC桌面上使用,还可以嵌入到网页中,如:www.google.cn/ig就是由多个widget组成的。另外,还可以运行在手机、数码相框、数字电视等嵌入式设备上。用户也可以制作自己的特有的widget与大家共享,大大丰富了widget的世界。随着终端和网络业务能力的增强,widget的应用类型越来越丰富,用户开发的widget数量也越来越多。
[0003] 但是,本发明人在实现本发明的过程中发现,目前业界普遍认为widget仅是一种能够执行简单逻辑、实现单一任务的小应用,在制作widget时,需要通过编写代码的方式来实现,用户需要熟悉多方面的知识:图像处理、HTML/XML、java等,使得开发widget的工作量很大,因此在很大程度上限制了widget的应用。

发明内容

[0004] 本发明提供一种生成widget的方法及装置、一种运行widget的方法及widget引擎以及一种客户端设备,以实现通过已有widget的组合重用来生成widget,减少widget开发的工作量。
[0005] 为实现上述目的,本发明提供了如下方案:
[0006] 一种生成widget的方法,包括:
[0007] 获得源widget中的待重用元素的标识信息;
[0008] 生成所述待重用元素之间的逻辑关系;
[0009] 根据所述待重用元素的标识信息及所述逻辑关系,生成包括所述待重用元素的标识信息及所述逻辑关系的widget。
[0010] 一种生成widget的装置,包括:
[0011] 标识单元,用于获得源widget中的待重用元素的标识信息;
[0012] 逻辑关系生成单元,用于生成所述待重用元素之间的逻辑关系;
[0013] widget生成单元,用于根据所述待重用元素的标识信息及所述逻辑关系,生成带有所述待重用元素的标识信息及所述逻辑关系的widget。
[0014] 一种运行widget的方法,包括:
[0015] 识别包括待重用元素的标识信息及逻辑关系的widget;
[0016] 根据所述待重用元素的标识信息获得待重用元素;
[0017] 解析所述逻辑关系,将所述待重用元素插入到所述widget中,执行并渲染所述widget。
[0018] 一种widget引擎,包括:
[0019] 识别单元,用于识别包括待重用元素的标识信息及逻辑关系的widget;
[0020] 获取单元,用于根据所述待重用元素的标识信息获得待重用元素;
[0021] 解析单元,用于解析所述逻辑关系,将所述待重用元素插入到所述widget中,执行并渲染所述widget。
[0022] 一种客户端设备,包括:
[0023] 生成widget的装置,用于获得源widget中的待重用元素的标识信息,生成所述待重用元素之间的逻辑关系,根据所述待重用元素的标识信息及所述逻辑关系,生成带有所述待重用元素的标识信息及所述逻辑关系的widget;
[0024] widget引擎,用于据所述待重用元素的标识信息获得待重用元素,解析所述逻辑关系,将所述待重用元素插入到所述widget中,执行并渲染所述widget。
[0025] 根据本发明提供的具体实施例,本发明公开了以下技术效果:
[0026] 本发明实施例能够获得源widget中的待重用元素的标识信息;生成所述待重用元素之间的逻辑关系;根据所述待重用元素的标识信息及所述逻辑关系,生成带有所述待重用元素的标识信息及所述逻辑关系信息的widget。因此,能够通过已有widget的组合重用来生成新的widget,使得开发过程中无须编写代码,减少了widget开发的工作量,有利于widget技术的发展。

附图说明

[0027] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0028] 图1是本发明实施例提供的生成widget的方法的流程图;
[0029] 图2是本发明实施例提供的生成widget的另一方法的流程图;
[0030] 图3是本发明实施例提供的运行widget的方法的流程图;
[0031] 图4是本发明实施例提供的运行widget的另一方法的流程图;
[0032] 图5是本发明实施例提供的生成widget的第一装置的示意图;
[0033] 图6是本发明实施例提供的生成widget的第二装置的示意图;
[0034] 图7是本发明实施例提供的widget引擎的示意图。

具体实施方式

[0035] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0036] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0037] 参见图1,本发明实施例提供的生成widget的方法包括以下步骤:
[0038] S101:获得源widget中的待重用元素的标识信息;
[0039] 其中,所述源widget是指已有的widget,该已有的widget可以是按照现有技术的方法生成的,也可以是按照本发明实施例提供的方法生成的。
[0040] 所述待重用元素是指源widget中需要重用的元素,该待重用元素需要在新生成的widget中使用。获得待重用元素的标识,是为了能够在运行新生成的widget时,能够唯一确定地找到该待重用元素。
[0041] S102:生成所述待重用元素之间的逻辑关系;
[0042] 所述待重用元素之间的逻辑关系是指,各待重用元素在新widget中的逻辑关系,可以包括简单的组合关系,或者先后关系,或者复杂的协作关系等等。其中,所述组合关系就是简单地将各个待重用元素拼凑在一起,组合成新的widget;所述先后关系是指待重用元素之间具有一定的先后关系,例如,将前一待重用元素的输出作为后一待重用元素的输入;所述协作关系是指,各个待重用元素之间较复杂的逻辑关系,具体的可以结合实际应用来确定。
[0043] 生成所述待重用元素之间的逻辑关系,就是要将各种逻辑关系表达成widget运行装置能够识别的语言,以便于在运行该新生成的widget时,能够正常地解析该逻辑关系。具体的生成方法有多种,例如,可以将所述逻辑关系写在widget的标记语言中,通过标记语言的布局功能生成所述逻辑关系;也可以将所述逻辑关系写在配置文件中,用标签生成所述逻辑关系;还可以将所述逻辑关系写在widget的脚本语言中,用脚本语言生成所述逻辑关系,等等。
[0044] S103:根据所述待重用元素的标识信息及所述逻辑关系,生成包括所述待重用元素的标识信息及所述逻辑关系的widget。
[0045] 需要说明的是,为了实现上述方案,本发明实施例提供了一种生成widget的工具,上述步骤S101至S103的执行主题均为该生成widget的工具。通常,在该生成widget的工具中可以具有操作区、预览区及代码区,等等。其中,操作区用于对待重用元素进行操作,预览区用于展示新生成的widget的效果,代码区用于展示新生成的widget对应的代码。
[0046] 另外需要说明的是,在获得所述待重用元素的标识信息,以及生成所述待重用元素之间的逻辑关系时,都可以由所述工具自动生成widget可识别的代码,使得生成widget的过程中不需要人为地编写代码。
[0047] 可见,本发明实施例能够通过已有widget的组合重用来生成新的widget,使得开发过程中无须编写代码,减少了widget开发的工作量,有利于widget技术的发展。
[0048] 其中,在获得所述源widget中的待重用元素的标识信息时,所述待重用元素可以是由所述工具自动按照某种预置策略来获取(例如,选取源widget中的核心元素等)的,然后获取待重用元素的标识信息;在本发明实施例中,待重用元素也可以是由用户选择的,所述工具可以向用户提供选择待重用元素的入口。例如,所述工具可以识别源widget中的元素,在识别出源widget中的元素后,向用户提示可以选择的元素(如用提示框的方式将可以选择的元素突出显示等),如果用户想要重用某元素,则可以点击该元素,此时,所述工具就会将该用户点击的元素确定为待重用元素,此时,所述指令中显示的所述用户选取的元素的标识信息为所述待重用元素的标识信息。同理,用户还可以选择该源widget中的其他元素,或者其他源widget中的元素。
[0049] 同样,在生成所述待重用元素之间的逻辑关系时,所述逻辑关系可以是由所述工具按照某种预置策略自动进行的(例如预先设置所述逻辑关系为简单的组合关系等);当然,也可以是由用户来设定逻辑关系的,所述工具向用户提供设定逻辑关系的入口,然后通过该入口接收用户设定待重用元素之间的逻辑关系信息的指令,此时,所述指令中显示的所述用户设定的逻辑关系为所述待重用信息之间的逻辑关系,然后所述工具自动生成用户设定的逻辑关系的代码。例如,如果用户想要设定组合关系,则可以选择好待重用元素后,直接将所述待重用元素拖动到新widget的预览区。当所述工具检测到发生所述拖拽事件之后,就可以确定所述逻辑关系为组合关系,同时可以采用前述各种方式来生成这种逻辑关系的代码,生成相应的代码。又如,如果用户想要设定两个待重用元素之间的先后关系,则可以先点击第一个待重用元素,然后将第一个待重用元素拖拽到第二个待重用元素上,当所述工具检测到这样的事件发生时,则可以判断出用户是要设定先后关系,然后便可以自动将第一个待重用元素的输出数据作为第二个待重用元素的输入数据,并生成相应的代码来表达该先后关系。
[0050] 其中,所述待重用元素可以包括所述源widget自身(重用整个源widget),或者源widget中需要重用的节点,或者源widget中需要重用的变量或对象。也就是说重用信息的粒度可以细化到节点甚至变量或对象。
[0051] 对于widget本身和widget中的节点而言,由于只要打开widget,便能够将其对应的内容直观地展现在用户面前,因此,用户可以直接选择需要重用的widget或者widget中的节点对应的内容。但是,对于widget中的变量或者对象(例如,脚本语言运行过程中创建的变量或对象)而言,通常不是直接显示给用户的,因此用户可能无法直接获知widget具有哪些变量或对象。
[0052] 因此,所述工具也可以识别出widget中的变量或对象,并提示给用户,这样,用户就可以向选择其他元素一样来选择widget中的变量或对象了。当然,选择所述变量或对象之后,可能并不会拖拽到预览区,而是拖拽到代码区,用户可以在代码区对变量或对象进行编辑等操作。
[0053] 对于不同类型的待重用元素,需要采用相应的方法来进行标识。例如,可以采用如下格式来标识待重用元素:[widgetID,[NodeID,[ObjectID]]]。其中:
[0054] widgetID用于唯一标识作为待重用元素的源widget。所述待重用元素的标识信息可以是系统分配的widget的标识符,也可以是widget的存放路径;利用这些标识信息,可以在运行新widget时,找到该源widget。
[0055] NodeID用于唯一标识widget中需要重用的节点。标记这种待重用元素时,标识信息可以是节点ID,也可以用XPath语法来标识节点在源widget的DOM(Document Object Model,文档对象模型)树中的路径。有时,为了得到某些需要用户交互才能呈现的节点内容,NodeID中还需要包含与用户交互的信息。
[0056] 其中,所述DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中导航寻找特定信息。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。
[0057] ObjectID用于标识widget中需要重用的变量或对象。由于源widget的DOM树中不存在变量或对象,因此,为了标记变量或对象,可以为每个源widget构建一个扩展DOM树,将与源widget的DOM树中与某节点关联的变量或对象(这里的变量或对象就是可以供重用的变量或对象)作为此节点的叶节点,并保存该叶节点在该扩展DOM树中的路径。这样,在运行新widget时,就可以通过该路径,找到源widget,再找到待重用的变量或对象相关联的节点,进而找到待重用的变量或对象。
[0058] 获取到待重用元素的标识信息后,还保存这些标识信息,具体的,可以将标识信息保存在以下位置:widget源文件的脚本区域里;widget源文件的配置文件里;widget源文件的布局文件里。标识信息的保存形式也可以多种多样,例如,可以保存为字符串文本、脚本变量、URL(Uniform Resource Locator,统一资源定位符)引用、标记语言(如HTML、XML)中的标签或标签属性等等。
[0059] 获得待重用元素的标记信息,并生成各待重用元素之间的逻辑关系之后,便可以生成带有所述待重用元素的标识信息及所述逻辑关系信息的widget了。实际应用中,在最终生成widget之前,还可以进行调整,例如,可以调整节点布局,和/或,添加新的业务逻辑等等。所述调整可以是由所述工具自动完成,也可以由用户通过写代码的方式完成布局调整。
[0060] 在用户调整的情况下,所述调整节点布局具体表现为,用户可以在所述预览区以拖动的方式来改变各个待重用元素的位置,所述工具可以对DOM树中的节点进行相应的调整,所述添加新的业务逻辑具体表现为,用户可以在代码区以编辑代码的方式,来添加新的业务逻辑。
[0061] 需要说明的是,在添加新的业务逻辑的过程中,虽然仍然需要用户编写一定的代码,但是与现有技术中全部依靠编写代码来生成widget的方法相比,工作量还是大大降低了。
[0062] 为了更好地理解本发明实施例提供的生成widget的方法,下面以用户选择待重用元素并设定逻辑关系为例进行详细地介绍。
[0063] 参见图2,该方法包括以下步骤:
[0064] S201:用户选择源widget;
[0065] S202:系统后台(即生成widget的工具)解析源widget,并通过GUI界面呈现给用户;
[0066] S203:用户标识各待重用元素;
[0067] S204:生成widget的工具判断待重用元素的类型;如果是节点,进入S206,如果是变量或对象,进入S205;
[0068] S205:用户设定重用变量或对象的逻辑关系,并进入S209;
[0069] S206:生成widget的工具判断用户设定的逻辑关系,如果是简单的组合关系,进入S208;如果是先后关系,则进入S207;
[0070] S207:用户编排工作流程;
[0071] S208:用户布局新widget中的节点;
[0072] S209:生成widget的工具判断用户操作是否结束,如果是,则结束流程;否则,返回S203。
[0073] 在按照本发明实施例所述的方法生成新的widget之后,可以在widget引擎中运行所述新widget,与运行普通的widget不同,其运行需要依赖于源widget。为了实现在客户端的widget引擎中运行所述新生成的widget,本发明实施例还提供了一种运行widget的方法,参见图3,该方法包括以下步骤:
[0074] S301:识别带有待重用元素的标识信息及逻辑关系信息的widget;
[0075] 该带有待重用元素的标识信息及逻辑关系信息的widget,就是按照本发明实施例所述的方法生成的widget,为方便描述,下面称为新widget。
[0076] S302:根据所述待重用元素的标识信息获得待重用元素;
[0077] 由于所述widget中带有待重用元素的标识信息,可以唯一标识待重用元素,因此,可以通过标识信息,定位到待重用元素所在的源widget,定位到源widget后可以找到所需的待重用元素。因此该步骤S302具体可以包括:根据所述待重用元素的标识信息,定位到源widget;运行所述源widget,并从所述源widget中获得所述待重用元素。
[0078] S303:解析所述逻辑关系,将所述待重用元素插入到所述widget中,执行并渲染所述widget。
[0079] 所述逻辑关系可以简单以代码的方式存在,widget引擎可以直接解析代码,将待重用元素插入到widget中;另外,所述逻辑关系也可以通过DOM树的方式来体现,则widget引擎也可以解析DOM树,然后根据DOM树插入节点。对新widget进行渲染之后,便可以将新widget的内容展现在用户面前。
[0080] 具体在解析所述逻辑关系时,可以采用多种方式,例如,可以包括从配置文件中解析出所述逻辑关系;或者,可以将所述逻辑关系作为widget引擎的系统函数,提供给新widget供脚本语言调用;或者,还可以将所述逻辑关系全部写在新widget的脚本区域里,由脚本引擎来执行。
[0081] 参见图4,具体实现时,运行widget可以包括以下步骤:
[0082] S401:启动新widget;
[0083] S402:解析识别待重用元素的标识信息;
[0084] S403:启动运行源widget;
[0085] S404:解析源widget内部结构;
[0086] S405:判断提取类型,如果是提取节点,则进入S406,如果是提取变量或对象,则进入S407;
[0087] S406:在新widget中插入源widget中需要重用的节点,并进入S408;
[0088] S407:在新widget中插入源widget中需要重用的变量或对象,并进入S408;
[0089] S408:继续执行并渲染所述新widget。
[0090] 以上所述描述了本发明实施例提供的生成widget的方法,以及运行本发明实施例所生成的widget的方法。需要说明的是,widget通常由HTML、JavaScript组成,解析widget时可通过构建DOM树的方式实现。对于其它不符合W3C标准的widget(例如使用自定义的XML标签制作的widget等),本发明实施例也适用,只要所述生成widget的工具能够解析出源widget中的待重用节点或待重用变量与对象,均可按照本发明实施例中提到的方法生成新widget;只要widget运行装置(widget引擎)能够识别出待重用元素标识信息,并且根据这些标识抽取出待重用元素插入到新widget中,都可以实现widget的组合重用。
[0091] 与本发明实施例提供的生成widget的方法相对应,本发明实施例还提供了一种生成widget的装置,参见图5,该装置包括以下单元:
[0092] 标识单元U501,用于获得所述源widget中的待重用元素的标识信息;
[0093] 逻辑关系生成单元U502,用于生成所述待重用元素之间的逻辑关系;
[0094] widget生成单元U503,用于根据所述待重用元素的标识信息及所述逻辑关系,生成包括所述待重用元素的标识信息及所述逻辑关系信息的widget。
[0095] 其中,可以由用户指定待重用元素,此时,标识单元U501可以包括以下子单元:
[0096] 元素选取指令接收子单元U5011,用于接收用户在所述源widget中选取元素的指令;此时,所述指令中显示的所述用户选取的元素的标识信息为所述待重用元素的标识信息。
[0097] 所述待重用元素之间的逻辑关系可以是由工具自动预置的,也可以由用户设定,当需要由用户指定待重用元素之间的逻辑关系时,该装置还可以包括:
[0098] 逻辑关系指令接收单元U504,用于接收用户设定所述待重用元素之间逻辑关系的指令;相应的,所述指令中显示的所述用户设定的逻辑关系为所述待重用信息之间的逻辑关系。
[0099] 所述待重用元素的类型可以有多种,当所述源widget中的待重用元素为所述源widget中需要重用的变量或对象时,由于源widget的DOM树中并不存在变量或对象,因此,参见图6,标识单元U501可以包括以下子单元:
[0100] 扩展DOM树构建子单元U5012,用于为源widget的DOM树构建扩展DOM树,将与所述源widget的DOM树中的某节点关联的需要重用的变量或对象,作为该节点的叶节点;此时,所述叶节点在所述扩展DOM树中的路径为所述待重用元素的标识信息。
[0101] 获得待重用元素的标识信息,还可以保存这些标识信息,并且待重用元素的标识信息可以保存在多个位置,具体的,该装置还可以包括:
[0102] 第一保存单元U505,用于将所述待重用元素的标识信息保存在widget源文件的脚本区域;
[0103] 或者,
[0104] 第二保存单元U506,用于将所述待重用元素的标识信息保存在widget源文件的配置文件中;
[0105] 或者,
[0106] 第三保存单元U507,用于将所述待重用元素的标识信息保存在widget源文件的布局文件中。
[0107] 另外,还可以将所述标识信息保存为多种形式,只要widget引擎能够识别即可,具体的,该装置还可以包括:
[0108] 保存形式确定单元U508,用于将所述待重用元素的标识信息保存为字符串文本、脚本变量、URL引用或标记语言中的标签或标签属性。
[0109] 逻辑关系生成单元U502表达逻辑关系的具体方式也可以有多种,具体的,逻辑关系生成单元U502可以包括以下子单元:
[0110] 第一生成子单元U5021,用于将所述逻辑关系写在widget的标记语言中,通过标记语言的布局功能生成所述逻辑关系;
[0111] 或者,
[0112] 第二生成子单元U5022,用于将所述逻辑关系写在配置文件中,用标签生成所述逻辑关系;
[0113] 或者,
[0114] 第三生成子单元U5023,用于将所述逻辑关系写在widget的脚本语言中,用脚本语言生成所述逻辑关系。
[0115] 与本发明实施例提供的运行widget的方法相对应,本发明实施例还提供了一种widget引擎,参见图7,该widget引擎在客户端实现,包括以下单元:
[0116] 识别单元U701,用于识别包括待重用元素的标识信息及逻辑关系信息的widget;
[0117] 获取单元U702,用于根据所述待重用元素的标识信息获得待重用元素;在本实施例中,获取单元U702可以通过先根据所述待重用元素的标识信息,定位到所述源widget,再运行所述源widget,并从所述源widget中获取所述待重用元素,最终以获得所述待重用元素;
[0118] 解析单元U703,用于解析所述逻辑关系,将所述待重用元素插入到所述widget中,执行并渲染所述widget。
[0119] 其中,解析单元U703可以包括以下子单元:
[0120] 第一解析子单元U7031,用于从配置文件中解析出所述逻辑关系;
[0121] 或者,
[0122] 第二解析子单元U7032,用于通过脚本语言调用作为系统函数的逻辑关系;
[0123] 或者,
[0124] 第三解析子单元U7033,用于通过脚本引擎执行写在所述widget脚本区域的逻辑关系。
[0125] 通过本发明实施例提供的装置,能够通过已有widget的组合重用来生成新的widget,使得开发过程中无须编写代码,减少了widget开发的工作量,有利于widget技术的发展。
[0126] 此外,本发明实施例还提供了一种客户端设备,该客户端设备包括:
[0127] 生成widget的装置,用于获得源widget中的待重用元素的标识信息,生成所述待重用元素之间的逻辑关系,根据所述待重用元素的标识信息及所述逻辑关系,生成带有所述待重用元素的标识信息及所述逻辑关系的widget;
[0128] widget引擎,用于据所述待重用元素的标识信息获得待重用元素,解析所述逻辑关系,将所述待重用元素插入到所述widget中,执行并渲染所述widget。
[0129] 在本实施例中,也可以将生成widget的装置和widget引擎构成一个客户端设备,通过这个客户端设备让开发者或用户共同进行体验如何生成widget。
[0130] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如下步骤:获得源widget中的待重用元素的标识信息;生成所述待重用元素之间的逻辑关系;根据所述待重用元素的标识信息及所述逻辑关系,生成带有所述待重用元素的标识信息及所述逻辑关系的widget。所述的存储介质,如:ROM/RAM、磁碟、光盘等。
[0131] 以上对本发明所提供的一种生成widget的方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。