首页> 中国专利> 在保护用户自定义的情况下合并对用户界面组件的修改

在保护用户自定义的情况下合并对用户界面组件的修改

摘要

应用显示用户界面(UI)组件。客户端可以将自定义应用到此UI组件。在客户端将自定义应用到UI组件之后,客户端修改包含修改UI组件的解决方案的解决方案集。在客户端修改解决方案集之后,应用显示UI组件的新版本。解决方案集中的解决方案所提供的修改被应用于UI组件的新版本。另外,自定义保持应用于UI组件,无需客户端手动将自定义重新应用到UI组件。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-09-02

    授权

    授权

  • 2015-08-26

    专利申请权的转移 IPC(主分类):G06Q10/06 变更前: 变更后: 登记生效日:20150805 申请日:20110520

    专利申请权、专利权的转移

  • 2013-03-27

    实质审查的生效 IPC(主分类):G06Q10/00 申请日:20110520

    实质审查的生效

  • 2013-02-20

    公开

    公开

说明书

背景

企业经常需要针对它们的特定行业定制的软件系统。例如,牙科医生 可能需要帮助预定约会并向保险公司发送账单的软件系统。在另一个示例 中,房地产经纪人可能需要帮助维持客户联系人并帮助生成购买合同的软 件系统。

这些企业特定的软件系统中有许多需要相同的一般类型的功能。在前 面的示例中,牙科医生的软件系统和房地产经纪人的软件系统可能需要数 据库服务、Web访问服务,以及客户联系人管理服务。服务是向其他程序 提供支持的程序或例程。

为每个企业特定的软件系统的这些共同的类型的功能重新创建软件代 码既费时又费钱。因此,开发了平台应用。平台应用提供这些共同的类型 的功能。例如,平台应用可以提供数据库服务和基本客户联系人管理服务。

然后,其他软件开发人员使用这样的平台应用作为在其上开发软件“解 决方案”的平台。这些解决方案可以向平台应用添加功能,以便解决特定 行业的企业的需求。例如,一个解决方案可以使用平台应用所提供的客户 联系人管理服务和数据库服务来创建针对牙科专业人员的需求定制的解决 方案。企业可以在平台应用上安装一个或多个这样的解决方案。

除向平台应用添加功能之外,解决方案还可以修改平台应用的用户界 面。例如,解决方案可以向平台应用的用户界面添加按钮或表单。用户界 面是程序的用户与其进行交互的一部分。

此外,在某些情况下,企业能够进一步自定义平台应用的用户界面。 例如,企业可以自定义平台应用的用户界面以隐藏按钮或重新标记菜单项。 在另一个示例中,企业可以自定义平台应用的用户界面以添加字段或从表 单中移除字段。通常,每当企业安装、卸载或更新构建在平台应用上的解 决方案时,这样的自定义都会丢失。由于企业会花费相当大的时间和资源 来对用户界面进行自定义,因此,重新应用自定义会不方便,并且昂贵。

概述

应用显示用户界面(UI)组件。客户端可以将自定义应用到此UI组件。 在客户端将自定义应用到UI组件之后,客户端修改包含修改UI组件的解 决方案的解决方案集。在各种实施例中,客户端可以以各种方式修改解决 方案集。例如,客户端可以向解决方案集添加解决方案,从解决方案集中 移除解决方案,更新已经在解决方案集中的解决方案,或以其他方式修改 解决方案集。在客户端修改解决方案集之后,应用显示UI组件的新版本。 解决方案所提供的修改被应用于UI组件的新版本。另外,自定义保持应用 于UI组件,无需客户端手动将自定义重新应用到UI组件。

提供本发明内容是为了介绍一些概念。这些概念在以下详细描述中进 一步描述。本发明内容并不旨在标识出所要求保护的主题的关键特征或必 要特征,也不旨在用于帮助确定所要求保护的主题的范围。

附图简述

图1是示出了示例系统的框图。

图2是示出了示例解决方案集的框图。

图3是示出了由解决方案集中的解决方案对应用的用户界面组件所引 起的示例改变的框图。

图4A和4B是示出了关于客户端的示例细节的框图。

图5是示出了客户端所使用的示例计算系统的框图。

图6是示出了安装具有更改列表的解决方案的示例操作的流程图。

图7是示出了卸载具有更改列表的解决方案的示例操作的流程图。

图8是示出了更新具有更改列表的解决方案的示例操作的流程图。

图9是示出了安装具有差异描述符的解决方案的示例操作的流程图。

图10是示出了卸载具有差异描述符的解决方案的示例操作的流程图。

图11是示出了更新具有差异描述符的解决方案的示例操作的流程图。

图12是示出了示例计算设备的框图。

详细描述

图1是示出了示例系统100的框图。如图1的示例所示,系统100包 括客户端102。客户端102是诸如企业实体(例如,企业、合伙企业、公司 等等)、政府实体(例如,部门、局、机构等等)、非企业实体(例如, 基金会、非盈利企业等等)之类的实体或个人。

客户端102使用应用104。应用是被设计用于有助于执行特定任务的 程序。在各实施例中,应用104可以是各种类型的应用。例如,在某些实 施例中,应用104可以是诸如MICROSOFT应用之类的客户 关系管理(CRM)应用。在其他实施例中,应用104可以是文字处理应用、 电子表格应用、Web应用、笔记记录应用,或另一种类型的应用。

应用104是平台应用。在其原有形式下,应用104可以提供由客户端 102所需的功能中的一些。然而,在其原有形式下,应用104可能不提供由 客户端102所需的功能中的全部。例如,客户端102可以是房地产经纪公 司。在此示例中,应用104提供用于管理客户端联系人信息和用于存储文 档的特征,但是不提供与房地产生意相关的任何特殊特征。

独立软件供应商(ISV)106生产扩展应用104的功能的解决方案108。 例如,解决方案108可以扩展应用104的功能以提供与房地产生意相关的 特殊特征。例如,在此示例中,解决方案108可以扩展应用104的功能, 以提供用于管理有关房地产经纪公司正在销售的房地产的信息的特征。如 果客户端102需要解决方案108的所提供的额外的功能,则客户端102可 以获取并安装解决方案108。

在某些情况下,解决方案108所提供的额外的功能可能仍不能足以满 足客户端102的需要。例如,客户端102可以专营买卖公寓大楼。在此示 例中,解决方案108的额外的功能可能不足以捕捉公寓大楼业务的一些细 微差异别。因此,客户端102可以获取并安装提供除应用104和解决方案 108所提供的功能之外的功能的另一个解决方案(未示出)。例如,其他解 决方案可以构建在解决方案108所提供的功能之上,以提供用于管理公寓 大楼关联文档的特征。如此,应用104的功能可以通过多个解决方案扩展 多次。

为了扩展应用104的功能,解决方案108可以修改应用104的用户界 面(UI)组件110。在某些实施例中,UI组件110是应用104的UI内的分 离的组件。例如,UI组件110可以是一种表单。表单是带有为输入信息而 预留的空间的结构化文档。在另一个示例中,UI组件110是一种选项列表。 选项列表是用户可以从中选择的项的列表。在再一个示例中,UI组件110 可以是一种控件条带组件。控件条带组件是其中一组工具栏被置于选项卡 条中的选项卡上的UI组件。在再一个示例中,UI组件110是工具栏。工 具栏是一行或一条激活功能的可点击的图标或按钮。在再一个示例中,UI 组件110是站点图。站点图是到其他UI组件的链接的列表。例如,站点图 可包括表单的列表或到与各种任务相关联的UI组件的链接的列表。在其他 实施例中,UI组件110是应用104的完整的UI。

