公开/公告号CN1629803A
专利类型发明专利
公开/公告日2005-06-22
原文格式PDF
申请/专利权人 腾讯科技(深圳)有限公司;
申请/专利号CN200310117431.8
发明设计人 柴银辉;
申请日2003-12-18
分类号G06F9/44;G06F3/00;
代理机构
代理人
地址 518057 广东省深圳市高新科技园南区高新南一道飞亚达高科技大厦5楼
入库时间 2023-12-17 16:16:48
法律状态公告日
法律状态信息
法律状态
2011-04-20
授权
授权
2010-11-24
文件的公告送达 IPC(主分类):G06F9/44 收件人:张和兴 文件名称:手续合格通知书 申请日:20031218
文件的公告送达
2005-08-24
实质审查的生效
实质审查的生效
2005-06-22
公开
公开
技术领域
本发明涉及程序界面互相嵌入和交互技术,尤其涉及一种在宿主程序界面中嵌入第三方界面的方法。
背景技术
在互联网即时通讯工具(QQ)的业务伙伴(S-BUDDY)应用中,由于S-BUDDY服务商数量众多,且行业各不相同,因此S-BUDDY服务商对业务受理界面有很强的个性化定制,导致QQ在技术实现上需要支持嵌入第三方定义的程序界面,实现QQ与S-BUDDY服务商界面的无关性,从而将界面的定制能力交给用户。
目前要在宿主程序(需要嵌入第三方界面的主程序)中实现嵌入第三方界面主要有以下三种方法:
方法一、在宿主程序的源代码中调用由第三方的界面ActiveX控件
第三方将其需要的界面封装为一个独立的ActiveX控件,并将该控件提供给宿主程序,由宿主程序调用该控件。下面以VC6为例说明宿主程序调用ActiveX控件的方法:
1、在宿主程序中,新建一个对话框。
2、执行图1A所示的文件菜单Project->Add to Project->Components andControls。
3、选取第三方提供的控件,参阅图1B。
4、被选中的ActiveX控件插入到对话框中,参阅图1C,图中右部份即为新插入的第三方界面。
5、宿主程序编译执行,显示如图1D所示界面。
该方法存在以下缺点:
1、必须修改宿主程序的源代码才能支持新的界面,虽在技术上可行,但在S-BUDDY中却不具备实际应用价值;
2、第三方界面均需要一个独立的ActiveX控件,系统消耗大,当控件数量很多时管理很复杂;
3、一旦ActiveX控件发布后,该界面就不能再修改,几乎没有用户可定制性;
4、新的ActiveX控件发布后,需要更新所有的宿主程序版本,而S-BUDDY分布在全国各地的个人用户的机器上,统一更新十分困难,且会造成很大的网络和设备压力;
5、ActiveX控件的编写复杂,需要有很强的技术功底,并利用编程工具才能编写,起点高,造成普通用户几乎不可能制作出自己的界面;
6、ActiveX控件封装严密,宿主程序难以接管其所有其消息,因此其操作结果必须由ActiveX控件自身来返回给第三方,但第三方界面很多时,协议接口十分复杂,很容易影响到整个系统的稳定性。
方法二、宿主程序使用第三方界面插件(PlugIn)
第三方将其需要的界面封装为一个独立的插件(PlugIn),并将该控件提供给宿主程序,由宿主程序调用该插件。下面以VC6本身使用插件的例子来说明该方法:
1、宿主程序提供插件接口,所有的插件都必须严格遵守该接口;
2、将所需要的功能封装在独立的插件内,并放置到宿主程序的插件目录下;
3、在VC6中配置该插件:Tools->Customize...,显示如图2A所示配置界面;
4、在界面上选中相应的插件并确认,该插件将立即启用,执行效果如图2B所示。
该方法存在以下缺点:
1、宿主程序需要支持复杂的插件加载、卸载、资源分配以及调用机制;
2、由于插件必须安装在宿主程序本地,当插件数量很多时管理很复杂;
3、一旦插件发布后,该界面就不能再修改,几乎没有用户可定制性;
4、新插件发布后,需要将其同步到所有宿主程序的归属机器上,而S-BUDDY分布在全国各地的个人用户的机器上,统一更新十分困难,且会造成很大的网络和设备压力;
5、插件的编写复杂,需要有很强的技术功底,并利用编程工具才能编写,起点高,造成普通用户几乎不可能制作出自己的界面;
6、插件封装严密,宿主程序难以接管其所有其消息,因此其操作结果必须由插件自身来返回给第三方,但第三方界面很多时,协议接口十分复杂,很容易影响到整个系统的稳定性。
方法三、宿主程序内嵌HTML页面
第三方将其需要的界面写成对应的HTML页面,并发布到宿主程序可以访问的网络(如Internet)上。宿主程序则在自己的界面上内嵌HTML浏览器,宿主程序启动后显示该HTML页面,用户在该HTML页面上填写信息并提交。技术方案如图3A:
1、在宿主程序的界面中插入HTML浏览器控件,见图3B;
2、编写相应代码来控制HTML浏览器控件,使之能够显示指定HTML页面的能力;
3、编译执行宿主程序,如图3C。
该方法存在以下缺点:
1、宿主程序需支持HTML浏览器,在不同的操作系统下实现同一功能无法兼容;
2、如果用户在代理服务器后面还需要支持WEB代理,对宿主程序改动很大;
3、对第三方而言,需要有WEB SERVER,以便向宿主程序提供HTML页面,并接受返回的用户数据。
发明内容
本发明的目的在于提供一种在宿主程序界面中嵌入第三方界面的方法,以解决现有技术中存在定制第三方界面技术要求高,更新和维护困难的缺点。
为解决上述问题,本发明提供以下技术方案:
一种在宿主程序界面中嵌入第三方界面的方法,该方法为:将描述第三方界面的描述文件传送给宿主程序,宿主程序解析该描述文件并生成第三方界面。
根据上述方法:
宿主程序接收到描述文件后先生成相应的动态界面,再将描述文件传送给该动态界面,由动态界面解析描述文件并生成第三方界面。
用户操作完第三方界面后,将从第三方界面获得的信息生成数据包传递给宿主程序并关闭第三方界面,然后由宿主程序将数据包传送给第三方设备。
由第三方通过网络将描述文件传送给宿主程序。
传送描述文件前先进行压缩处理,在解析描述文件时先进行解压缩处理。
宿主程序提供支持所述描述文件的控件能力集,当接收到描述文件时通过执行该能力集来生成动态界面。
由独立的插件提供支持所述描述文件的控件能力集,当宿主程序接收到描述文件时调用该插件来生成动态界面。
对第三方界面的描述中包含对属性和动作的描述。
采用可扩展的标记性语言(XML)、自定义文本文件、二进制文件或资源文件描述第三方界面。
本发明具有以下有益效果:
1、实现了宿主程序和第三方界面的无关性:通过提供XML界面能力集,使得第三方可以在此能力集范围内任意定义自己的专用界面,实现了宿主程序和第三方界面的无关性,完善地解决了S-BUDDY这类业务的界面多样化需求。
2、通过这种嵌入界面的方式给第三方提供了自己定制用户界面并获取用户数据的能力。
3、降低了技术门槛,方便第三方定制:能力集采用简单易懂的文本方式来描述界面,并提供了XML资源编辑工具,即时普通用户也可迅速定制其界面。
4、可维护性好:第三方的界面不需要安装到宿主程序本地,因此不需要本地维护,也不存在管理问题,第三方界面的变动也不需要更新宿主程序。
5、更新方便:第三方更改其界面定义后,不需要同步到宿主程序本地,而是在实时交互中传送给宿主程序,因此更新第三方界面十分方便。
附图说明
图1A、图1B、图1C和图1D为现有技术中实施方法一的界面示意图;
图2A、图2B为现有技术中实现方法二的界面示意图;
图3A、图3B、图3C为现有技术中实现方法三的界面示意图;
图4为本发明中第三方界面在整个方案中的地位示意图;
图5为说明组合框控制的界面示意图;
图6为产生的第三方界面示意图。
具体实施方式
本实施例主要以采用可扩展标记语言(XML)描述第三方界面为例对本发明进行说明。
在本发明中,第三方只需提供描述其界面的XML文本,宿主程序根据其脚本中的界面定义来生成第三方界面,并可将从该界面填写的结果以XML返回给第三方。
参阅图4所示,在即时通讯(IM)中,网络中间件在第三方设备和宿主程序之间进行数据或文件传送。
本发明的处理流程如下:
步骤①:第三方利用XML资源编辑器或者手工编写XML界面文本;
步骤②:第三方设备收到该文本后,传递给网络中间件;
步骤③:网络中间件将XML文本传给宿主程序;
步骤④:宿主程序生成XML对话框(也可为一般的窗口界面),并将XML界面文本传递给该对话框;
步骤⑤:XML对话框根据收到的XML文本产生相关的界面(第三方界面);
步骤⑥:最终用户在该界面上完成资料的填写后,点击“提交”按钮时XML对话框关闭,并将填写结果打包给宿主程序;
步骤⑦:宿主程序通过网络中间件将结果传送给第三方设备。
以下对上述处理流程进行详细说明:
宿主程序提供XML控件能力集,支持静态文本、文本编辑、组合框、列表框、单选按钮群组、GroupBox、单选按钮、复选按钮、线条、图像、进程条等主要控件。
宿主程序支持可动态扩充的控件能力集,上述控件已覆盖了一般程序所常用的绝大部分控件。当现有控件能力集不够用时,还可动态扩充控件能力集,新扩充的控件不影响到原来的第三方已经定义好的界面。
宿主程序提供控件能力集的方式有两种:
A、将控件能力集嵌入到主程序中,但需要升级宿主程序。
B、将控件能力集作为一个独立的插件,宿主程序通过接口调用该插件。当能力集增加新的控件后,升级该插件即可,完全与宿主程序无关。
控件能力集中的每种控件均可支持属性(Property)和动作(Action)。其中:
属性描述了控件某个方面的特性,如标题、位置、文本颜色、背景颜色、是否可见、是否使能等,由于每个控件的特性存在差异,因此其支持的属性也各不相同。
动作描述了控件的某个属性发生变更后,其他控件的属性发生跟随性变化,如用户选中组合框中的某项时,某个编辑控件不能继续让用户填写,此时就可以定义对应的动作使得编辑控件隐藏或者禁止编辑。
参阅图5,以XML FORM中的组合框控件(框1内的控件)为例:
该控件的XML定义为:
<项目选择 类型=“COMBOBOX”坐标=“15,323,135,414”使能=“TRUE”选中项=“无默认项”必填=“TRUE”>
<选项清单>
<选项 项名=“第一项”/>
<选项 项名=“第二项”/>
<选项 项名=“第三项”/>
</选项清单>
<动作清单>
<第[1]动作 选中项=“第一项”类型=“等于”控件名=“控制列表”属性名=“选中项”属性值=“第一项”/>
<第[2]动作 选中项=“第二项”类型=“等于”控件名=“控制列表”属性名=“选中项”属性值=“第二项”/>
<第[3]动作 选中项=“第三项”类型=“等于”控件名=“控制列表”属性名=“选中项”属性值=“第三项”/>
</动作清单>
</项目选择>
上面的定义中,为该组合框定义了如下属性:
(1)控件名称:项目选择;
(2)类型:COMBOBOX;
(3)坐标:15,323,135,414;
(4)使能:TRUE;
(5)选中项:无默认项;
(6)必填:TRUE;
(7)列表项清单:第一项、第二项、第三项。
同时,还为该组合框定义了如下动作(“控制列表”是另外一个列表框控件):
(1)当选中“第一项”时:控制列表也选中包含“第一项”文本的项目;
(2)当选中“第二项”时:控制列表也选中包含“第二项”文本的项目;
(3)当选中“第三项”时:控制列表也选中包含“第三项”文本的项目。
宿主程序能够根据界面XML定义文本来动态生成相关的界面,即实现第三方界面和宿主程序的无关性。如第三方界面定义如下:
<?xml version=′1.0′encoding=′gb2312′?>
<XML表单FORM标题=′用户调查′FORM位置=′221,198,371,398′背景色=′212,208,200′字体大小=′90′>
<普通按钮 类型=“BUTTON”标题=“退出”坐标=“15,142,135,166”使能=“TRUE”动作=“COMMIT”/>
<文本编辑 类型=“EDIT”标题=“”坐标=“15,65,135,87”使能=“TRUE”单行=“TRUE”必填=“TRUE”/>
<姓名 类型=“STATIC”标题=“您的姓名:”坐标=“15,41,135,61”使能=“TRUE”/>
</XML表单>
生成的第三方界面如图6所示,宿主程序在用户填写完该界面后,可将用户的结果透传给第三方,以便第三方实现自己的业务流程。
采用标准的XML文本,在IE中可解析,可支持GB2312中文编码和英文编码。因此,XML控件能力集属性既可支持中文又可支持英文。
由于XML描述的第三方界面为文本方式,可有比较大的压缩率,因此,将XML文本文件压缩后再通过网络传送,这样可大幅度降低网络要求和对相关设备的要求。
本实施例虽然以采用XML描述第三方界面为例,但界面描述采用自定义文本文件、二进制文件或者资源文件(如微软公司Visual C++的.RC文件)来描述界面,也可达到用XML来描述界面相同的效果。
机译: 使用包装程序应用程序界面访问交互式白板设备上的第三方内容协作服务的方法
机译: 使用包装程序界面访问交互式白板设备上的第三方内容协作服务的方法
机译: 第三方呼叫控制应用程序界面