专利名称:在保护用户自定义的情况下合并对用户界面组件的修改的制作方法
在保护用户自定义的情况下合并对用户界面组件的修改背景企业经常需要针对它们的特定行业定制的软件系统。例如,牙科医生可能需要帮 助预定约会并向保险公司发送账单的软件系统。在另一个示例中,房地产经纪人可能需要帮助维持客户联系人并帮助生成购买合同的软件系统。这些企业特定的软件系统中有许多需要相同的一般类型的功能。在前面的示例中,牙科医生的软件系统和房地产经纪人的软件系统可能需要数据库服务、Web访问服务,以及客户联系人管理服务。服务是向其他程序提供支持的程序或例程。为每个企业特定的软件系统的这些共同的类型的功能重新创建软件代码既费时又费钱。因此,开发了平台应用。平台应用提供这些共同的类型的功能。例如,平台应用可以提供数据库服务和基本客户联系人管理服务。然后,其他软件开发人员使用这样的平台应用作为在其上开发软件“解决方案”的平台。这些解决方案可以向平台应用添加功能,以便解决特定行业的企业的需求。例如,一个解决方案可以使用平台应用所提供的客户联系人管理服务和数据库服务来创建针对牙科专业人员的需求定制的解决方案。企业可以在平台应用上安装一个或多个这样的解决方案。除向平台应用添加功能之外,解决方案还可以修改平台应用的用户界面。例如,解决方案可以向平台应用的用户界面添加按钮或表单。用户界面是程序的用户与其进行交互的一部分。此外,在某些情况下,企业能够进一步自定义平台应用的用户界面。例如,企业可以自定义平台应用的用户界面以隐藏按钮或重新标记菜单项。在另一个示例中,企业可以自定义平台应用的用户界面以添加字段或从表单中移除字段。通常,每当企业安装、卸载或更新构建在平台应用上的解决方案时,这样的自定义都会丢失。由于企业会花费相当大的时间和资源来对用户界面进行自定义,因此,重新应用自定义会不方便,并且昂贵。概述应用显示用户界面(UI)组件。客户端可以将自定义应用到此Π组件。在客户端将自定义应用到UI组件之后,客户端修改包含修改UI组件的解决方案的解决方案集。在各种实施例中,客户端可以以各种方式修改解决方案集。例如,客户端可以向解决方案集添加解决方案,从解决方案集中移除解决方案,更新已经在解决方案集中的解决方案,或以其他方式修改解决方案集。在客户端修改解决方案集之后,应用显示Π组件的新版本。解决方案所提供的修改被应用于UI组件的新版本。另外,自定义保持应用于UI组件,无需客户端手动将自定义重新应用到UI组件。提供本发明内容是为了介绍一些概念。这些概念在以下详细描述中进一步描述。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。附图简述图I是示出了示例系统的框图。
图2是示出了示例解决方案集的框图。图3是示出了由解决方案集中的解决方案对应用的用户界面组件所引起的示例改变的框图。图4A和4B是示出了关于客户端的示例细节的框图。图5是示出了客户端所使用的示例计算系统的框图。图6是示出了安装具有更改列表的解决方案的示例操作的流程图。图7是示出了卸载具有更改列表的解决方案的示例操作的流程图。图8是示出了更新具有更改列表的解决方案的示例操作的流程图。图9是示出了安装具有差异描述符的解决方案的示例操作的流程图。
图10是示出了卸载具有差异描述符的解决方案的示例操作的流程图。图11是示出了更新具有差异描述符的解决方案的示例操作的流程图。图12是示出了示例计算设备的框图。详细描述图I是示出了示例系统100的框图。如图I的示例所示,系统100包括客户端102。客户端102是诸如企业实体(例如,企业、合伙企业、公司等等)、政府实体(例如,部门、局、机构等等)、非企业实体(例如,基金会、非盈利企业等等)之类的实体或个人。客户端102使用应用104。应用是被设计用于有助于执行特定任务的程序。在各实施例中,应用104可以是各种类型的应用。例如,在某些实施例中,应用104可以是诸如MICROSOFT DYNAMICS 应用之类的客户关系管理(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是一种选项列表。选项列表是用户可以从中选择的项的列表。在再一个不例中,Π组件110可以是一种控件条带组件。控件条带组件是其中一组工具栏被置于选项卡条中的选项卡上的Π组件。在再一个示例中,Π组件110是工具栏。工具栏是一行或一条激活功能的可点击的图标或按钮。在再一个示例中,Π组件110是站点图。站点图是到其他Π组件的链接的列表。例如,站点图可包括表单的列表或到与各种任务相关联的Π组件的链接的列表。在其他实施例中,Π组件110是应用104的完整的UI。解决方案108的安装可以以各种方式修改Π组件110。例如,Π组件110可以是一种表单。在此示例中,解决方案108的安装可以修改Π组件110以在表单中包括多一些或少一些字段,或重新排列表单中的字段。在另一个示例中,解决方案108的安装可以修改UI组件110,以包括额外的元件,诸如按钮、下拉框、文本输入字段、菜单、菜单项,或其他类型的控件。在图形用户界面中,控件是屏幕中的可以被用户操纵以执行动作的对象。元件是出现在用户界面中的东西,诸如文本、控件、图片、链接、区域、列、背景等等。在另一个示例中,解决方案108可以修改Π组件110,以从Π组件110中移除元件。在再一个示例中,解决方案108可以修改Π组件110,以改变Π组件110中的元件的内容或位置。在某些情况下,客户端102可能喜欢解决方案108所提供的额外的功能,但是可能不喜欢在安装解决方案108之后UI组件110的外观。例如,客户端102可能发现表单中的一个特定字段在表单底部而不是在表单的顶部是不方便的。在另一个示例中,客户端102可能希望将其公司徽标放置在UI组件110中,以便使应用104显得像它仅仅为客户端102构建的。因此,应用104允许客户端102自定义Π组件110。例如,应用104允许客户端102隐藏UI组件110中的不需要的控件,更改UI组件110中的控件的名称或标记,重新排列UI组件110中的元件,向UI组件110中添加图像等等。除能够自定义应用104最初所提供的Π组件110的各方面之外,客户端102还可以自定义UI组件110的由一个或多个解决方案修改的各方面。例如,解决方案108可以向Π组件110添加额外的按钮。在此示例中,客户端102可能发现此额外的按钮不太有用,并可以自定义Π组件110,以隐藏此额外的按钮。在某些情况下,客户端102可以投入大量时间和资金来针对其特定需求自定义UI组件110。因此,如果每当客户端102修改安装的解决方案的集合(即,解决方案集)时客户端的对Π组件110的自定义都丢失的话,客户端102会感到灰心。例如,如果每当客户端102安装、更新或卸载解决方案时客户端的对Π组件110的自定义都会丢失,则会使人感到灰心。为避免再次手动对Π组件110应用自定义的需要,客户端102可以完全不安装额外的解决方案或可能对特定解决方案感到不敏感的(locked-in)。这可能会抑制对ISV 106和客户端102的损害的解决方案的市场。如本说明书所描述的,应用104显示Π组件110的自定义的版本。UI组件110的自定义的版本是向其中应用了客户端自定义的Π组件110的版本。在对解决方案集进行修改之后,应用104显示Π组件110的新的自定义的版本。Π组件110的新的自定义的版本是向其中应用了解决方案集中的解决方案所提供的修改的Π组件110的版本。此外,客户端自定义保持应用于Π组件110的修改的版本,无需手动将适用的客户端自定义应用到UI组件110。图2是示出了示例解决方案集200的框图。如图2的示例所示,解决方案集200包括基本解决方案202。基本解决方案202是应用104所提供的。在任何解决方案安装在应用104上之前,基本解决方案202提供应用104的初始功能。基本解决方案202提供基本接口定义。基本接口定义是包含定义Π组件110的基本版本的内容和布局的数据的文件。文件是信息的完整的、带名称的集合。Π组件110的基本版本是当没有解决方案安装在应用104上并且没有客户端自定义应用于UI组件110时显示的UI组件110的版本。为定义UI组件110的基本版本的内容和布局,基本接口定义包括描述Π组件110的基本版本的内容和布局的数据。例如,基本接口定义可包括表示哪些控件位于Π组件110中以及这些控件位于Π组件110内的什么地方的数据。在各实施例中,基本接口定义可以以各种方式来格式化。例如,在某些实施例中,基本接口定义被格式化为可扩展标记语言(XML)文件。在其他实施例中,基本接口定义被格式化为标准通用标记语言(SGML)文件。如图2的示例所示,解决方案集200还包括受管理的解决方案204和受管理的解决方案206。受管理的解决方案204和受管理的解决方案206是扩展基本解决方案202的功能的解决方案。例如,受:管理的解决方案204可以扩展基本解决方案202的功能以提供牙科诊所预约服务。在此示例中,受管理的解决方案206可以扩展受管理的解决方案204的功能,以使得牙科诊所职员能够为看牙病预约与保险公司进行结算。在本说明书中,受管理的解决方案204和206被称为“受管理的”解决方案,因为这些解决方案中的软件代码是由除客户端102以外的实体创建和维护的(即,管理)。例如,受管理的解决方案204和/或受管理的解决方案206可以由ISV 106或另一个ISV进行管理。当安装受管理的解决方案204时,通过将受管理的解决方案204所提供的修改应用到基本接口定义来创建修改的接口定义。修改的接口定义对Π组件110的修改的版本进行定义。例如,修改可以应用于基本接口定义,以便未包括在Π组件110的基本版本内的额外的元件被包括在UI组件110的修改的版本中,以便UI组件110的基本版本中的元件被隐藏在UI组件110的修改的版本中,UI组件110的基本版本中的元件在UI组件110的修改的版本中被重命名或重新定位,或以其他方式被修改。当安装受管理的解决方案206时,通过将受管理的解决方案206所提供的修改应用到修改的接口定义来创建进一步修改的接口定义。进一步修改的接口定义对Π组件110的进一步修改的版本进行定义。例如,额外的更改可以应用于修改的接口定义,以便元件被添加到UI组件110的修改的版本,Π组件110的修改的版本的元件被隐藏,或Π组件110的修改的版本的元件以别的方式被修改。此外,如图2的示例所示,解决方案集200包括自定义解决方案208。在概念上,自定义解决方案208表示对UI组件110的客户端自定义。当客户端102执行自定义UI组件110的动作时,通过将更改应用到进一步修改的接口定义来生成自定义的接口定义。自定义的接口定义对Π组件110的自定义的版本进行定义。例如,客户端自定义可以应用于UI组件110的进一步修改的版本,以便元件被添加到UI组件110的进一步修改的版本,UI组件Iio的进一步修改的版本的元件被隐藏,或Π组件110的进一步修改的版本的元件以别的方式被修改。在某些实施例中,应用110使用2008年12月10日提交的美国专利申请12/331,451号中所描述的类型的数据库系统来管理组件堆栈中的组件,该专利申请的全部内容以引用的方式并入本文中。图3是示出了由解决方案集200中的解决方案对Π组件110所引起的改变的框图。如图3的不例所不,基本解决方案202提供定义UI组件110的基本版本以包括按钮“S”的基本接口定义。受管理的解决方案204向基本接口定义提供修改。应用受管理的解决方案204所提供的修改导致定义包括按钮“A”的UI组件110的修改的版本的修改的接口定义。此外,受管理的解决方案206向修改的接口定义提供修改。应用受管理的解决方案206所提供的修改导致定义包括按钮“B”的UI组件110的进一步修改的版本的进一步修改的接口定义。自定义解决方案208向进一步修改的接口定义提供修改。应用自定义解决方案208所提供的修改导致定义其中按钮“B”被隐藏的UI组件110的最后的版本的最后的接口定乂。如图3的示例所示,Π组件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所发送的消息包括表示与Π组件110进行交互的请求的数据。用户计算系统404解释此数据,以向用户计算系统404的用户显示Π组件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包括一组解决方案模块5IOA到5ION (统称为“解决方案模块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包括将解决方案与解决方案组件关联的条目。解决方案组件是解决方案的一部分。解决方案的解决方案组件可以在解决方案内扮演各种角色。例如,解决方案的解决方案组件可包括帮助跟踪和管理公寓大楼的销售的工作流组件。在此示例中,解决方案的解决方案组件还可以包括可使用户能够输入涉及公寓大楼的销售的信息的一组表单组件。此外,在此示例中,解决方案的解决方案组件可包括指定要应用于Π组件110的控件条带的更改的控件条带组件。解决方案-组件表514中的每一条目都包括解决方案标识符字段和组件标识符字段。解决方案标识符字段表示解决方案的解决方案标识符。组件标识符字段指示解决方案的解决方案组件的标识符。解决方案-组件表514可在解决方案标识符字段中包括具有相同解决方案标识符的多个条目。如此,解决方案-组件表514可以指定解决方案的每一个解决方案组件的组件标识符。组件特定的表516包括包含特定类型的解决方案组件所特定的信息的条目。虽然为简单起见在图5的示例中只示出了单个组件特定的表516,但是,数据库506可包括安装在应用104中的解决方案所使用的每一种类型的解决方案组件的单独的组件特定的表。例如,组件特定的表516可包括修改UI组件110的条带组件的组件所特定的信息。在此示例中,组件特定的表516中的每一条目都具有组件标识符字段和更改列表字段。在此示例中,组件标识符字段指定组件标识符。如此,应用104可以将解决方案-组件表514中的条目与组件特定的表516中的条目相关联。在此示例中,更改列表字段指定更改列表。如在本说明书中别处所比较详细地描述的,更改列表是一组更改项。更改项中的每一个都指定要应用于定义Π组件110的版本的接口定义的更改。对Π组件110的修改可以由解决方案的更改列表中的解决方案来提供。在另一个示例中,组件特定的表516可包括表单特定的信息。在此示例中,组件特定的表516中的每一条目都具有组件标识符字段和差异描述符字段。组件标识符字段指定组件标识符。差异描述符字段包含差异描述符。如在本说明书中别处比较详细地描述的,差异描述符是表示源接口定义和目的地接口定义之间的差异的文档。对Π组件110的修改可以由解决方案的差异描述符中的解决方案来提供。图6是示出了安装具有更改列表的解决方案的示例操作600的流程图。如图6的示例所示,提供自定义的接口定义(602)。自定义的接口定义对向其中应用了客户端自定义的UI组件110的版本进行定义。另外,应用104还将自定义更改列表存储在数据库506中(604)。自定义更改列表表达客户端自定义。自定义更改列表包括与对Π组件110的客户端自定义相关联的一组更改项。每一更改项都指定要应用于接口定义的更改。例如,更改列表可包括指定特定控件将被隐藏的更改项。在另一个示例中,更改列表可包括指定特定元件将被添加的更改项。在再一个示例中,更改列表可包括指定特定元件的标记将被更改的更改项。每当客户端102自定义Π组件110时,应用104可以更新自定义更改列表中的更改项。更改列表中的更改项可以指代基本接口定义(即,由基本解决方案202所提供的接口定义)中的元件。此外,更改列表中的更改项可以指代修改的接口定义中的元件。例如,新的解决方案可以构建在另一个解决方案之上。在此示例中,其他解决方案的更改列表中的更改项可以指定给定元件将被添加到UI组件110中。在此示例中,新的解决方案的更改列表中的更改项可以指定给定元件将被隐藏。下面是示例更改列表。此示例更改列表只包括通过“CustomAction”标记表示的单个更改项。此更改项将新按钮添加到控件条带元件"Mscrm. Form. {! EntityLogicalName}.MainTab. Save. Controls. _children"。定义新按钮的XML代码通过“按钮”标记来表示。
<RibbonDiffXml>
<CustomActions>
〈CustomAction Id=nMyISV. all. form·Close·CustomAction,r
Location= M crm.Form.{ i EntityLogicalName}.MainTab. Save . Co
权利要求
1.一种方法,包括提供计算系统;由所述计算系统显示自定义的用户界面(UI)组件,所述自定义的Π组件是向其中应用了客户端自定义的UI组件的版本,所述UI组件是应用的UI的组件;修改解决方案集,所述解决方案集包括一个或多个修改所述UI组件的解决方案;在修改所述解决方案集之后,由所述计算系统显示新自定义的Π组件,所述新自定义的UI组件是向其中应用了所述解决方案集中的解决方案所提供的修改并且所述客户端自定义保持应用于所述UI组件的所述UI组件的版本,所述客户端自定义保持应用于所述UI组件,无需向所述Π组件手动重新应用所述客户端自定义。
2.如权利要求I所述的方法,其特征在于,所述解决方案向所述应用添加功能。
3.如权利要求I所述的方法,其特征在于,修改所述解决方案集包括向所述解决方案集添加新的解决方案。
4.如权利要求3所述的方法,其特征在于,其中,自定义的接口定义对所述自定义的UI组件进行定义;其中,向所述解决方案集添加所述解决方案包括接收指定更改的更改列表;通过将适用的更改应用到非自定义的接口定义,来生成新的非自定义的接口定义,所述非自定义的接口定义是定义通过将所述解决方案集中的每一个解决方案所提供的所述修改应用到所述Π组件的基本版本所产生的所述Π组件的版本的接口定义;在将所述适用的更改应用到所述非自定义的接口定义之后,通过将自定义更改列表中的更改应用到所述新的非自定义的接口定义来生成新的自定义的接口定义,所述自定义更改列表表达所述客户端自定义,所述新的自定义的接口定义对所述新的自定义的UI组件进行定义。
5.如权利要求3所述的方法,其特征在于,其中,向所述解决办法集添加所述新的解决方案包括接收所述新的解决方案的差异描述符,所述新的解决方案的所述差异描述符是表示源接口定义和目的地接口定义之间的差异的文档,所述源接口定义和所述目的地接口定义对所述Π组件的不同的版本进行定义;生成自定义差异描述符,所述自定义差异描述符是表示自定义的接口定义和非自定义的接口定义之间的差异的文档,所述自定义的接口定义对所述自定义的Π组件进行定义,所述非自定义的接口定义对通过将所述解决方案所提供的所述修改应用到所述Π组件的基本版本所产生的所述Π组件的版本进行定义;通过将所述新的解决方案的所述差异描述符应用到所述非自定义的接口定义来生成新的非自定义的接口定义;以及通过将所述自定义差异描述符应用到所述新的非自定义的接口定义来生成新的自定义的接口定义,所述新的自定义接口定义对所述新的自定义的Π组件进行定义。
6.如权利要求I所述的方法,其特征在于,修改所述解决方案集包括更新已经在所述解决方案集中的解决方案。
7.如权利要求I所述的方法,其特征在于,修改所述解决方案集包括从所述解决方案集中移除给定解决方案。
8.如权利要求7所述的方法,其特征在于,从所述解决方案集中移除给定解决方案包括生成自定义差异描述符,所述自定义差异描述符是表示自定义的接口定义和非自定义的接口定义之间的差异的文档,所述自定义的接口定义对所述自定义的UI组件进行定义,所述非自定义的接口定义对通过将所述解决方案所提供的所述修改应用到所述Π组件的基本版本所产生的所述Π组件的版本进行定义;通过将除所述给定解决方案以外的所述解决方案的差异描述符应用到定义所述Π组件的所述基本版本的基本接口定义,来生成更新的非自定义的接口定义;以及通过将所述自定义差异描述符应用到所述更新的非自定义的接口定义来生成新的自定义的接口定义,所述新的自定义接口定义对所述新的自定义的Π组件进行定义。
9.如权利要求I所述的方法,其特征在于,其中,所述应用是客户关系管理(CRM)应用。
10.如权利要求I所述的方法,其特征在于,其中,所述客户端自定义包括下列各项中的一项或多项从所述UI组件中移除一个或多个元件的客户端自定义,重命名所述UI组件中的一个或多个元件的客户端自定义,以及改变所述UI组件中的一个或多个元件的位置的客户端自定义。
11.一种计算系统,包括处理系统;以及存储了计算机可读指令的数据存储系统,所述计算机可读指令在由所述处理系统执行时,导致所述计算系统显示自定义的UI组件,所述自定义的UI组件是向其中应用了客户端自定义的UI组件的版本,所述UI组件是应用的UI的组件;通过添加、删除或更新解决方案集中的解决方案来修改所述解决方案集,所述解决方案集包括一个或多个修改所述Π组件的解决方案,所述解决方案集中的所述一个或多个解决方案向所述应用添加功能;以及在修改所述解决方案集之后,显示新自定义的Π组件,所述新自定义的Π组件是向其中应用了所述解决方案集中的解决方案所提供的修改并且所述客户端自定义保持应用于所述Π组件的所述Π组件的版本,所述客户端自定义保持应用于所述Π组件,无需向所述Π组件手动重新应用所述客户端自定义。
12.如权利要求11所述的计算系统,其特征在于,当所述计算机可读指令导致所述计算系统通过向所述解决方案集添加新的解决方案来修改所述解决方案集时,所述计算机可读指令导致所述计算系统接收所述新的解决方案的更改列表;通过将所述新的解决方案的所述更改列表中的更改应用到非自定义的接口定义,来生成新的非自定义的接口定义,所述非自定义的接口定义对通过将所述解决方案所提供的所述修改应用到所述Π组件的基本版本所产生的所述Π组件的版本进行定义;通过将自定义更改列表中的更改应用到所述新的非自定义的接口定义来生成新的自定义的接口定义,所述自定义更改列表指定所述客户端自定义,所述新的自定义的接口定义对所述新的自定义的Π组件进行定义。
13.如权利要求11所述的计算系统,其特征在于,其中,所述计算机可读指令进一步导致所述计算系统存储所述解决方案集中的所述解决方案的更改列表;以及存储表达所述客户端自定义的自定义更改列表;其中,当所述计算机可读指令导致所述计算系统通过从所述解决方案集中移除给定解决方案来修改所述解决方案集时,所述计算机可读指令导致所述计算系统通过将除所述给定解决方案以外的所述解决方案的所述更改列表中的更改应用到定义所述Π组件的所述基本版本的基本接口定义,来生成新的非自定义的接口定义;以及通过将自定义更改列表中的更改应用到所述新的非自定义的接口定义来生成新的自定义的接口定义,所述新的自定义接口定义对所述新的自定义的Π组件进行定义。
14.如权利要求13所述的计算系统,其特征在于,其中,当所述计算机可读指令导致所述计算系统通过更新所述解决方案集中的给定解决方案来修改所述解决方案集时,所述计算机可读指令导致所述计算系统生成非自定义的接口定义,所述非自定义的接口定义对通过将所述解决方案所提供的所述修改应用到所述Π组件的基本版本所产生的所述Π组件的版本进行定义;生成自定义差异描述符,所述自定义差异描述符是表示自定义的接口定义和所述非自定义的接口定义之间的差异的文档,所述自定义的接口定义对所述自定义的Π组件进行定义;通过将较早的差异描述符应用到定义所述Π组件的所述基本版本的基本接口定义,来生成修改的接口定义,所述较早的差异描述符是所述解决方案集中的、在所述给定解决方案被安装之前安装的解决方案的差异描述符;通过将所述给定解决方案的更新的版本的差异描述符应用到所述修改的接口定义,来生成进一步修改的接口定义;通过将较晚的差异描述符应用到所述进一步修改的接口定义,来生成新的非自定义的接口定义,较晚的差异描述符是所述解决方案集中的、在所述给定解决方案被安装之后安装的解决方案的差异描述符;以及通过将所述自定义差异描述符应用到所述新的非自定义的接口定义来生成新的自定义的接口定义,所述新的自定义接口定义对所述新的自定义的Π组件进行定义。
15.如权利要求13所述的计算系统,其特征在于,当所述计算机可读指令导致所述计算系统通过移除所述解决方案集中的给定解决方案来修改所述解决方案集时,所述计算机可读指令导致所述计算系统生成自定义差异描述符,所述自定义差异描述符是表示非自定义的接口定义和自定义的接口定义之间的差异的文档,所述非自定义的接口定义对通过将所述解决方案集中的每一个解决方案所提供的所述修改应用到所述Π组件的基本版本所产生的所述Π组件的版本进行定义,所述自定义的接口定义对所述自定义的Π组件进行定义;通过将除所述给定解决方案以外的解决方案的差异描述符应用到定义所述Π组件的所述基本版本的基本接口定义,来生成更新的非自定义的接口定义;以及通过将所述自定义差异描述符应用到所述更新的非自定义的接口定义来生成新的自定义的接口定义,所述新的自定义接口定义对所述新的自定义的Π组件进行定义。
全文摘要
应用显示用户界面(UI)组件。客户端可以将自定义应用到此UI组件。在客户端将自定义应用到UI组件之后,客户端修改包含修改UI组件的解决方案的解决方案集。在客户端修改解决方案集之后,应用显示UI组件的新版本。解决方案集中的解决方案所提供的修改被应用于UI组件的新版本。另外,自定义保持应用于UI组件,无需客户端手动将自定义重新应用到UI组件。
文档编号G06F3/0481GK102939612SQ201180028836
公开日2013年2月20日 申请日期2011年5月20日 优先权日2010年6月11日
发明者H·莱萨马瓜达拉马, A·N·马吉, T·M·皮伦, J·S·海德, 金荣华, R·卡恩, R·L·迪基森, M·安腾, J·C·罗宾逊, B·J·西蒙斯, N·J·帕特里克, V·A·欧姆索卢, A·沙哈, A·谢诺伊, B·斯瓦米纳坦 申请人:微软公司