解决方案108的安装可以以各种方式修改UI组件110。例如,UI组件 110可以是一种表单。在此示例中,解决方案108的安装可以修改UI组件 110以在表单中包括多一些或少一些字段,或重新排列表单中的字段。在另 一个示例中,解决方案108的安装可以修改UI组件110,以包括额外的元 件,诸如按钮、下拉框、文本输入字段、菜单、菜单项,或其他类型的控 件。在图形用户界面中,控件是屏幕中的可以被用户操纵以执行动作的对 象。元件是出现在用户界面中的东西,诸如文本、控件、图片、链接、区 域、列、背景等等。在另一个示例中,解决方案108可以修改UI组件110, 以从UI组件110中移除元件。在再一个示例中,解决方案108可以修改 UI组件110,以改变UI组件110中的元件的内容或位置。

在某些情况下,客户端102可能喜欢解决方案108所提供的额外的功 能,但是可能不喜欢在安装解决方案108之后UI组件110的外观。例如, 客户端102可能发现表单中的一个特定字段在表单底部而不是在表单的顶 部是不方便的。在另一个示例中,客户端102可能希望将其公司徽标放置 在UI组件110中,以便使应用104显得像它仅仅为客户端102构建的。

因此,应用104允许客户端102自定义UI组件110。例如,应用104 允许客户端102隐藏UI组件110中的不需要的控件,更改UI组件110中 的控件的名称或标记,重新排列UI组件110中的元件,向UI组件110中 添加图像等等。除能够自定义应用104最初所提供的UI组件110的各方面 之外,客户端102还可以自定义UI组件110的由一个或多个解决方案修改 的各方面。例如,解决方案108可以向UI组件110添加额外的按钮。在此 示例中,客户端102可能发现此额外的按钮不太有用,并可以自定义UI组 件110,以隐藏此额外的按钮。

在某些情况下,客户端102可以投入大量时间和资金来针对其特定需 求自定义UI组件110。因此,如果每当客户端102修改安装的解决方案的 集合(即,解决方案集)时客户端的对UI组件110的自定义都丢失的话, 客户端102会感到灰心。例如,如果每当客户端102安装、更新或卸载解 决方案时客户端的对UI组件110的自定义都会丢失,则会使人感到灰心。 为避免再次手动对UI组件110应用自定义的需要,客户端102可以完全不 安装额外的解决方案或可能对特定解决方案感到不敏感的(locked-in)。 这可能会抑制对ISV 106和客户端102的损害的解决方案的市场。

如本说明书所描述的,应用104显示UI组件110的自定义的版本。 UI组件110的自定义的版本是向其中应用了客户端自定义的UI组件110 的版本。在对解决方案集进行修改之后,应用104显示UI组件110的新的 自定义的版本。UI组件110的新的自定义的版本是向其中应用了解决方案 集中的解决方案所提供的修改的UI组件110的版本。此外,客户端自定义 保持应用于UI组件110的修改的版本,无需手动将适用的客户端自定义应 用到UI组件110。

图2是示出了示例解决方案集200的框图。如图2的示例所示,解决 方案集200包括基本解决方案202。基本解决方案202是应用104所提供的。 在任何解决方案安装在应用104上之前,基本解决方案202提供应用104 的初始功能。

基本解决方案202提供基本接口定义。基本接口定义是包含定义UI 组件110的基本版本的内容和布局的数据的文件。文件是信息的完整的、 带名称的集合。UI组件110的基本版本是当没有解决方案安装在应用104 上并且没有客户端自定义应用于UI组件110时显示的UI组件110的版本。

为定义UI组件110的基本版本的内容和布局,基本接口定义包括描述 UI组件110的基本版本的内容和布局的数据。例如,基本接口定义可包括 表示哪些控件位于UI组件110中以及这些控件位于UI组件110内的什么 地方的数据。在各实施例中,基本接口定义可以以各种方式来格式化。例 如,在某些实施例中,基本接口定义被格式化为可扩展标记语言(XML) 文件。在其他实施例中,基本接口定义被格式化为标准通用标记语言 (SGML)文件。

如图2的示例所示,解决方案集200还包括受管理的解决方案204和 受管理的解决方案206。受管理的解决方案204和受管理的解决方案206 是扩展基本解决方案202的功能的解决方案。例如,受管理的解决方案204 可以扩展基本解决方案202的功能以提供牙科诊所预约服务。在此示例中, 受管理的解决方案206可以扩展受管理的解决方案204的功能,以使得牙 科诊所职员能够为看牙病预约与保险公司进行结算。

在本说明书中,受管理的解决方案204和206被称为“受管理的”解 决方案,因为这些解决方案中的软件代码是由除客户端102以外的实体创 建和维护的(即,管理)。例如,受管理的解决方案204和/或受管理的解 决方案206可以由ISV 106或另一个ISV进行管理。

当安装受管理的解决方案204时,通过将受管理的解决方案204所提 供的修改应用到基本接口定义来创建修改的接口定义。修改的接口定义对 UI组件110的修改的版本进行定义。例如,修改可以应用于基本接口定义, 以便未包括在UI组件110的基本版本内的额外的元件被包括在UI组件110 的修改的版本中,以便UI组件110的基本版本中的元件被隐藏在UI组件 110的修改的版本中,UI组件110的基本版本中的元件在UI组件110的修 改的版本中被重命名或重新定位,或以其他方式被修改。

当安装受管理的解决方案206时,通过将受管理的解决方案206所提 供的修改应用到修改的接口定义来创建进一步修改的接口定义。进一步修 改的接口定义对UI组件110的进一步修改的版本进行定义。例如,额外的 更改可以应用于修改的接口定义,以便元件被添加到UI组件110的修改的 版本,UI组件110的修改的版本的元件被隐藏,或UI组件110的修改的 版本的元件以别的方式被修改。

此外,如图2的示例所示,解决方案集200包括自定义解决方案208。 在概念上,自定义解决方案208表示对UI组件110的客户端自定义。当客 户端102执行自定义UI组件110的动作时,通过将更改应用到进一步修改 的接口定义来生成自定义的接口定义。自定义的接口定义对UI组件110的 自定义的版本进行定义。例如,客户端自定义可以应用于UI组件110的进 一步修改的版本,以便元件被添加到UI组件110的进一步修改的版本,UI 组件110的进一步修改的版本的元件被隐藏,或UI组件110的进一步修改 的版本的元件以别的方式被修改。

在某些实施例中,应用110使用2008年12月10日提交的美国专利申 请12/331,451号中所描述的类型的数据库系统来管理组件堆栈中的组件, 该专利申请的全部内容以引用的方式并入本文中。

图3是示出了由解决方案集200中的解决方案对UI组件110所引起的 改变的框图。如图3的示例所示,基本解决方案202提供定义UI组件110 的基本版本以包括按钮“S”的基本接口定义。受管理的解决方案204向基 本接口定义提供修改。应用受管理的解决方案204所提供的修改导致定义 包括按钮“A”的UI组件110的修改的版本的修改的接口定义。此外,受 管理的解决方案206向修改的接口定义提供修改。应用受管理的解决方案 206所提供的修改导致定义包括按钮“B”的UI组件110的进一步修改的 版本的进一步修改的接口定义。自定义解决方案208向进一步修改的接口 定义提供修改。应用自定义解决方案208所提供的修改导致定义其中按钮 “B”被隐藏的UI组件110的最后的版本的最后的接口定义。

如图3的示例所示,UI组件110的最后版本包括按钮“S”和按钮“A”, 但不包括按钮“B”。

图4A和4B是示出了关于客户端102的示例细节的框图。应该理解, 在其他实施例中,客户端102可包括除图4A和4B的示例中所示出的计算 系统以外的计算系统。

如图4A的示例所示,客户端102可包括服务器计算系统400、网络402, 以及用户计算系统404A到404N(统称为“用户计算系统404”)。服务 器计算系统400是提供应用104和Web服务406的计算系统。解决方案被 安装在服务器计算系统400中,但不安装在用户计算系统404中。用户计 算系统404是与客户端102相关联的用户所使用的计算系统。例如,客户 端102的雇员可以使用用户计算系统404。

网络402促进用户计算系统404和服务器计算系统400之间的通信。 在各实施例中,网络402是以各种方式实现的。例如,在某些实施例中, 网络402是局域网。在其他实施例中,网络402是诸如因特网之类的广域 网。

用户计算系统404通过网络402与Web服务406交换消息,以便与应 用104进行通信。由Web服务406向用户计算系统404所发送的消息可以 包含表示应用104的UI组件110的数据。由用户计算系统404向Web服 务406所发送的消息包括表示与UI组件110进行交互的请求的数据。用户 计算系统404解释此数据,以向用户计算系统404的用户显示UI组件110。 如此,用户计算系统404的用户可以与应用104进行交互,尽管应用104 实际上不在用户计算系统404上运行。

图4B示出了其中客户端102包括用户计算系统404,但是不一定包括 网络402或服务器计算系统400的替换实施例。在图4B的示例中,应用 104的单独的副本安装在单独的用户计算系统404中。解决方案单独地安装 在用户计算系统404中的每一个系统中。

图5是示出了关于客户端102所使用的计算系统500的示例细节的框 图。在各实施例中,计算系统500可以是图4A的示例中所示出的服务器计 算系统400,图4B的示例中所示出的用户计算系统404,或客户端102所 使用的其他计算系统。

如图5的示例所示,计算系统500提供处理系统502和数据存储系统 504。应该理解,图5示出了计算系统500的简化视图。在现实中,计算系 统500包括许多其他逻辑和物理部件。

数据存储系统504存储表示数据库506和计算机可读指令的数据。当 处理系统502中的一个或多个处理单元运行这些计算机可读指令时,计算 机可读指令导致计算系统500提供应用104。

应用104包括一组解决方案模块510A到510N(统称为“解决方案模 块510”)。解决方案模块510中的每一个都包含计算机可读指令,计算机 可读指令,当由处理系统502运行时,导致应用104提供与解决方案相关 联的额外的功能。在各实施例中,解决方案模块510可以被以各种方式构 建。例如,在某些实施例中,解决方案模块510中的一个或多个包括已编 译的高级编程语言代码。示例高级编程语言包括C、C++、C#、Java等等。 在另一个示例中,解决方案模块510中的一个或多个包括诸如JavaScript、 Perl、VBScript等等之类的已解释编程语言代码。在再一个示例中,解决方 案模块510中的一个或多个可以包括工作流应用。工作流应用是从开始到 结束帮助跟踪和管理项目中的活动的一组程序。

在各实施例中,数据库506可以以各种方式实现。例如,在某些实施 例中,数据库506被实现为一个或多个平面文件的集合。在其他实施例中, 数据库506被实现为关系数据库。本说明书的其余部分将数据库506作为 关系数据库来讨论。然而,应该理解,在某些实施例中,数据库506不被 实现为关系数据库。

如图5的示例所示,数据库506包括解决方案表512、解决方案-组件 表514,以及组件特定的表516。表的示例类型包括以行和列为特征的数据 结构,数据占据由行-列交叉所形成的每一单元格。解决方案表512包括解 决方案集中的每一个解决方案的条目。解决方案的解决方案表512中的条 目可包括有关解决方案的各种信息。例如,解决方案表512中的条目可包 括解决方案的名称、解决方案的版本号、解决方案的描述,以及解决方案 的解决方案标识符。

解决方案-组件表514包括将解决方案与解决方案组件关联的条目。解 决方案组件是解决方案的一部分。解决方案的解决方案组件可以在解决方 案内扮演各种角色。例如,解决方案的解决方案组件可包括帮助跟踪和管 理公寓大楼的销售的工作流组件。在此示例中,解决方案的解决方案组件 还可以包括可使用户能够输入涉及公寓大楼的销售的信息的一组表单组 件。此外,在此示例中,解决方案的解决方案组件可包括指定要应用于UI 组件110的控件条带的更改的控件条带组件。

解决方案-组件表514中的每一条目都包括解决方案标识符字段和组件 标识符字段。解决方案标识符字段表示解决方案的解决方案标识符。组件 标识符字段指示解决方案的解决方案组件的标识符。解决方案-组件表514 可在解决方案标识符字段中包括具有相同解决方案标识符的多个条目。如 此,解决方案-组件表514可以指定解决方案的每一个解决方案组件的组件 标识符。

组件特定的表516包括包含特定类型的解决方案组件所特定的信息的 条目。虽然为简单起见在图5的示例中只示出了单个组件特定的表516,但 是,数据库506可包括安装在应用104中的解决方案所使用的每一种类型 的解决方案组件的单独的组件特定的表。

例如,组件特定的表516可包括修改UI组件110的条带组件的组件所 特定的信息。在此示例中,组件特定的表516中的每一条目都具有组件标 识符字段和更改列表字段。在此示例中,组件标识符字段指定组件标识符。 如此,应用104可以将解决方案-组件表514中的条目与组件特定的表516 中的条目相关联。在此示例中,更改列表字段指定更改列表。如在本说明 书中别处所比较详细地描述的,更改列表是一组更改项。更改项中的每一 个都指定要应用于定义UI组件110的版本的接口定义的更改。对UI组件 110的修改可以由解决方案的更改列表中的解决方案来提供。

在另一个示例中,组件特定的表516可包括表单特定的信息。在此示 例中,组件特定的表516中的每一条目都具有组件标识符字段和差异描述 符字段。组件标识符字段指定组件标识符。差异描述符字段包含差异描述 符。如在本说明书中别处比较详细地描述的,差异描述符是表示源接口定 义和目的地接口定义之间的差异的文档。对UI组件110的修改可以由解决 方案的差异描述符中的解决方案来提供。

图6是示出了安装具有更改列表的解决方案的示例操作600的流程图。 如图6的示例所示,提供自定义的接口定义(602)。自定义的接口定义对 向其中应用了客户端自定义的UI组件110的版本进行定义。另外,应用104 还将自定义更改列表存储在数据库506中(604)。自定义更改列表表达客 户端自定义。自定义更改列表包括与对UI组件110的客户端自定义相关联 的一组更改项。每一更改项都指定要应用于接口定义的更改。例如,更改 列表可包括指定特定控件将被隐藏的更改项。在另一个示例中,更改列表 可包括指定特定元件将被添加的更改项。在再一个示例中,更改列表可包 括指定特定元件的标记将被更改的更改项。每当客户端102自定义UI组件 110时,应用104可以更新自定义更改列表中的更改项。

更改列表中的更改项可以指代基本接口定义(即,由基本解决方案202 所提供的接口定义)中的元件。此外,更改列表中的更改项可以指代修改 的接口定义中的元件。例如,新的解决方案可以构建在另一个解决方案之 上。在此示例中,其他解决方案的更改列表中的更改项可以指定给定元件 将被添加到UI组件110中。在此示例中,新的解决方案的更改列表中的更 改项可以指定给定元件将被隐藏。

下面是示例更改列表。此示例更改列表只包括通过“CustomAction” 标记表示的单个更改项。此更改项将新按钮添加到控件条带元件 ″Mscrm.Form.{!EntityLogicalName}.MainTab.Save.Controls._children″。定 义新按钮的XML代码通过“按钮”标记来表示。

在某些实施例中,客户端102可以导出用于安装在其他计算系统上的 客户端自定义。在某些实施例中,这可以通过将自定义更改列表提供给其 他计算系统来完成。例如,在图4B的示例中,可以在用户计算系统404A 中创建自定义更改列表,然后,将其提供给用户计算系统404B到404N。 如此,用户计算系统404B到404N可以具有与用户计算系统404A相同的 客户端自定义。

随后,应用104接收新的解决方案(606)。在各实施例中,应用104 可以以各种方式接收新的解决方案。例如,应用104可以从一个或多个光 盘、磁盘、固态存储器设备,或其他计算机可读取的数据存储介质接收新 的解决方案。在另一个示例中,应用104可以从有线或无线网络连接接收 新的解决方案。新的解决方案包括一组解决方案组件。新的解决方案的解 决方案组件可包括一个或多个软件模块和新的解决方案的更改列表。对UI 组件110的修改可以由新的解决方案的更改列表中的新的解决方案来提供。

在接收到新的解决方案之后,应用104安装新的解决方案的软件模块 (608)。新的解决方案的软件模块是计算机可读指令的集合,计算机可读 指令,当由处理系统500运行时,导致应用104提供额外的功能。例如, 软件模块可以是一组导致应用104包括将对医生的办公室有用的特征的计 算机可读指令。在各种实施例中,应用104执行安装新的解决方案的软件 模块的各种动作。例如,在图5的示例实施例中,应用104生成新的解决 方案的解决方案表512中的新条目,然后,生成新的解决方案的软件模块 的解决方案-组件表514中的新条目。如此,应用104可以使用数据库506 来发现新的解决方案的软件模块。

接下来,应用104存储新的解决方案的更改列表(610)。在各实施例 中,应用104以各种方式来存储新的解决方案的更改列表。例如,在图5 的示例实施例中,应用104创建解决方案-组件表514中的新条目,以及组 件特定的表516中的新条目。解决方案-组件表514中的条目指定新的解决 方案的标识符和组件标识符。组件特定的表516中的此条目指定此组件标 识符和新的解决方案的更改列表。

类似于自定义更改列表,新的解决方案的更改列表包括一组更改项。 每一更改项都指定要应用于接口定义的更改。例如,新的解决方案的更改 列表可包括指定特定控件将被隐藏的更改项。在另一个示例中,新的解决 方案的更改列表可包括指定特定元件将被添加的更改项。在再一个示例中, 新的解决方案的更改列表可包括指定特定元件的标记将被更改的更改项。

在存储新的解决方案的更改列表之后,应用104通过将由新的解决方 案的更改列表所指定的更改应用到非自定义的接口定义来生成新的非自定 义的接口定义(612)。非自定义的接口定义是定义通过将解决方案所提供 的修改应用到UI组件110的基本版本所产生的UI组件110的版本的接口 定义。在图6的上下文中,非自定义的接口定义是通过按照受管理的解决 方案被安装的顺序将受管理的解决方案更改列表中的每一个中的更改应用 到基本接口定义所生成的接口定义。例如,如果新的解决方案的更改列表 包括指示一个按钮将被添加到UI组件110的更改项,则应用104修改非自 定义的接口定义,以便非自定义的接口定义对包括按钮的UI组件110的版 本进行定义。

为将由更改列表所指定的更改应用到接口定义,应用104扫描更改列 表中的更改项。对于更改列表中的指示向另一个元件添加元件的每一个更 改项,应用104确定接口定义中是否存在其他元件。如果接口定义中不存 在其他元件,则应用104将添加的元件插入到UI组件110的“孤立”元件 部分中。如果接口定义中存在其他元件,则应用104将添加的元件添加到 其他元件中。对于更改列表中的指示删除元件的每一个更改项,如果所指 出的元件位于接口定义中,则应用104删除所指出的元件。对于更改列表 中的指示修改元件的每一个更改项,如果所指出的元件位于接口定义中, 则应用104修改以更改项所指出的方式修改所指出的元件。

在应用由新的解决方案的更改列表所指定的更改之后,应用104通过 将由自定义更改列表所指定的更改应用到新的非自定义的接口定义来生成 新的自定义的接口定义(614)。例如,自定义更改列表可包括指出一个按 钮将被隐藏的更改项。此外,在此示例中,按钮在由新的非自定义的接口 定义所定义的UI组件110的版本中不被隐藏。在此示例中,应用104修改 新的非自定义的接口定义,以便按钮在由新的自定义的接口定义所定义的 UI组件110的版本中被隐藏。

在生成新的自定义的接口定义之后,应用104显示由新的自定义的接 口定义所定义的UI组件110的版本(616)。由新的自定义的接口定义所 定义的UI组件110的版本此处被称为UI组件110的新的自定义的版本。 在各实施例中,应用104以各种方式显示UI组件110的新自定义的版本。 例如,如果应用104在服务器计算系统400上执行,如图4A的示例所示, 则应用104通过将表示UI组件110的新的自定义的版本的数据发送到用户 计算系统404,来显示UI组件110的新的自定义的版本。在另一个示例中, 如果应用104在用户计算系统404中的一个上执行,如图4B的示例所示, 则应用104可以使用附接到用户计算系统的显示设备来显示UI组件110的 新的自定义的版本。

如上文所讨论的,新的解决方案的更改列表是在安装新的解决方案之 前存储的。此外,在应用由新的解决方案的更改列表所指定的更改之后, 应用104自动地应用由自定义更改列表所指定的更改。因此,当安装新的 解决方案时,客户端102可能不需要对UI组件110手动应用客户端自定义。

图7是示出了卸载具有更改列表的解决方案的示例操作700的流程图。 如图7的示例所示,应用104存储自定义更改列表(702)。自定义更改列 表包括与对UI组件110的客户端自定义相关联的一组更改项。

随后,应用104接收卸载解决方案集中的给定解决方案的输入(704)。 在各种实施例中,应用104可以以各种方式接收卸载给定解决方案的输入。 例如,在某些实施例中,UI组件110提供允许客户端102选择用于卸载的 解决方案的特征。在另一个示例中,客户端102可以在命令行界面中输入 卸载给定解决方案的命令。在再一个示例中,客户端102可以通过从存储 位置移除与给定解决方案相关联的一个或多个文件来卸载给定解决方案。

响应于接收到卸载给定解决方案的输入,应用104卸载给定解决方案 的软件模块(706)。在各种实施例中,应用104可以执行卸载给定解决方 案的软件模块的各种动作。例如,在某些实施例中,应用104可以通过删 除包含与给定解决方案相关的计算机可读指令的一个或多个文件,来卸载 给定解决方案的软件模块。在另一个示例中,应用104可以重新配置应用 104的设置,以便跳过与给定解决方案相关的计算机可读指令。

应用104通过按照其余解决方案的安装的顺序将其余解决方案的更改 列表中的更改应用到基本接口定义,来生成新的非自定义的接口定义 (708)。其余的解决方案是解决方案集中的除给定解决方案以外的解决方 案。为应用由其余解决方案的更改列表所指定的更改,应用104将由第一 个安装的其余解决方案的更改列表所指定的更改应用到基本接口定义,从 而生成修改的接口定义。然后,应用104将由第二个安装的其余解决方案 的更改列表所指定的更改应用到修改的接口定义,从而生成进一步修改的 接口定义。对于解决方案集中的除给定解决方案以外的每一个解决方案, 应用104持续以此方式应用更改。例如,在解决方案集中可以有三个受管 理的解决方案。在此示例中,第一受管理的解决方案是首先安装的,第二 受管理的解决方案是第二个安装的,而第三受管理的解决方案是第三个安 装的。在此示例中,第二受管理的解决方案将被卸载。在此示例中,应用 104首先将由第一解决方案的更改列表所指定的更改应用到基本接口定义, 导致修改的接口定义。在此示例中,应用104将由第三解决方案的更改列 表所指定的更改应用到修改的接口定义,导致新的非自定义的接口定义。

在生成新的非自定义的接口定义之后,应用104通过将由自定义更改 列表所指定的更改应用到新的非自定义的接口定义来生成新的自定义的接 口定义(710)。在生成新的自定义的接口定义之后,应用104显示由新的 自定义的接口定义所定义的UI组件110的版本(712)。如上文所讨论的, 自定义解决方案的更改列表在卸载给定解决方案之前被存储。此外,在重 新应用由除被卸载的解决方案以外的解决方案的更改列表所指定的更改之 后,应用104自动地重新应用由自定义解决方案的更改列表所指定的更改。 因此,当卸载给定解决方案时,客户端102可能不需要对UI组件110手动 应用客户端自定义。

图8是示出了更新具有更改列表的解决方案的示例操作800的流程图。 如图8的示例所示,应用104存储自定义更改列表(802)。自定义更改列 表包括与对UI组件110的客户端自定义相关联的一组更改项。

随后,应用104接收解决方案集中的给定解决方案的更新的版本 (804)。给定解决方案的更新的版本可包括更新的软件模块和/或更新的更 改列表。例如,给定解决方案的更新的版本可以向给定解决方案提供额外 的功能,或纠正给定解决方案的前面的版本中的编程错误。

在接收到给定解决方案的更新的版本之后,应用104安装给定解决方 案的更新的版本的软件模块(806)。当应用104安装给定解决方案的更新 的版本的软件模块时,应用104替换给定解决方案的某些或全部现有的软 件模块。此外,在接收到给定解决方案的更新的版本之后,应用104存储 给定解决方案的更新的版本的更改列表(808)。在某些实施例中,应用104 通过更新组件特定的表516中的包含给定解决方案的更改列表的前面的版 本的条目,来存储给定解决方案的更新的版本的更改列表。

然后,应用104通过将由较早的更改列表所指定的更改重新应用到基 本接口定义来生成修改的接口定义(810)。较早的更改列表是解决方案集 中的在给定解决方案之前安装的每一解决方案的更改列表。较早的更改列 表中的更改是按照在给定解决方案之前安装的解决方案的安装顺序应用 的。然后,应用104通过将由给定解决方案的更新的更改列表所指定的更 改应用到修改的接口定义,来生成进一步修改的接口定义(812)。在生成 进一步修改的接口定义之后,应用104通过将由较晚的更改列表所指定的 更改应用到进一步修改的接口定义,来生成新的非自定义的接口定义 (814)。较晚的更改列表是解决方案集中的在给定解决方案之后安装的解 决方案的更改列表。较晚的更改列表按照在给定解决方案之后安装的解决 方案的安装顺序应用。

在生成新的非自定义的接口定义之后,应用104通过将由自定义更改 列表所指定的更改应用到新的非自定义的接口定义来生成新的自定义的接 口定义(816)。在生成新的自定义的接口定义之后,应用104显示由新的 自定义的接口定义所定义的UI组件110的版本(818)。如上文所讨论的, 自定义更改列表是在接收到给定解决方案的更新的版本之前存储的。此外, 在应用由受管理的解决方案的更改列表所指定的更改之后,应用104自动 地应用由自定义更改列表所指定的更改。因此,当接收到给定解决方案的 更新的版本时,客户端102可能不需要对UI组件110手动应用客户端自定 义。

图9是示出了安装具有差异描述符的解决方案的示例操作900的流程 图。如图9的示例所示,提供自定义的接口定义(902)。自定义的接口定 义对向其中应用了客户端自定义的UI组件110的版本进行定义。

随后,应用104接收新的解决方案(904)。新的解决方案包括一个或 多个组件。在各实施例中,应用104可以以各种方式接收新的解决方案。 例如,应用104可以从一个或多个光盘、磁盘、固态存储器设备,或其他 计算机可读取的数据存储介质接收新的解决方案。在另一个示例中,应用 104可以从有线或无线网络连接接收新的解决方案。

类似于在本说明书中别处所讨论的解决方案,新的解决方案包括一个 或多个解决方案组件。新的解决方案的解决方案组件可包括差异描述符。 差异描述符是表示源接口定义和目的地接口定义之间的差异的文档。在某 些实施例中,差异描述符可以省略源接口定义的某些部分。例如,在某些 实施例中,差异描述符可以省略源接口定义的不是不同于源接口定义的元 件的祖先元件的那些元件。

新的解决方案的差异描述符的目的地接口定义对ISV 106计划在安装 新的解决方案之后让UI组件110出现的UI组件110的版本进行定义。例 如,如果UI组件110是表单并且ISV 106计划让UI组件110包括额外字 段,则目的地接口定义将定义UI组件110包括额外的字段。

差异描述符可以表示与各种源接口定义的差异。例如,差异描述符可 以表示与UI组件110的基本接口定义的差异。在另一个示例中,给定解决 方案的差异描述符可以表示与当安装另一个解决方案时所生成的接口定义 的差异。

为表示源接口定义和目的地接口定义之间的差异,差异描述符包括指 出差异描述符中的元件与源接口定义中的对应的元件有何不同的更改属 性。更改属性可以指出一个元件已经被添加到源接口定义,一个元件已经 从源接口定义中移除,或源接口定义中的一个元件已经被修改。例如,新 的解决方案的差异描述符可包括源接口定义中不存在的元件。在此示例中, 元件包括指出已经添加了该元件的更改属性。在另一个示例中,新的解决 方案的差异描述符可包括源接口定义中存在的,但是在形成由新的解决方 案的差异描述符所定义的UI组件110的版本时没有使用的元件。在此示例 中,新的解决方案的差异描述符包括元件,但是元件包括指出该元件被移 除的更改属性。在此示例中,如果元件表示表单的一部分,则移除元件会 从UI组件110的新的解决方案的版本中移除该部分。在另一个示例中,新 的解决方案的差异描述符可包括源接口定义中存在的,但是其属性在新的 解决方案的差异描述符中不同的元件。在此示例中,元件包括指出已经修 改了该元件的更改属性。

下面是示例差异描述符的一部分。此示例差异描述符表示源接口描述 符和目的地接口描述符中所定义的表单的差异。定义表单的XML代码被封 闭在“form(表单)”元件之间。差异描述符包括定义表单内的选项卡的 “tab(选项卡)”元件。为了简洁起见,省略了闭合的“tab”元件。“tab” 元件包括具有“modified(已修改)”值的“solutionaction(解决方案动作)” 属性。“solutionaction”属性是指出“tab”元件与源接口定义相比已经修 改的更改属性。另外,差异描述符包括定义选项卡内的一部分的“section (部分)”元件。“section”标记包括带有“modified”值的“solutionaction” 属性。如此,差异描述符表示在目的地接口定义中,“section”标记与源 接口定义相比已修改。此外,示例差异描述符还包括定义该部分的行中的 单元格的“cell(单元格)”标记。“cell”标记包括具有“removed(已移 除)”值的“solutionaction”属性。如此,差异描述符表示在目的地接口定 义中,此“cell”标记已从源接口定义中移除。

在某些实施例中,客户端102可以导出用于安装在其他计算系统上的 客户端自定义。在某些这样的实施例中,这可以通过将自定义差异描述符 提供给其他计算系统来完成。例如,在图4B的示例中,可以在用户计算系 统404A中创建自定义差异描述符,然后,将其提供给用户计算系统404B 到404N。如此,用户计算系统404B到404N可以具有与用户计算系统404A 相同的客户端自定义。

在接收到新的解决方案之后,应用104安装新的解决方案的软件模块 (906)。新的解决方案的软件模块是计算机可读指令的集合,计算机可读 指令,当由处理系统500运行时,导致应用104提供额外的功能。

此外,在接收到新的解决方案之后,应用104还将新的解决方案的差 异描述符存储在数据库506中(908)。通过将新的解决方案的差异描述符 存储在数据库506中,当解决方案集将来再次被修改时,新的解决方案的 差异描述符可供应用104使用。

接下来,应用104生成非自定义的接口定义(910)。非自定义的接口 定义是定义通过将现有的受管理的解决方案所提供的修改应用到UI组件 110的基本版本所产生的UI组件110的版本的接口定义。在图9的上下文 中,非自定义的接口定义是通过按照受管理的解决方案被安装的顺序将受 管理的解决方案的差异描述符中的每一个应用到基本接口定义所生成的接 口定义。现有的解决方案是已经存在于解决方案集中的受管理的解决方案。 结果,非自定义的接口定义会定义在客户端自定义应用于UI组件110之前 的UI组件110的版本。

下列示例示出了生成非自定义的接口定义的过程。在此示例中,有三 个现有的解决方案。首先,应用104通过将第一个安装的现有的解决方案 的差异描述符应用到基本接口定义,来生成修改的接口定义。其次,应用 104通过将第二个安装的现有的解决方案的差异描述符应用到修改的接口 定义,来生成进一步修改的接口定义。第三,应用104通过将第三个安装 的现有的解决方案的差异描述符应用到进一步修改的接口定义,来生成非 自定义的接口定义。

在各实施例中,应用104执行将差异描述符应用到现有接口定义的各 种动作。例如,在某些实施例中,应用104通过将现有接口定义复制到新 接口定义中,来开始将差异描述符应用到现有接口定义的过程。然后,应 用104扫描差异描述符中的具有更改属性的元件。当应用104检测到差异 描述符中的具有更改属性的元件时,应用104确定更改属性是否指出添加、 删除或更改了元件。

如果更改属性指出添加了元件,则应用104标识最近的共同的祖先元 件。接口定义和差异描述符中的元件被组织成元件层次结构。当沿着来自 添加的元件的差异描述符的元件层次结构向上前进时,最近的共同祖先元 件是接口定义中的对应于添加的元件的祖先元件的第一元件。在标识最近 的共同祖先元件之后,应用104将添加的元件插入到新接口定义中,作为 元件层次结构中的最近的共同祖先元件的子。

如果更改属性指出删除了元件,则应用104确定新接口定义是否包括 对应的元件。对应的元件是新接口定义中的对应于已删除的元件的元件。 如果新接口定义不包括对应的元件,则应用104不更改新接口定义。如果 新接口定义包括对应的元件,则应用104从新接口定义中移除对应的元件。 在某些实施例中,接口定义可以指出无法被删除的受保护的元件。当差异 描述符应用于这样的接口定义时,应用104忽略差异描述符中的与这样的 受保护的元件相关的差异。

如果更改属性指出更改了元件,则应用104确定新接口定义是否包括 对应的元件。对应的元件是新接口定义中的对应于已更改的元件的元件。 如果新接口定义不包括对应的元件,则应用104忽略已更改的元件。如果 新接口定义包括对应的元件,则应用104修改对应的元件的非更改属性, 以匹配已更改的元件的非更改属性。非更改属性是除更改属性以外的属性。 在某些实施例中,接口定义可以指出无法被更改的受保护的元件。当差异 描述符应用于这样的接口定义时,应用104忽略差异描述符中的与这样的 受保护的元件相关的差异。

当更改属性指出元件被修改时,可能会与以前应用于元件的修改有冲 突。例如,接口定义的初始版本包括表示表单中的容器的容器元件。容器 元件的列属性指定容器具有两个列。第一差异描述符表示与接口定义的初 始版本的差异。在第一差异描述符中,容器元件的列属性已经从2变为3。 此外,在第一差异描述符中,文本输入框被添加到容器的第三列中。第二 差异描述符表示与接口定义的初始版本的差异。在第二差异描述符中,列 属性已经从2变为1。因此,在由第一差异描述符所列出的差异和由第二差 异描述符所列出的差异之间有冲突。

应用104提供用于解决不同类型的冲突更改的冲突解决例程。例如, 在上文所提供的示例中,应用104可以提供用于解决与减少表单中的容器 中的列的数量相关的问题的冲突解决例程。在此示例中,冲突解决例程重 写新接口定义,以便容器中的诸如文本框和按钮之类的元件被重新分配到 容器的其余列中。例如,如果容器的列的数量从3减少到1,第二和第三列 中的元件被添加到其余列。在另一种情况下,如果容器的列的数量从3减 少到2,则第一、第二,以及第三列中的元件在第一和第二列之间被重新分 配,以便第一和第二列具有大致相同的元件数量。

在另一个示例中,UI组件110是一种选项列表。在此示例中,基本接 口定义包括定义选项列表中的每一项的项元件。每一项元件都包括标识项 元件的项标识符。在此示例中,受管理的解决方案可以向选项列表添加项 目,从选项列表中移除项,更改选项列表上的项的标记,对选项列表中的 项进行重新排序,或以其他方式修改选项列表。在此示例中,第一受管理 的解决方案的差异描述符指示带有项标识符“20”的新项被添加到由基本 接口定义所定义的选项列表中。此外,第二受管理的解决方案的差异描述 符还指示带有项标识符“20”的不同的项被添加到由基本接口定义所定义 的选项列表中。由于现在有两个带有项标识符“20”的项,因此,在第一 受管理的解决方案的差异描述符和第二受管理的解决方案的差异描述符之 间有冲突。

在此示例中,各种机制可用于选项列表项标识符之间的冲突。例如, ISV可以向由ISV所发布的解决方案所添加的选项列表项的项目标识符添 加发布者前缀。在此示例中,发布者前缀是从发布者前缀字符串散列的值。 在某些情况下,发布者前缀字符串是指定给发布受管理的解决方案的实体 的字符串。在此示例中,ISV 106的发布者前缀字符串可以是“publisherX (发布者X)”,发布者前缀可以是“63604”。在此示例中,由ISV 106 发布的解决方案所添加的选项列表项的项标识符可以是“6360400000001”、 “6360400000002”、“6360400000003”以此类推。此外,还给基本接口 定义和客户端自定义分配其他发布者前缀字符串。由于不同的发布者具有 不同的发布者前缀并且由于发布者前缀被添加到项标识符,因此,两个项 目标识符之间冲突的机率降低。

在再一个示例中,客户端自定义可以向站点图的一部分添加按钮。该 部分被受管理的解决方案添加到站点图。受管理的解决方案可以随后被卸 载。在此示例中,在客户端自定义添加按钮和受管理的解决方案的卸载移 除包含该按钮的部分之间有冲突。在此示例中,应用104重写定义站点图 的接口定义以在站点图的“孤立”部分包括按钮。站点图的“孤立”部分 包括不属于站点图的任何其他部分的元件。

在生成非自定义的接口定义之后,应用104生成自定义差异描述符 (912)。自定义差异描述符是表示自定义的接口定义和非自定义的接口定 义之间的差的文档。例如,UI组件110可以是表单,客户端102可以自定 义UI组件110以隐藏表单的原本将是UI组件110中可见的部分。在此示 例中,自定义差异描述符将表示该部分被隐藏。在生成自定义差异描述符 之后,应用104存储自定义差异描述符(914)。接下来,应用104通过将 新的解决方案的差异描述符应用到非自定义的接口定义来生成新的非自定 义的接口定义(916)。

在生成新的非自定义的接口定义之后,应用104通过将自定义差异描 述符应用到新的非自定义的接口定义来生成新的自定义的接口定义(918)。 然后,应用104显示由新的自定义的接口定义所定义的UI组件110的自定 义的版本(920)。

如上文所讨论的,自定义差异描述符是在改变非自定义的接口定义之 前生成和存储的。此外,在应用现有差异描述符之后,应用104自动地应 用自定义差异描述符。因此,当接收到新的解决方案时,客户端102可能 不需要对UI组件110手动应用客户端自定义。

图10是示出了卸载具有差异描述符的解决方案的示例操作1000的流 程图。如图10的示例所示,应用104提供自定义的接口定义(1002)。自 定义的接口定义对向其中应用了客户端自定义的UI组件110的版本进行定 义。随后,应用104接收卸载解决方案集中的给定解决方案的输入(1004)。

响应于接收到卸载给定解决方案的输入,应用104卸载给定解决方案 的软件模块(1006)。在各种实施例中,应用104可以执行卸载给定解决 方案的软件模块的各种动作。例如,在某些实施例中,应用104可以通过 删除与给定解决方案相关的计算机可读指令,来卸载给定解决方案的软件 模块。在另一个示例中,应用104可以重新配置应用104的设置,以便跳 过与给定解决方案相关的计算机可读指令。

接下来,应用104生成非自定义的接口定义(1008)。类似于图9的 示例中所讨论的非自定义的接口定义,非自定义的接口定义是通过将现有 差异描述符应用到应用104的基本接口定义所产生的接口定义。应用104 按照现有解决方案被安装的顺序来应用现有的差异描述符。

然后,应用104生成自定义差异描述符(1010)。自定义差异描述符 是表示自定义的接口定义和非自定义的接口定义之间的差异的文档。在生 成自定义差异描述符之后,应用104存储自定义接口定义(1012)。

在存储自定义差异描述符之后,应用104通过将其余的接口定义重新 应用到基本接口定义来生成新的非自定义的接口定义(1014)。其余接口 定义是对于其余的解决方案的接口定义。其余的解决方案是解决方案集中 的除给定解决方案以外的解决方案。应用104按照其余解决方案被安装的 顺序来应用其余接口定义。

在生成新的非自定义的接口定义之后,应用104通过将自定义差异描 述符应用到新的非自定义的接口定义来生成新的自定义的接口定义 (1016)。然后,应用104显示由新的自定义的接口定义所定义的UI组件 110的版本(1018)。

如上文所讨论的,自定义差异描述符是在改变非自定义的接口定义之 前生成和存储的。此外,在应用其余差异描述符之后,应用104自动地应 用自定义差异描述符。因此,当卸载解决方案时,客户端102可能不需要 对UI组件110手动应用客户端自定义。

图11是示出了更新包括差异描述符的解决方案的示例操作1100的流 程图。如图11的示例所示,应用104提供自定义的接口定义(1102)。自 定义的接口定义对向其中应用了客户端自定义的UI组件110的版本进行定 义。随后,应用104接收给定解决方案的更新的版本(1104)。给定解决 方案的更新版本的解决方案组件可包括软件模块和差异描述符。

在接收到给定解决方案的更新版本之后,应用104生成非自定义的接 口定义(1106)。类似于上文参考图9和10的示例所讨论的非自定义的接 口定义,非自定义的接口定义是通过将解决方案集中的解决方案所提供的 修改应用到UI组件110的基本接口定义所产生的接口定义。应用104按照 解决方案被安装的顺序来应用现有的差异描述符。

接下来,应用104生成自定义差异描述符(1108)。自定义差异描述 符是表示自定义的接口定义和非自定义的接口定义之间的差异的文档。在 生成自定义差异描述符之后,应用104存储自定义差异描述符(1110)。

接下来,应用104安装给定解决方案的更新版本的软件模块(1112)。 然后,应用104存储给定解决方案的更新版本的差异描述符(1114)。通 过存储给定解决方案的更新版本的差异描述符,当解决方案集将来再次被 修改时,给定解决方案的更新版本的差异描述符可供应用104使用。

然后,应用104通过将较早的差异描述符应用到基本接口定义来生成 修改的接口定义(1116)。较早的差异描述符是以前安装的解决方案的差 异描述符。以前安装的解决方案是解决方案集中的在最初安装给定解决方 案之前安装的解决方案。应用104按照以前安装的解决方案被安装的顺序 来应用较早的差异描述符。

然后,应用104通过将给定解决方案的更新版本的差异描述符应用到 修改的接口定义,来生成进一步修改的接口定义(1118)。在生成进一步 修改的接口定义之后,应用104通过将较晚的差异描述符应用到进一步修 改的接口定义,来生成新的非自定义的接口定义(1120)。较晚的差异描 述符是以后安装的解决方案的差异描述符。以后安装的解决方案是解决方 案集中的比给定解决方案安装得晚的解决方案。应用104按照以后安装的 解决方案被安装的顺序来应用较晚的差异描述符。

在应用104生成新的非自定义的接口定义之后,应用104通过将自定 义差异描述符应用到新的非自定义的接口定义来生成新的自定义的接口定 义(1122)。在应用104生成新的自定义的接口定义之后,应用104显示 由新的自定义的接口定义所定义的UI组件110的版本(1122)。

如上文所讨论的,自定义差异描述符是在接收到给定解决方案的更新 版本之前生成和存储的。此外,在应用较早的差异描述符、给定解决方案 的更新版本的差异描述符,以及较晚的差异描述符之后,应用104自动地 应用自定义差异描述符。因此,当接收到更新的解决方案时,客户端102 可能不需要对UI组件110手动应用客户端自定义。

图12是示出了示例计算设备1200的框图。在某些实施例中,服务器 计算系统400和/或用户计算系统404是使用一个或多个类似计算设备1200 的计算设备来实现的。应该理解,在其他实施例中,服务器计算系统400 和/或用户计算系统404使用具有除图12的示例中所示出的那些硬件组件以 外的硬件组件的计算设备来实现。

在不同的实施例中,计算设备是以不同的方式实现的。例如,在图12 的示例中,计算设备1200包括存储器1202、处理系统1204、辅助存储设 备1206、网络接口卡1208、视频接口1210、显示设备1212、外部组件接 口1214、外部存储设备1216、输入设备1218、打印机1220、以及通信介 质1222。在其他实施例中,计算设备是使用多一些或少一些的硬件组件来 实现的。例如,在另一示例实施例中,计算设备不包括视频接口、显示设 备、外部存储设备或输入设备。

如这里所使用的术语“计算机可读介质”可以包括计算机存储介质。 计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序 模块、或其他数据等信息的任何方法或技术实现的易失性和非易失性、可 移动和不可移动介质。存储器1202包括能够存储数据和/或指令的一个或多 个计算机存储介质。如在本文档中所使用的,计算机存储介质是一种存储 计算设备可读的数据和/或软件指令的设备或制品。在不同的实施例中,存 储器1202是以不同的方式实现的。例如,在各实施例中,存储器1202是 使用各种类型的计算机存储介质来实现的。计算机存储介质示例类型包括, 但不仅限于,动态随机存取存储器(DRAM)、双倍数据速率同步动态随 机存取存储器(DDR SDRAM)、延迟缩短的DRAM、DDR2SDRAM、DDR3 SDRAM、Rambus RAM、固态存储器、闪存、只读存储器(ROM)、电可 擦可编程只读存储器,及其他类型的存储数据的设备和/或制品。

如这里所使用的术语“计算机可读介质”还包括通信介质。通信介质 由诸如载波或其他传输机制等已调制数据信号中的计算机可读指令、数据 结构、程序模块或其他数据来体现,并包括任何信息传递介质。术语“已 调制数据信号”可以描述以对该信号中的信息进行编码的方式设定或者改 变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线 网络或直接线连接等有线介质,以及诸如声学、射频(RF)、红外线和其 他无线介质等无线介质。

处理系统1204包括有选择地执行软件指令的一个或多个物理集成电 路。在各实施例中,处理系统1204是以各种方式实现的。例如,在一个示 例实施例中,处理系统1204被实现为一个或多个处理核。例如,在此示例 实施例中,处理系统1204可以被实现为一个或多个Intel Core 2微处理器。 在另一示例实施例中,处理系统1204被实现为一个或多个单独的微处理器。 在再一个示例实施例中,处理系统1204被实现为提供专用功能的ASIC。 在再一个示例实施例中,处理系统1204通过使用ASIC并通过执行软件指 令来提供专用功能。

在不同的实施例中,处理系统1204执行不同的指令集中的软件指令。 例如,在各实施例中,处理系统1204执行诸如x86指令集、POWER指令 集、RISC指令集、SPARC指令集、IA-64指令集、MIPS指令集之类的指 令集和/或其他指令集中的软件指令。

辅助存储设备1206包括一个或多个计算机存储介质。辅助存储设备 1206存储不能被处理系统1204直接访问的数据和软件指令。换言之,处理 系统1204执行输入/输出操作以从辅助存储设备1206检索数据和/或软件指 令。在各实施例中,辅助存储设备1206是通过各种类型的计算机存储介质 来实现的。例如,辅助存储器设备1206可以通过一个或多个磁盘、磁带驱 动器、CD-ROM光盘、DVD-ROM光盘、蓝光光盘、固态存储设备、Bernoulli 盒式磁带,和/或其他类型的计算机存储介质来实现。

网络接口卡1208使计算设备1200能从计算机通信网络接收数据并向 其发送数据。在不同的实施例中,网络接口卡1208是以不同的方式实现的。 例如,在各实施例中,网络接口卡1208被实现为以太网接口、令牌环网络 接口、光纤网络接口、无线网络接口(例如,WiFi、WiMax等等),或另 一种类型的网络接口。

视频接口1210使计算设备1200能向显示设备1212输出视频信息。在 不同的实施例中,视频接口1210是以不同的方式实现的。例如,在一个示 例实施例中,视频接口1210被集成到计算设备1200的主板中。在另一示 例实施例中,视频接口1210是视频扩展卡。视频扩展卡的示例类型包括 Advanced Micro Devices有限公司(位于加利福尼亚州的Sunnyvale市)所 制造的Radeon图形卡,由Nvidia公司(位于加利福尼亚州的Santa Clara 市)所制造的Geforce图形卡,及其他类型的图形卡。

在各实施例中,显示设备1212被实现为各种类型的显示设备。显示设 备的示例类型包括,但不仅限于,阴极射线管显示器、LCD显示面板、等 离子屏幕显示面板、触敏显示面板、LED屏幕、投影仪,及其他类型的显 示设备。在各实施例中,视频接口1210以各种方式与显示设备1212通信。 例如,在各实施例中,视频接口1210通过通用串行总线(USB)连接器、 VGA连接器、数字可视接口(DVI)连接器、S-Video(S视频)连接器、 高清晰度多媒体接口(HDMI)接口、DisplayPort(显示端口)连接器,或 其他类型的连接器来与显示设备1212进行通信。

外部组件接口1214使计算设备1200能与外部设备进行通信。在各实 施例中,外部组件接口1214是以不同的方式实现的。例如,在一个示例实 施例中,外部组件接口1214是USB接口。在其他示例实施例中,计算设 备1200是FireWire(火线)接口、串行端口接口、并行端口接口、PS/2接 口,和/或使计算设备1200能与外部组件进行通信的另一种类型的接口。

在不同的实施例中,外部组件接口1214使计算组件1200能与不同的 外部组件进行通信。例如,在图12的示例中,外部组件接口1214使计算 设备1200能与外部存储设备1216、输入设备1218,以及打印机1220进行 通信。在其他实施例中,外部组件接口1214使计算组件1200能与多一些 或少一些的外部组件进行通信。外部组件的其他示例类型包括,但不仅限 于,扬声器、电话充电插孔、调制解调器、媒体播放器对接器,其他计算 设备、扫描仪、数码相机、指纹读取器、及其他可以连接到计算设备1200 的设备。

外部存储设备1216是包括一个或多个计算机可读数据存储介质的外 部组件。计算设备1200的不同的实现与不同类型的外部存储设备进行连接。 外部存储设备的示例类型包括,但不仅限于,磁带驱动器、闪存模块、磁 盘驱动器、光盘驱动器、闪存单元、zip磁盘驱动器、光学点播机、及其他 类型的包括一个或多个计算机存储介质的设备。输入设备1218是向计算设 备1200的提供用户输入的外部组件。计算设备1200的不同的实现与不同 类型的输入设备进行连接。输入设备的示例类型包括,但不仅限于,键盘、 鼠标、轨迹球、指示笔输入设备、键盘、话筒、游戏杆、触敏显示屏幕, 及其他类型的向计算设备1200提供用户输入的设备。打印机1220是向纸 张打印数据的外部设备。计算设备1200的不同的实现与不同类型的打印机 进行连接。打印机的示例类型包括,但不仅限于,激光打印机、喷墨打印 机、照片打印机、复印机、传真机、收据打印机、点阵打印机,或其他类 型的向纸张打印数据的设备。

通信介质1222促进计算设备1200的硬件组件之间的通信。在不同的 实施例中,通信介质1222促进计算设备1200的不同的组件之间的通信。 例如,在图12的示例中,通信介质1222促进存储器1202、处理系统1204、 辅助存储设备1206、网络接口卡1208、视频接口1210,以及外部组件接口 1214之间的通信。在计算设备1200的不同的实现中,通信介质1222是以 不同的方式实现的。例如,在计算设备1200的不同的实现中,通信介质1222 可以被实现为PCI总线、PCI Express总线、加速图形端口(AGP)总线、 Infiniband互连、串行高级技术附接(ATA)互连、并行ATA互连、光纤 信道互连、USB总线,小型计算系统接口(SCSI)接口,或另一种类型的 通信介质。

存储器1202存储各种类型的数据和/或软件指令。例如,在图12的示 例中,存储器1202存储基本输入/输出系统(BIOS)1224、操作系统1226、 应用软件1228,以及程序数据1230。BIOS 1224包括一组软件指令,这些 软件指令,在由处理系统1204执行时,导致计算设备1200启动。操作系 统1226包括一组软件指令,这些软件指令,在由处理系统1204执行时, 导致计算设备1200提供协调计算设备1200的活动和资源共享的操作系统。 操作系统的示例类型包括,但不仅限于,MicrosoftLinux、Unix、 Apple OS X、Apple OS X iPhone、Palm webOS、Palm OS、Google Chrome OS、 Google Android OS,等等。应用软件1228包括一组软件指令,这些软件指 令,在由处理系统1204执行时,导致计算设备1200向计算设备1200的用 户提供应用。程序数据1230是由应用软件1228所生成的和/或使用的数据。

上文所描述的各实施例是只作为说明来提供的,并且不应该被解释为 限制。本领域的技术人员将轻松地认识到,在不遵循此处所示出和描述的 示例实施例和应用的情况下可以进行各种修改和更改。例如,图形所示出 的操作只是示例。在各实施例中,类似的操作可包括比图形中所示出的那 些多一些或少一些的步骤。此外,在其他实施例中,类似的操作可包括图 形中所示出的操作的不同的顺序的步骤。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号