CN107408049A - 模型驱动定制框架 - Google Patents
模型驱动定制框架 Download PDFInfo
- Publication number
- CN107408049A CN107408049A CN201680016283.6A CN201680016283A CN107408049A CN 107408049 A CN107408049 A CN 107408049A CN 201680016283 A CN201680016283 A CN 201680016283A CN 107408049 A CN107408049 A CN 107408049A
- Authority
- CN
- China
- Prior art keywords
- version
- type
- customization
- computing system
- change
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
在一个示例中,一种计算系统包括:升级系统,被配置为检测用户升级输入以获得所述计算系统的升级版本,所述用户升级输入指示所述计算系统的基版本将通过向所述基版本应用升级改变的集合而被升级;差异生成系统,被配置为获取所述计算系统的所述基版本的定制版本并且识别所述定制版本对应于被应用了定制的所述基版本;组合引擎,被配置为获得被应用于所述基版本的所述定制和所述升级改变,并且将所述定制与所述升级改变进行组合以获得完整改变集合;以及差异应用引擎,被配置为将所述完整改变集合应用于所述计算系统的所述基版本以获得所述计算系统的定制的升级版本。
Description
背景技术
计算系统目前正在广泛使用。一些计算系统相对较大,并且可以包括例如数千个不同的用户界面和数据实体,如表和其他制品。这些计算系统通常在被部署在给定的实现中之前被定制(一些被深度定制)。例如,可以在各种开发工具上开发计算机程序。许多软件开发人员使用交互式(或集成的)开发环境(IDE)来开发软件。开发人员使用IDE来开发计算系统中的类型模型以及定制这些模型。
作为示例,一些计算系统包括企业资源规划(ERP)系统、客户关系管理(CRM)系统、业务线(LOB)系统等。这些类型的计算系统通常包括数以千计的被建模和定制的不同类型。作为示例,一些这样的系统通常单独地具有数千种不同的形式,更不用说许多其他类型。这样的系统通常还包括大量逻辑,以及工作流程和数据实体(例如表),其允许用户访问系统并执行活动或任务的集合,以便在一个他们正在为其工作的特定组织中执行它们的任务。
这些系统不是具有大量类型的计算系统的唯一类型。例如,游戏系统或各种各样的其他类型的系统通常还具有在计算系统中建模的数千种不同类型。
在计算系统中建模的各种类型被编译(或汇编)到运行时期间运行的程序组件。建模类型可以表示数据或工作流程。例如,计算系统可以将信息存储为实体的集合,其中每个实体表示与组织相关联的项目。例如,客户实体可以表示客户。例如,销售订单实体可以表示销售订单。销售报价实体可以表示销售报价。这些仅是示意性的示例。
当这样的计算系统部署在特定的组织中时,为了满足其部署的特定组织的功能需求,计算系统被高度定制是很常见的。通过示例的方式,不同的组织可能期望在给定的表单上具有表示客户实体的不同字段。此外,例如,不同的组织可能期望在费用报告表单上具有计算货币转换的不同逻辑。因此,可以看出,给定的计算系统可以被深度定制,使得其满足正在使用它的给定组织的要求。
计算系统还可以具有多个不同的定制层。例如,创建和开发基系统的软件公司可以简单地将系统作为基础产品出售。然后,独立软件供应商(ISV)可以为基础产品生成定制集合,使得可以使用这些定制来转售基本产品。增值经销商(VAR)可以添加另一层定制,产品的最终用户可能与开发合作伙伴建立伙伴关系,其中开发伙伴添加它们自己的定制。
目前,当开发人员或其他程序员生成对基本产品的定制时,定制用于覆盖基本产品中的基本应用模型。这样的覆盖是通过用已经做出的改变编译应用模型(以反映定制)来实现的。
上面的讨论仅被提供用于一般背景信息,并且不旨在用于辅助确定所要求保护的主题的范围。
发明内容
在一个示例中,一种计算系统包括:升级系统,被配置为检测用户升级输入以获得所述计算系统的升级版本,所述用户升级输入指示所述计算系统的基版本将通过向所述基版本应用升级改变的集合而被升级;差异生成系统,被配置为获取所述计算系统的所述基版本的定制版本并且识别所述定制版本对应于被应用了定制的所述基版本;组合引擎,被配置为获得被应用于所述基版本的所述定制和所述升级改变,并且将所述定制与所述升级改变进行组合以获得完整改变集合;以及差异应用引擎,被配置为将所述完整改变集合应用于所述计算系统的所述基版本以获得所述计算系统的定制的升级版本。
本发明内容旨在以简化的形式介绍一些概念,这些概念在下面的详细描述中进一步描述。本发明内容不旨在识别所要求保护的主题的关键特征或必要特征,也不旨在用于辅助确定所要求保护的主题的范围。所要求保护的主题不限于解决背景技术中指出的任何或所有缺陷的实现。
附图说明
图1是开发通道的一个示例的框图。
图2是具有用于开发基系统的开发功能的开发架构的一个示例的框图。
图3-1是用于生成定制系统的方法的一个示例的流程图。
图3-2示出了基类型的XML文件表示的一个示例。
图4是差异/组合引擎的一个示例的框图。
图5是使用存储的增量来构建定制系统的方法的一个示例的流程图。
图6示出了可视化系统的一个示例。
图7-1和7-2是集成视图的示例的屏幕截图。
图8是用于向开发人员可视化定制和冲突的方法的一个示例的流程图。
图8-1、8-2和8-3示出了已经被定制的示例元件。
图8-4是冲突解决窗口的一个示例的屏幕截图。
图8-5和图8-6是示出层次定制冲突的视图的示例的屏幕截图。
图9-1、9-2和9-3是生命周期管理系统提供的用户界面示例的屏幕截图。
图10是用于升级基系统的方法的一个示例的流程图。
图11A是DSL建模系统的一个示例的框图。
图11B是更详细地示出了类型存储的图2所示的架构的一部分的一个示例。
图11C是更详细地示出了应用类型存储和运行时环境的图2所示的架构的一部分的框图。
图11D是示出了图11A所示的DSL建模系统的操作的一个示例的流程图。
图12A-12C示出了用户界面显示的示例。
图12D-1至12D-5(在本文中统称为图12D)示出用于DSL的XML的一个示例和用于DSL扩展的DSL的一个示例。
图13是示出了部署在云计算架构中的图2所示的架构的一个示例的框图。
图14-16示出了可以在先前图中讨论的架构中使用的移动设备的各种示例。
图17是可以在前面附图中阐述的体系结构的各个部分中使用的计算环境的一个示例的框图。
具体实施方式
图1是开发通道100的一个示例的框图。开发通道100可以示意性地包括系统开发人员102、独立软件供应商(ISV)104、增值经销商(VAR)106、伙伴或客户108、运行时环境110、和终端用户112。图1示出了系统开发人员102可以示意性地是设计和开发诸如基本业务软件系统的基系统114的原始软件制造商。例如,基系统114可以是游戏系统、ERP系统、CRM系统、LOB系统等。
根据系统的类型,基系统114在部署在运行时环境110之前被深度定制或扩展,以供一个或多个终端用户112使用。作为示例,ISV 104通常定制基系统114并使其可用于增值经销商106,增值经销商106他们自己定制基系统114(在其已经由独立软件供应商104定制之后)。还可以是,诸如最终用户112的组织的客户108期望甚至进一步定制基系统114以满足组织的功能需求,使得其可以在运行时环境110中成功地被部署。替代地或者另外地,客户108可以在进一步定制基系统114时与伙伴合作。
这种类型的定制可能是有问题的。例如,当系统开发人员102尝试发布对基系统114的更新时,该更新在某些方面可能与最终用户的定制不兼容。因此,如果最终用户尝试安装更新,则可能会产生问题。此外,即使在系统开发人员102简单地尝试维护基系统114的代码库的情况下,这也可能产生维护与ISV 104、VAR 106、和/或客户108所做的定制相冲突的问题。
图2是开发(定制)架构200的一个示例的框图,该架构200具有用于开发具有在计算系统中运行的应用元素(或对象)的基系统202的开发功能。作为示例,开发架构200可以由ISV 104、VAR 106和/或客户108中的任何一个用来定制基系统202以满足组织的功能需求,使得定制系统204可以成功地部署在由组织的最终用户208使用的运行时环境206中。在该示例中,架构200可以表示图1所示的开发通道100的任何部分。
图2示出了在一个示例中基系统202包括模型210。模型210包括容纳对应的元数据212并且也可以具有代码214的容器。在所示示例中,模型210包括对应于基系统202内的各种不同类型的应用元素(即,类型)的元数据和代码。根据具体的基系统,模型210可以包括数千种不同的元素类型,其存储在类型存储216中。类型可以基于由开发环境220(例如,交互式或集成开发环境(IDE))采用的类型系统框架来定义。
“类型”表示抽象,抽象表示系统中建模的概念。在一个示例中,架构200采用丰富的层次类型系统,其中可以扩展基类型以创建更复杂的子类型。基类型包括模型中的基本或原语组件。基类型的示例包括但不限于整数类型、字符串类型、浮点数类型、枚举值类型、布尔类型等。这些基类型可以被扩展以创建子类型,诸如但是不限于数量类型、货币代码类型、销售价格类型、小时类型等。这些子类型可以被进一步扩展以创建更复杂的类型。
例如,类型可以用于表示组织中(诸如但不限于,ERP或CRM系统中的客户、销售订单、雇员等)或以针对组织的具体需求来处理组织信息的方式(如雇用雇员、创建订单、处理批准等)的各种抽象或概念。这些类型的一些示例包括但不限于表(其各自表示保持的对象,诸如销售订单)、类(其包含逻辑)、表单(其表示对顾客的信息的信息呈现)、安全角色(表示对顾客的信息的访问控制)、工作流(其表示处理的流程)、菜单项、实体、权限、和定义应用的其他支持概念。这些类型由各自使用属性或性质的集合(例如,键/值对)描述的元素的结构以及用于与结构交互的相关联的操作集合来定义。性质、方法和/或计算的特定结构为给定元素类型的元素定义运行时行为。例如,表对象包含用于在数据库中保持应用数据的元数据和代码,并且表单对象包含元数据和代码的对象,以描述要在各种设备中显示的信息内容,以供应用用户使用信息并与应用交互。
以这种方式,每个元素类型具有定义该元素类型的元素的运行时行为的性质、方法和/或计算的特性结构。例如,表元素类型可以包括名称(例如,“客户表”)和标识客户的属性(例如客户ID、地址等)的性质的集合。此外,在该示例中,表元素类型可以包括用于计算客户的值的方法和/或用于显示该值的方法。
类型的实例由开发人员218设计(例如,开发人员218设计客户表或销售订单表单应当是什么样的),并且运行时环境206在运行定制系统204时创建、管理和保持这些类型的特定实例(例如,客户表类型和销售订单类型等),并且为这些实例提供框架和环境以彼此交互。
系统202的类型作为在存储介质(诸如计算机文件系统、数据库或云存储)中具有定义的模式(例如,可扩展标记语言(XML)、JavaScript对象符号(JSON)、专有模式等)的文档或文件被保持或存储在类型存储216中。为了讨论而不是限制,类型存储216将被描述为将类型作为XML文件存储在类型存储中。当然这仅是通过示例的方式。可以利用其他格式。
在该示例中,用于每种类型的元数据212和代码214被序列化成一个XML文件。也就是说,代码片段(即非结构化字符串)和元数据(即,结构化的性质和值集合)散布在XML文件中。因此,元数据和代码XML文件包括经序列化的元素结构,每个元素结构都有自己的类型。
开发环境220包括类型访问组件222,其在类型存储216中存储类型,并且从类型存储216访问所存储的类型。在一个示例中,类型访问组件222被配置为将类型序列化成它们的存储(例如,XML文件)表示并且将存储表示反序列化成它们的物理、源代码表示,该存储表示被存储到类型存储216中,该源代码表示从类型存储216被获取以用于开发环境220内的开发。源代码表示可以包括面向对象编程环境中的对象。在开发环境220中可以使用任何合适的编程语言。
为了定制基系统202,开发人员218需要根据组织需要和组织面临的独特要求而在不同程度上定制类型中的一些或全部,以在市场中区分它们。
为了促进基系统202的定制,开发人员218使用开发环境220的定制工具224来对基系统202进行定制。在图2所示的示例中,开发环境220示意性地对应于客户108对基系统114进行定制的环境。然而,应当注意,开发环境220可以是其中开发通道100(图1所示)中的任何开发人员或任何其他通道中的任何其他开发人员对基系统进行定制的环境。
作为示例,IDE(或其他开发环境)可以包括源代码编辑器、一个或多个构建自动化工具和调试器。一些IDE示意性地包括编译器、解释器、或者编译器和解释器两者。它们可以包括版本控制系统和用于简化图形用户界面的构建的各种工具。它们还可以包括类浏览器、对象浏览器和与面向对象软件开发一起使用的类层次图。因此,开发人员可以使用IDE来生成代码和元数据,连同对代码和元数据的定制,其可用于开发在给定组织中使用的系统。
开发人员218可以通过单独的开发人员设备(例如个人计算机、平板计算机、另一移动设备等)或者直接与开发环境220进行交互。开发人员218还可以通过网络(例如,远程地)与开发环境220交互。仅作为示例,在图1中,开发人员218被示出为与的开发环境220直接地(例如,本地地)交互。
在一个示例中,开发环境220包括处理器和/或服务器226、显示系统223(其自身包括用户界面组件225和一个或多个传感器227,并且其也可以包括其他项目229)、差异生成系统236、升级系统242、可视化系统246、定制分析器和冲突检测系统248、以及冲突解决系统250。开发环境220也可以包括其他项目259。
图2示出了各种不同的框。应当注意,框可以被合并,使得每个框执行更多的功能,或者它们可以被划分,使得功能被进一步分布。还应当注意,类型存储216在一个示例中可以包括各种不同类型的数据存储中的任何一种。此外,数据存储中的数据也可以存储在多个附加数据存储中。此外,数据存储可以是访问它们的环境、代理、模块和/或组件的本地的,或者它们可以是与其远程的,并且可由这些环境、代理、模块和/或组件访问。同样,一些可以是本地的,而另一些则是远程的。
用户界面组件225生成具有用户输入机构232的用户界面显示230,以供开发人员218进行交互。开发人员218与用户输入机构218交互以便控制和操纵开发环境220。在一个示例中,开发人员218可以这样做来实现定制工具224或开发环境220的任何其他组件。
传感器227被配置为检测对显示系统223的输入。在一个示例中,系统236、242、246、248和250中的一个或多个还包括被配置为检测对那些系统的输入的传感器。
在一个示例中,处理器和/或服务器226包括具有相关联的存储器和定时电路(未示出)的计算机处理器。计算机处理器是环境220的功能部分,并且由环境220中的其他系统、组件和项目激活并促进其功能。在一个示例中,系统236、242、246、248和250中的一个或多个也可以包括处理器。
用户输入机构232例如通过生成用于感测用户与环境220的交互的用户界面显示器230来感测物理活动。用户界面显示器可以包括以多种不同方式感测用户输入的用户输入机构,诸如点击设备(例如,计算机鼠标或轨迹球)、键盘(虚拟或硬件)和/或键盘。在用于显示用户界面的显示设备是触敏显示器,输入可以作为触摸手势提供。类似地,用户输入也可以示意性地由语音输入或其它自然用户界面输入机构提供。
在一个示例中,开发环境220包括用于在开发环境220内定义和执行各种方法和过程的方法引擎233。方法引擎233促进使用代码生成的自动化框架来驱动生成表示对基系统的改变的增量的实现,存储增量,并将增量应用于基系统以构建定制系统。
如图2所示,定制工具224包括类型定制组件234,其使开发人员218能够定制基系统202的模型210中的类型。为了本讨论的目的,定制将被用于引起(mean)元数据212或代码214或基系统114的功能的加性改变以及非加性改变。
一种类型的定制包括向给定的元素类型添加元数据或代码。在一个示例中,可以通过在表单上添加诸如新字段的新性质或者添加用于对表单上输入的数据执行计算或经由表单中的呈现元素来显示数据的新方法来定制表单类型的对象。在另一个示例中,可以通过添加“雇用日期”性质或添加用于确定雇雇员资的加薪的新方法来定制雇员类型的对象。在另一示例中,可以通过向客户添加指示所需服务水平的新字段(例如,黄金客户/银客户/铜客户等)来定制客户类型的对象。
另一类型的定制包括删除性质或将性质改变为给定元素类型。在一个示例中,可以通过改变字段的宽度来定制表单类型的对象。在另一个示例中,客户类型的对象可以通过改变性质值(例如,将表示客户的客户ID字段从10改变为15,将标签“客户”改变为“客户端”等)来定制。例如,为了考虑部署系统的地理位置,客户对象中的客户地址可以被定制为具有更详细的信息。
另一类型的定制包括改变给定元素类型的元数据元素的层次布置。为了说明,在一个特定示例中,表单元素类型的对象包括作为父节点下的子节点的控件(例如,重置按钮)。父节点包括标记为“通用”的标签。开发人员218可能期望移动在标记为“详细信息”的不同标签下的控件。为了实现这一点,开发人员218将对应于控件的子节点移动或重新安排父节点(re-parent)到对应于“详细信息”标签的不同父节点。
当然,这些只是可以对元数据或代码进行定制的示例,也可以进行各种其他定制。
当开发人员218通过定制基系统202内的类型来开发定制系统204时,定制被存储为表示定制系统204和基系统202之间的类型差异的增量。在一个示例中,差异生成系统236针对由开发人员218定制的每种类型,计算定制系统204中的定制类型与基系统202中的类型的基本形式之间的增量或差异。
在一个实施例中,差异生成系统236使用对象模型来捕获给定类型的实例可以如何改变(诸如在基系统202的版本或不同的定制层之间)。在一个示例中,该对象模型是从元模型中推导的,该元模型定义了开发环境220内的类型系统框架,其指定在模型210中的各个类型的结构。元模型允许给定对象被在任何时间检查以确定对对象已经进行了什么定制。在一个示例中,可以使用域特定语言建模系统235获得该元模型。
一旦定制类型的增量由差异生成系统236计算出,其随后便由类型访问组件222序列化为XML文件(或其他格式)。XML文件中的每个元素表示对基系统202中基类型的特定改变。在一个示例中,类型访问组件222使用元模型将增量序列化为XML文件。元模型定义了XML文件的模式。XML文件被存储在类型增量存储238中。以这种方式,增量由独立存储的XML文件表示,该XML文件与针对基系统202的基类型存储的对应的XML文件分开。虽然增量文件是与基系统202的XML文件分离的,但是其可以存储在相同的物理数据存储(即类型存储216)中。在另一示例中,增量文件可以远离基系统202存储。
基系统202中的给定类型可以具有多个不同的定制层。例如,多个实体可以各自提供对类型的不同的定制。该类型的多层定制可以应用于元数据或代码的相同部分或元数据的不同部分。对于图1所示的开发通道100,基系统114可以由ISV 104定制,然后由VAR 106和/或客户108进一步定制。因此,类型可以在类型增量存储238中具有多个增量文件。每个增量文件包含一层定制。
在一个特定的示例中,对于雇员表单类型,ISV 104定制对象以包括一个附加字段。该定制由存储在类型存储216中的第一增量文件表示。然后,客户108定制雇员表单单类型以修改字段的标签。该定制由存储在类型存储216中的第二增量文件表示。第一增量文件和第二增量文件均分别存储在类型增量存储238中。类型存储216存储将第一增量文件和第二增量文件两者与它们应用的对应雇员表单类型相关联或相映射的信息,以及定义增量被写入的订单的信息。该信息允许以正确的顺序将增量应用于基系统202中的基雇员类型。
通过示意而非限制的方式,存储与底层基XML文件分离的给定类型的增量文件允许类型的相应定制可以容易地与基系统以及类型的其他定制层隔离。这可以促进增量的版本化以及定制与基系统的物理分离(例如,从第三方提供商(诸如市场)发布定制)。例如,ISV 104可以定制类型并提供对应的XML文件,以便从其自己的网站下载。此外,开发人员可能期望在其被提供给另一方之前从定制系统204中移除专有信息的一部分。为此,开发人员移除对应的XML文件,而无需通过环境220的定制工具224来进一步定制系统。
为了构建定制系统204,类型访问组件222从类型存储216访问类型及其对应的增量,其在一个示例中作为XML文件存储。类型访问组件222将基XML文件和增量XML文件反序列化为对应的对象表示。然后,对于具有至少一个增量的每种类型,系统236的差异/组合引擎240用于将该类型的基对象和增量对象放在一起以构建对应的定制类型。差异/组合引擎240理解基对象和增量对象的结构以促进它们的组合。
在所有定制类型被构建之后,定制系统204可以在开发环境中进一步被开发,或者被传递到运行时环境206(或其他端点)以供消费。其他端点的示例包括但不限于:升级系统242,其有助于升级底层基系统202;和生命周期管理系统244,其有助于一旦被部署则管理定制系统204。在一个示例中,运行时环境或其他端点不知道增量。端点仅消费定制系统204内的应用类型。
图3-1是用于生成定制系统的方法260的一个示例的流程图。为了说明而不是限制,将在开发人员218使用开发环境220来开发定制系统204的上下文中描述方法260。
在步骤262,检测到针对定制的基系统202的开发人员输入。例如,开发人员218可以通过用户界面显示器230访问定制工具224,以选择用于定制的基系统202。在步骤264,类型访问组件222从类型存储216访问基系统202。例如,这可以包括反序列化在基系统202中建模的各种类型的XML文件。图3-2示出了从类型存储216获取的基类型(在本示例中的表)的XML文件表示261的一个示例。
在步骤266,DSL建模显示可以利用用户输入机构来显示,以接收在步骤268执行DSL建模的用户输入。下面进一步描述执行DSL建模的示例。
在步骤270,类型定制显示利用用户输入机构来显示。例如,定制工具224可以被提供给开发人员218以定制在基系统202中建模的类型。在步骤272,检测到对一个或多个建模类型执行定制的用户输入。例如,如上所述,定制可以包括向给定元素类型添加元数据或代码,将性质删除或改变为给定元素类型,或者改变给定元素类型的元数据元素的分层布置。再次参考图3-2,一个示例改变(即,将“原始值”改变为“改变后的值”)在附图标记263处表示。当然这些仅是示例。
在步骤274,开发环境220将定制标识为相对于基系统202的增量或与基系统202的差异。在一个示例中,差异生成系统236用于识别来自开发人员定制的增量。
图4示出了可以在步骤274使用的差异发生系统236的差异/组合引擎(DCE)240的一个示例。DCE 240被配置为计算和构造原始对象和由在步骤272处检测的用户输入定制的定制对象之间的增量。DCE 240包括差异表示组件280,差异表示组件280包括用于提取差异以计算增量并将差异应用于基系统以构建定制系统204的机构。
差异表示组件280使用差异计算引擎282。在一个示例中,差异计算引擎282使用从元模型推断的对象模型来计算容纳层次中的差异。差异计算引擎282将被定制的类型拆解成更基本的组件或原语组件。作为示例,原语组件包括构成基类型的组成部分(例如,字符串、整数、枚举值)。对类型的每个改变都可以从对类型的原语组件的基本改变集合中导出。
原语差异计算组件284识别单独原语组件并独立地检查每个组件以确定其是否已被改变、添加、删除或以其他方式定制。在一个示例中,原语差异计算组件284将定制类型与基系统202中的基类型进行比较,以识别差异。
再次参考方法260,在步骤276,表示定制类型和基类型之间的差异的增量被生成为与基系统关联或以其他方式相关联的单独文件。在一个示例中,可以通过DSL建模系统235定义的元模型定义用于在类型存储216中存储基系统类型的模式格式,并且从基系统类型推断增量类型。以这种方式,提供了用于定义XML文件格式的框架。
在步骤278,单独的增量文件被保存在与基系统202分离的类型存储216中。关于图3-2的示例,增量文件265被生成。
图5是用于使用所存储的增量来构建定制系统的方法300的一个示例的流程图。例如,可以在运行时执行方法300以将类型增量存储238中的类型增量应用于基系统202以构建在运行时环境206内运行的定制系统204。在另一示例中,可以执行方法300以在测试环境中或者当开发人员218在开发环境220内要进一步定制定制系统204时测试定制系统204。为了说明而不是限制,方法300将在开发环境220的上下文中描述。
在步骤302,检测输入以生成具有应用的增量的类型。如上所述,这可以包括定制系统204要在运行时环境206内运行的指示。在步骤304,从基系统202获取类型。在一个示例中,这包括类型访问组件222将来自基系统202的类型的XML文件表示序列化为在开发环境220内的它们的物理表示。
在步骤306,开发环境220获取对应于在步骤304获取的类型的所有增量。如上所述,可以存在对类型的多个不同的定制层。例如,在步骤306获取的增量可以包括ISV增量308(例如,表示由图1中的ISV 104所进行的定制),VAR增量310(例如,表示由图1中的VAR106所进行的定制)和客户增量312(例如,表示由图1中客户108所进行的定制)。
在步骤314,基系统类型被分解为其原语组件。例如,DCE 240接收和拆解基系统类型。DCE 240的差异应用引擎286(图4所示)在步骤316将增量应用于原语组件。在一个示例中,这包括差异应用引擎286在步骤318将增量分解成其原语组件,然后合并基系统的原始值和增量。
在一个示例中,原语差异应用组件288(图4所示)将增量应用于原语组件级别的基类型中的正确位置。例如但不限于,在一个示例中,原语组件包括作为该类型内的性质的字符串。增量可以为此字符串指定新的或定制的值。原语差异应用组件288将新值应用于基类型内的该原语组件。
在一个示例中,在存在应用于给定类型的多个增量的情况下,方法300在步骤320识别用于应用增量的顺序。在一个示例中,增量的顺序可以根据它们对应的XML表示来确定,它们对应的XML表示指示对应的定制何时被作出。
在步骤322,开发环境220的定制分析器和冲突检测系统248识别并解决由于向基系统类型应用增量而在给定类型中产生的冲突。
在步骤324,开发环境220重新组合具有应用了增量的类型,并在步骤326输出类型,例如用于诸如运行时环境206的终点处的消费。
开发环境220提供了一种可以以有效、灵活且需要较少开发人员时间的方式在整个系统中对所有类型整体地应用定制的框架。相反,在其他类型的系统中,开发人员必须手动地对基系统中的许多不同类型手工编码给定定制。开发环境220使用代码生成来以改进定制架构的方式来驱动框架实现。
再次参考图2,可视化系统246被配置为对开发人员218生成可视化以促进开发过程。可视化可以识别对各种元素进行的定制以及由于冲突的定制而产生的冲突。
例如,ISV和VAR可以以两种不同的方式各自定制类型。ISV可以将基类型的标签定制为一个值,并且VAR可以将相同的标签定制为不同的值。定制分析器和冲突检测系统248被配置为分析对基系统202进行的定制并且检测定制之间的冲突。这些冲突可以使用冲突解决系统250解决,在一个示例中,该解决方案系统250包括:被配置为自动解决一些冲突(例如,使用冲突解决规则)的自动解决组件252以及被配置为向开发人员218进行冲突显现的冲突显现组件254。冲突解决在下面进一步详细讨论。
图6示出了可视化系统246的一个示例。在所示示例中,可视化系统246包括显示系统控制器330,其被配置为控制显示系统223以使用用户界面组件225来生成用户界面显示器332。在一个示例中,用户界面显示器332在基系统202的定制期间被呈现给开发人员218。例如,在方法260中可以在步骤270显示用户界面显示332。
如图6所示,一个示意性用户界面显示332包括集成可视化(或视图)334,该集成视图334示出了已经在较低层定制被应用的定制。换句话说,集成视图334向开发人员218示出了包括基对象和定制对象的整个系统。通过集成视图334,开发人员218可以可视化定制的元素以及未定制的元素中的全部。此外,集成视图334还可以可视化哪些元素具有冲突以及哪些元素没有冲突。
图7-1中示出了集成视图334的一个示例。集成视图334示意性地是具有父节点和子节点的分层树结构。每个子节点依赖于对应的父节点,并被示出为相对于对应的父节点向右缩进。
图7-1提供用户界面336的屏幕截图,其显示正在被定制的类型的指示以及针对该类型的元素340的列表。用户界面336包括供开发人员218了解什么元素已被定制的可视提示。在所示示例中,已经被定制的元素例如通过加粗定制元素(由附图标记342表示)可视地与未被定制的元素相区分。定制可以包括开发人员218在当前定制层中所做的改变,以及在定制的较低层(例如由ISV 104和/或VAR 106进行的先前的定制)中所做的改变。此外,可以指示各种不同类型的定制中的任何一种。一些包括但不限于性质改变、新元素的添加、元素的重新安排父节点(re-parent)、以及元素顺序的改变。此外,还可以向用户界面336提供代码和/或元数据编辑器(图7-1中未示出)。这可以使得开发人员218能够进一步定制并解决定制中的冲突。在另一示例中,用户界面336可以包括对象的预览窗口343。例如,在类型338是表单的情况下,预览窗口343可以显示表单的预览。
再次参见图6,可视化系统246包括过滤组件344,过滤组件344基于从开发人员218例如在图7-1所示的搜索框346中接收的过滤输入对视图进行过滤。过滤输入可以包括用于搜索元素的关键字。过滤输入也可以用于从集成视图334切换到非集成视图348,以仅查看已定制的元素或仅查看具有冲突的元素。这将在下面进一步详细讨论。可视化系统246也可以包括其他项目345。
图7-2示出了集成视图334的另一示例。图7-2提供了指示已被定制的元素以及具有冲突的元素的用户界面350的屏幕截图。如用户界面350所示,已经定制的元素具有可视指示符351-1(在本示例中为“[c]”),并且具有冲突的元素具有可视指示符351-2(在本示例中为“[!]”)。使用这些可视指示符,开发人员218可以容易地看到哪些元素在定制的较低级别已经被定制了和/或具有由定制产生的冲突。
图8示出了用于将定制和冲突向开发人员可视化的方法360的一个示例。为了说明而不是限制,将在开发环境220的可视化系统246的上下文中描述方法360。
在步骤362,通过将存储238中的类型增量应用于基系统202来构建定制系统204。在步骤364,生成集成视图334以将定制系统向开发人员218可视化。集成视图334在框366处可视地指示定制,在368处可视地指示冲突。
在一个示例中,图8-1、8-2和8-3示出了以不同方式定制的元素。图8-1图示了性质改变定制。具体地,元素373的一个或多个性质已经被改变为新的值。元素373通过加粗元素的名称而被可视化。此外,经改变的性质可以显示在弹出窗口375中,例如当用户将光标悬停在元素373上和/或选择元素373时。窗口375可视化经改变的性质。
图8-2示出了新元素377被添加的定制。可以通过对元素377加粗和/或使用可视指示符379(在本示例中为“+”号)来可视化该定制。可视指示符379的使用将图8-2中的新元素定制与图8-1中的性质改变定制可视地区分开。
图8-3示出了重新安排父元素的元素定制,其中元素381已被移动到新的父元素。该定制可以通过使元素381加粗和/或提供指示定制是元素的重新安排父元素的可视指示符383(本示例中的箭头)来指示。以这种方式,指示符383可视地区分图8-3中的类型定制与图8-1和8-2中的定制。
在图6所示的示例中,为了在步骤368识别和可视化各种类型的定制和冲突,可视化系统246包括性质改变可视化系统352、层次改变可视化系统354和代码改变可视化系统356。性质改变可视化系统352包括可视化性质定制的性质定制可视化组件353以及可视化性质定制冲突的性质定制冲突可视化组件385。层次改变可视化系统354包括可视化层次结构定制的层次定制可视化组件355以及被配置为可视化层次结构定制冲突的层次定制冲突可视化组件387。代码改变可视化系统356包括可视化代码定制的代码定制可视化组件357和被配置为可视化代码定制冲突的代码定制冲突可视化组件389。系统352、354和356中的每一个也可以包括其他组件358。
再次参考图8,在一个示例中,开发人员218可以通过集成视图在系统上进一步开发。在步骤369,检测开发输入以定制在集成视图中显示的元素。例如,开发人员218从集成视图中选择给定的模型元素来定制或扩展,然后提供开发输入以定制或扩展与所选择的模型元素相关联的元数据和/或代码。
在一个示例中,基于定制层限制或限制开发人员218可以进行的定制。如上所述,在示例步骤362中,为开发人员218构建定制系统以在当前定制层上查看和开发系统,具有示出了在较低层定制处进行的改变(例如,在较低定制层处添加或改变的元素)的图示。在步骤369,开发人员218的开发被限制,以便不允许开发人员218删除或重命名在较低定制层处添加的元素。这当然仅是一个示例。
在其中代码编辑器被呈现给开发人员218以编辑代码的步骤369的一个示例中,开发人员218提供输入以改变代码编辑器内的方法的顺序。尽管代码编辑器中方法的顺序可能不会影响运行时环境,但其可以在开发人员218如何组织和可视化其代码方面发挥重要作用。因此,在一个示例中,开发环境220存储用于向开发人员218随后呈现的重新排序的方法。例如,可以生成并存储增量以反映新的方法顺序。
在框370处,从开发人员接收过滤输入以将集成视图334过滤为期望的非集成视图348。示例包括定制过滤输入(诸如“[c]”),以在框372处仅查看定制,或冲突过滤输入(诸如“[!]”)用于在框374处仅查看冲突。在步骤376显示经过滤的非集成视图348。
在过滤视图以示出定制的情况下,可视化系统246采用性质定制可视化组件353、层次定制可视化组件355和代码定制可视化组件357。在过滤视图以示出冲突的情况下,可视化系统246采用性质定制冲突可视化组件385、层次定制冲突可视化组件387和代码定制冲突可视化组件389。
在步骤378,接收用于从对象中移除定制的用户输入。例如,通过在步骤364处显示集成视图或在步骤376处显示经过滤的视图,开发人员218可以右键单击或以其他方式选择定制元素之一,然后指示应当去除定制(例如,选择删除定制菜单项)。
在步骤380,接收用于解决冲突的用户输入。例如,通过在步骤364处显示集成视图或在步骤376处显示经过滤视图,开发人员218可以右键单击或以其他方式选择定制元素之一。然后,在步骤382,向用户显示冲突解决窗口。在步骤384,检测到冲突解决输入,并且基于输入来解决定制冲突。
图8-4中示出了冲突解决窗口400的一个示例。如图8-4所示,冲突解决窗口400显示具有针对所选择的元素的冲突的性质的列表402(即,在本示例中为元素“姓氏”)、以及列表402中的性质的冲突值的列表404、406、408和410。例如,对于列表402中的每个冲突性质,窗口400在列表410中显示性质的“当前值”连同导致冲突的一个或多个其他值。作为示例,这些其他值包括:由开发人员218分配给性质的列表404中的值(即,“您的值”,其可以与当前值相同或不同)、来自基系统202的列表408中的“原始值”、以及来自另一个定制层的列表406中的值(即“它们的值”)。例如,当开发人员218是客户108的一部分的情况下,列表406中的“它们的值”可以是由图1所示的ISV 104或VAR 106进行的定制。
冲突解决窗口400还包括多个用户输入机构,其允许开发人员218选择对列表402中的每个性质所期望的值,以解决冲突。在图8-4的示例中,列表404、406、408、410中的每个值具有对应的选项按钮401、403、405、407(或其他用户输入机构),其允许用户选择列表402中性质的值。此外,在一个示例中,提供用户输入机构集合409、411、413、415供开发人员218选择对应列表406、410、408、404中的所有值。一旦冲突已解决,集成视图中的冲突图标便被删除,因为该元素不再存在冲突。
再次参考图8,在另一示例中,步骤382用于解决组件387可视化的层次结构改变冲突。为了说明,图8-5示出了可视化节点422不具有父节点的层次定制冲突的用户界面420。作为示例,这可能由于对基系统的更新而发生,其移除先前具有一个或多个从属子节点的特定节点。在一个示例中,未安排父节点的节点422不可编辑,直到它们被适当地被安排有效的父节点。图8-6示出了用户界面420,其中节点422已被重新安排适当的父节点(例如由开发人员218拖动用户界面420内的节点422)。这从层次结构冲突列表中移除节点422。节点422现在可从用户界面420编辑。
在由组件389可视化的代码定制冲突的上下文中,步骤382在冲突解决窗口中显示冲突的代码。代码的每个部分具有允许开发人员218选择该部分代码以解决冲突的控件。这可以以类似于图8-4所示的冲突解决窗口400的方式来完成。
可视化系统246提供集成的可视和设计经验,用于建模定制连同用于区分实际的定制的多个可视提示。开发人员可以容易地在提供定制系统的视图的不同用户界面(诸如集成视图和非集成视图)之间切换。这增强了用户体验并提供了更有效的开发环境。
再次参考图2,在一个实施例中,生命周期管理系统244可由开发环境220访问,并且包括可由开发人员218用于识别、跟踪和解决在项目的各种生命周期期间出现的问题的服务。例如,生命周期管理系统244允许开发人员218跟踪在基系统202的定制期间出现的问题。生命周期管理系统的服务允许用户识别组织的需求和提供有系统的功能,并生成或识别需要对系统进行以满足部署系统的客户的需求的功能或定制。
这些服务可以包括例如允许生命周期管理系统244识别定义所部署系统的环境的特定环境信息的诊断服务。例如,生命周期管理系统244可以从报告和管理系统258接收关于运行时环境206的信息。
生命周期管理系统244提供用于报告、项目管理(例如收集估计)、升级成本和冲突解决方案、以及生成考虑依赖关系的时间表的集成工具。这些集成工具可帮助开发人员了解正在进行的变换,计划并执行其余的升级任务。此外,这对开发人员的部分提供了可预见的体验。
例如,生命周期管理系统244包括开发人员218在执行项目中的各种任务时使用的工具。例如,生命周期管理系统244可以使开发人员218行走通过与定制系统204的开发相关的特定任务集合的工作分解结构。
在一个示例中,生命周期管理系统244包括促进对系统的升级的升级服务256。在一个示例中,升级服务256可以提供与升级基系统202相关的基于云的度量。例如,开发人员218可以将其元数据和代码上传到生命周期管理系统244,生命周期管理系统244分析代码中的元数据并提供与是否升级系统以及预计需要多长时间有关的各种度量。此外,生命周期管理系统244可以提供使开发人员218了解升级过程的一系列用户界面显示。生命周期管理系统244识别需要哪些升级任务的资源。生命周期管理系统的使用改善用户体验,缩短升级过程的处理时间和带宽。
作为示例,图9-1、9-2和9-3示出了在解决方案迁移过程期间由生命周期管理系统244提供的示例用户界面。一个示例是当前基系统202的更新。接口430被显示用于在当前基系统上执行的升级分析。例如,开发人员218将当前系统上传到生命周期管理系统244,生命周期管理系统244分析系统以识别在更新过程期间需要完成的各种任务。这可以以可查看的记录或文件432的形式提供。
图9-2所示的用户界面434提供了在开发人员或参与升级过程的其他人员所需的手动工作方面的升级的报告摘要。例如,报告摘要根据基系统202内的不同模型210进行分解,具有对各种任务需要多长时间的对应的时间估计。图9-3提供了分解特定步骤和任务并在更细粒度的等级上提供工作分解结构的用户界面436。
图10示出了用于升级基系统的方法500的一个示例。为了说明而不是限制,方法500将在图2所示的架构200的上下文中描述。
在步骤502,该方法以基系统202的当前、定制版本开始。例如,基系统202被存储在类型存储216中,连同定义对基系统的定制的类型增量被存储在存储238中。
在步骤504中,检测到指示要被升级的基系统的维护输入。例如,维护输入可以包括来自开发人员218的启动升级过程的输入。在另一示例中,维护输入可以从诸如生命周期管理系统244的另一系统接收。
为了目前讨论的目的,基系统202将被称为“版本A”,在其上已经针对定制系统204(称为“版本A”)定义了定制。基系统将被升级到新版本(即“版本B”),开发人员218期望定制转移到升级版本以形成升级后的系统的定制版本(称为“版本B”)。
在步骤506,获取当前版本A'。在步骤508。该方法自动检测到版本A'被定制。例如,差异生成系统236应用在开发环境220内定义类型系统框架的元模型来检查当前版本的对象以确定已经对对象进行了哪些定制。
在步骤510,找到或以其他方式访问当前版本的增量(称为“增量1”)。例如,增量可以从类型存储216获取,或者可以由差异生成系统236计算。
在步骤512,找到或以其他方式访问基系统升级的增量(称为“增量2”)。例如,生命周期管理系统244可以提供版本A和版本B之间的差异的指示。在另一个示例中,生命周期管理系统244可以将整个升级后的基系统(版本B)提供给开发环境220,开发环境220使用差异生成系统236来计算版本A和版本B之间的增量2。
在步骤514,该方法将增量1(从版本A到版本A'的改变)和增量2(版本A和版本B之间的差异)组合。
在步骤516,该方法比较增量1和增量2,并在步骤518识别任何冲突。在步骤518,该方法例如使用定制分析器和冲突检测系统248来确定增量1和增量2之间的任何冲突。
在步骤520,该方法自动地对没有冲突的系统进行改变。在一个示例中,这可以包括进行需要适应版本A和版本B之间的改变的变换,其包括但不限于改变应用编程接口的名称和调用约定,通过标准模式应用定制的重构(refactor),并基于定制导出新类型。
在步骤522,方法500对不需要用户输入的冲突执行自动冲突解决。例如,利用冲突解决系统250的自动解决组件252来应用冲突解决规则524。例如,步骤522可以使用包括用于冲突解决的算法的冲突解决规则524。冲突解决规则的一个示例包括对基本的系统API的改变。冲突解决规则找到对API的旧引用,并将其替换为新引用。在冲突解决规则的另一个示例中,对版本A的定制将文本添加到用户界面,但在版本B中,某些UI概念不再适用。在此示例中,冲突解决规则可以解决之前的UI定制,并重新组合到版本B中的新UI定义中。
在步骤526,在步骤522处未解决的冲突被显现以供用户解决。例如,可以使用冲突解决系统250的冲突显现组件254来使冲突显现。步骤526提供允许用户解决冲突的任何合适的用户界面。在一个示例中,提供了类似于图8-4的用户界面。在任何情况下,在步骤528检测到冲突解决输入,并在步骤530处用于解决冲突。
在步骤532,针对新的、定制版本B'(即,增量3)计算增量。在一个示例中,这由差异生成系统236执行。在步骤534,所计算的增量3被保存到类型存储216。
在所示的方法500的示例中,步骤中的许多(如果不是全部)由开发环境220执行。在另一示例中,步骤中的部分或全部可以由基于云的生命周期管理系统(即,系统244)来执行。例如,生命周期管理系统244可以在步骤510和512找到增量,在步骤514和516组合和比较增量,并且在518和522处识别和解决冲突。当然,这是方法500如何可以在架构200中实现的一个示例。
图11A是更详细的DSL建模系统235的一个示例的更详细的框图。图11B示出更详细地可以由开发环境220使用的DSL建模类型,图11C示出了可以形成类型存储216的一部分或者可以是分离的运行时环境206和应用类型存储550中的应用类型的一个示例。图11D更详细地示出了DSL建模系统235的操作的一个示例。现在将相互结合来描述图11A-11D。
在图11A所示的示例中,DSL建模系统235示意性地包括应用类型建模组件552、差异生成类型建模组件554、开发工具类型建模组件556(其本身可以包括行为创作类型建模器558和性质创作类型建模器560)、交叉引用生成类型建模组件562、应用验证类型建模组件564、搜索类型建模组件566、其他生产率类型建模组件568,并且其可以包括其他项目570。DSL建模系统235示意性地允许开发人员218使用域特定语言(DSL)来描述概念(类型)及其彼此之间的关系。其提供了用于生成一套全面的类型的框架,它们自己为开发工具、应用、应用的工具以及集成到这些工具中的其他开发人生产率工具提供框架。
一般来说,DSL以正式的方式描述概念(或抽象)以及它们之间的关系。关系可以用诸如继承、关联和组合的面向对象的设计概念来描述。基系统202可以具有用于开发应用的许多概念,诸如类概念(可以包含X++或其他代码)、表概念(即具有代码的持久值集合)、表单概念(在用户界面中显现用户的信息)、查询概念等。可以参考基系统202中的这些概念(诸如客户表、订单处理类、销售订单表单等)的实例可以被称为元数据,并且这些可以用作包括基系统202或定制系统204的最终应用的构建框。DSL建模系统235被示意性地用于描述这些概念本身,诸如什么构成表、什么构成类等。这些描述是关于元数据或元元数据的数据。DSL建模系统235可以用于正式地描述这些概念的标记,并且使用代码生成技术来生成形成用于构建应用的基础的特定类型的几个相关集合。一些所生成的类型的集合可以包括表示可序列化元数据的类型,诸如表、类、表单等。这些类型的实例由应用开发人员设计。例如,应用开发人员可以根据部署应用的组织的要求来设计客户表应当是什么样子以及销售订单形式应当是什么样的。应用运行时,在运行应用时创建、管理和保持这些类型(例如客户表类型、销售订单类型等)的特定实例,并为这些实例交互提供框架和环境以彼此交互。这些交互是构成包括定制系统204的应用的组合。所生成的类型集合还可以包括用于支持创建上述可序列化类型的能力的类型。这些类型被设计时间开发人员工具(如开发环境220中的那些设计时开发人员工具)所消耗。它们为开发人员218提供了设计上述可序列化类型的能力。
所生成的类型的又一集合包括用于生成和导航元数据实例之间的引用(例如客户表和销售订单表单之间的引用等)的类型集合。这些引用是交叉引用,并且用作开发人员218的生产力工具。
在操作中,DSL建模系统235首先检测指示用户期望预定(engage)DSL建模系统235的用户输入。这由图11D中的框572指示。
DSL建模系统235中的各种组件然后显示DSL建模用户输入机构,其可以被致动以生成各种DSL型模型。显示这些用户输入机构由框574指示。
DSL建模系统235的对应组件然后检测用户输入机构的致动以便生成DSL型模型。这由框576指示。例如,应用类型建模组件552示意性地生成可以被致动以生成DSL建模的应用类型578(图11B所示)的用户界面显示。差异生成类型建模组件554示意性地生成可以被致动以产生差异生成类型580的用户输入机构。开发工具类型建模组件556示意性地显示具有可以被致动以产生开发工具类型582的用户输入机构的用户界面显示。行为创作类型建模器558示意性地生成允许开发人员218生成行为创作类型584的用户界面显示。类似地,性质创作类型建模器560示意性地允许开发人员生成性质创作类型586。也可以创作其他开发工具类型588。
交叉引用生成类型建模组件562示意性地生成具有用户输入机构的用户界面显示,其可以被致动以生成交叉引用生成类型590。应用验证类型建模组件564可以利用可以被致动以生成应用验证类型592的用户输入机构来生成用户界面显示。搜索类型建模组件566用可被致动以生成搜索类型594的用户输入机构来生成用户界面显示,并且其他生产率类型建模组件568可以利用可以被致动以生成其他生产率类型596的用户输入机构来生成用户界面显示。类型存储595中的DSL建模类型597也可以包括其他项目598。因此可以看出,可以在开发环境220内访问各种DSL建模类型597。它们可以用于实际生成应用类型578,以及用于开发环境220中部署的应用开发框架和工具的不同类型的主机。它们可以用于生成用于在各种应用类型578或其他DSL建模类型之间生成交叉引用的类型。它们可以用于生成差异类型580,差异类型580用于生成各种应用类型578之间的差异。它们还可以用于生成不同的应用验证类型592、各种开发工具类型582、和可用于开发环境220中的其他生产率类型596的主机。
当接收到用户输入以在类型存储595中生成各种类型时,DSL建模系统235中的对应组件生成DSL类型模型。这由图11D中的框600指示。然后,它将DSL类型模型保存到类型存储595,在类型存储595中它们可以被开发环境220使用。这由框602指示。在一个示例中,它们被存储为XML文件。这由框604指示。它们当然可以以其他方式存储,如框606所示。
图11C示出了图2所示的架构的部分的框图,其中更详细地示出了运行时环境206和应用类型存储550。在图11C中可以看出,运行时环境206示意性地包括运行时引擎608、用户界面组件610、处理器或服务器612,并且其可以包括其他项目614。环境206示意性地生成具有用于与最终用户208交互的用户输入机构618的用户界面显示器616。最终用户208示意性地与用户输入机构618交互以便控制和操纵在运行时环境206中运行的各种应用或定制系统204。
运行时引擎608示意性地访问存储在应用类型存储550中的各种应用类型578,以便运行包括定制系统204的应用。图11C示出了可以包括多种不同类型的应用类型578。它们可以包括实体620、进程622、安全角色624、工作流程626、表628、类630、表单632或各种各样的其他应用类型634。应用类型存储550也可以存储其他记录或其他信息636。
因此,运行时引擎608示意性地访问类型578以执行进程622或工作流程626、参考安全角色624、类630、表单632等。它还可以对实体620或各种其他记录进行操作。
图12A-12C示出了可以由DSL建模系统235在生成DSL建模类型时生成的示例用户界面显示集合。例如,图12A示出了用户界面显示器,用户界面显示器包括可以被致动以便生成DSL建模的表单类型的用户可致动输入机构。可以看出,表单具有表单设计,表单设计具有表单控件集合。各种控件可以具有方法等。通过致动图12A中的显示元件,开发人员可以示意性地修改表单的DSL定义。
图12B示出了在右侧显示类和关系以及在左侧显示特定类(交互类)的性质集合的用户界面显示。此外,开发人员可以与显示元素进行交互,以生成或修改DSL建模类型。
图12C更详细地示出了编辑DSL模型的一个示例。在图12C中可以看出,用户已经选择了“定制属性”性质。如果用户致动该显示元件(例如通过右键单击或以其他方式),则这使得DSL建模系统235显示允许用户编辑属性的弹出菜单。通过选择弹出显示中的各种字段,用户可以修改或以其他方式改变DSL模型。
在一个示例中,当DSL模型由DSL建模系统235的各种组件生成时,它们被存储为XML文档。图12D-1至12D-5(在此统称为图12D)示出了两个不同的XML文档。第一个是各种类型的DSL模型的XML文档。然后,其示出了DSL扩展的集合的示例XML文档。当然,图12D所示的两个DSL文档仅为了举例而示出。
因此可以看出,本说明书提供了显着的技术优点。作为说明,在某些类型的系统中,开发人员通常必须在基系统内的许多不同类型上手动地手工编码给定的定制。相反,在一个示例中,本框架可以以有效、灵活、并且需要较少的开发人员时间和提高开发人员效率的方式,全面地在整个系统中对所有类型应用定制。本开发环境使用代码生成而以改进定制系统本身的方式来驱动框架实现。
在一个示例中,框架使用增量来存储不同层的定制,并以运行时环境不需要知道增量的方式来构建定制系统。该框架能够以正确的顺序来应用定制增量,并分离地存储增量,使得例如在组织期望从定制系统中移除专有信息的情况下,它们可以容易地从系统中被移除。这可以减少存储和实现定制系统所需的存储开销。
此外,本说明书提供了使用元模型的模型框架,其允许在任何时间检查给定对象以确定已经对对象做了哪些定制。这在升级情况下(例如,组织期望将定制设置迁移到新的系统版本)是有利的。模型框架检查定制系统以识别随后被应用于新系统版本的定制。这减少了需要开发升级系统的开发时间并可以降低开发错误的可能性。
此外,本说明书提供了可以向开发人员生成可视化以促进开发过程的可视化框架。可视化尤其可以识别对各种元素进行的定制以及由于冲突的定制而产生的冲突。例如,集成视图通过允许开发人员更好地了解在各种定制层上已经定制了哪些元素、如何定制这些元素、以及这些定制产生的冲突,从而改善了开发人员的体验。这提供了用于建模定制连同用于区分实际的定制的多个可视提示的集成的可视和设计体验。开发人员可以容易地在提供定制系统的不同视图的不同的用户界面(例如集成可视化和非集成或过滤的可视化)之间切换。此外,开发人员可以容易地处理和解决定制冲突。这可以增强用户体验,并提供更有效、更不容易出错的开发环境。
此外,本说明书提供了DSL建模系统,其有利地允许开发人员使用域特定语言来描述概念(或类型)和关系。其允许开发人员具有用于生成一整套类型的框架,它们为开发工具、应用、用于应用的工具、和集成到这些工具中的其他开发人生产力工具提供框架。通过使用DSL建模类型,可以通过修改对应的模型来容易地修改类型本身。这种模式驱动的方案大大提高了开发环境的效率。在现有系统中,这种信息通常被硬编码到计算内核中,因此为了改变类型的结构或定义,需要大量的手动、耗时和易错的活动。通过在DSL模型中对此信息进行建模,开发人员只需要修改模型,则改变被一直通过系统传播到运行时环境。
目前的讨论提到了处理器和服务器。在一个实施例中,处理器和服务器包括没有单独地示出的具有相关联的存储器和定时电路的计算机处理器。它们是它们所属并由其激活的系统或设备的功能部件,并且促进由这些系统中的其他组件或项目的功能。
此外,已经讨论了许多用户界面显示。它们可以采用各种不同的形式,并且可以具有在其上布置的各种不同的用户可致动的输入机构。例如,用户可致动输入机构可以是文本框、复选框、图标、链接、下拉菜单、搜索框等。它们也可以以各种不同的方式致动。例如,它们可以使用点击设备(诸如轨迹球或鼠标)来被致动。它们可以使用硬件按钮、开关、操纵杆或键盘、拇指开关或拇指垫等来被致动。它们也可以使用虚拟键盘或其他虚拟致动器来被致动。此外,显示它们的屏幕是触敏屏幕,它们可以使用触摸手势来被致动。此外,显示它们的设备具有语音识别组件,它们可以使用语音命令来被致动。
还讨论了多个数据存储。将注意,它们可以各自分成多个数据存储。所有这些都可以是与访问它们的系统本地的,所有这些都可以是远程的,或者一些可以是本地的,而另一些则是远程的。所有这些配置都在本文中被想到。
此外,附图示出了具有归功于每个框的功能的多个框。将注意,可以使用较少的框,因此功能由更少的组件执行。此外,可以使用更多的框,其中功能被分布在多个组件之间。
图13是图2所示的架构200的框图,除了其元件被布置在云计算架构800中之外。云计算提供不需要最终用户关于传递服务的系统的物理位置或配置的知识的计算、软件、数据访问、和存储服务。在各种实施例中,云计算使用适当的协议在诸如因特网的广域网上传递服务。例如,云计算提供商通过广域网传递应用,并且它们可以通过web浏览器或任何其他计算组件进行访问。架构200的软件或组件以及对应的数据可以存储在远程位置的服务器上。云计算环境中的计算资源可以在远程数据中心位置进行整合,它们也可以是分散的。云计算基础设施可以通过共享数据中心传递服务,即使它们呈现为用户的单个访问点。因此,本文描述的组件和功能可以使用云计算架构从远程位置的服务提供商提供。替代地,它们可以从常规服务器提供,或者可以直接安装在客户端设备上,或以其他方式提供。
该描述旨在包括公共云计算和私有云计算。云计算(公共和私有两者)提供了实质上无缝的资源池,以及管理和配置底层硬件基础设施的减少的需求。
公共云由供应商管理,通常支持使用相同基础设施的多个顾客。此外,与私有云相反,公共云可以释放终端用户以不用管理硬件。私有云可以由组织本身管理,基础架构通常不与其他组织共享。组织仍然在某种程度上维护硬件,诸如安装和维修等。
在图13所示的示例中,一些项目类似于图2所示的项目,并且它们被类似地编号。图13具体示出了运行时环境206、开发环境220、类型存储216、和生命周期管理系统244可以位于云802中(其可以是公共的、私有的或其中部分是公共的而另一些是私有的)。因此,用户112和开发人员218分别使用用户设备804和开发人员设备806来通过云802来访问这些系统。用户设备804向用户208渲染用户界面808,并且开发人员设备806向开发人员218渲染用户界面810。
图13还描绘了云架构的另一示例。图13示出了也可以想到的是,架构200的一些元件可以被布置在云802中,而另一些不被布置在云802中。作为示例,类型存储216可以被布置在云802外部,并且通过云802进行访问。在另一示例中,生命周期管理系统244也可以在云802之外,并且通过云802进行访问。在另一示例中,运行时环境206和/或开发环境220也可以在云802之外,并且通过云802访问。无论它们位于何处,它们可以直接由设备804和806访问,通过网络(广域网或局域网)访问,它们可以通过服务托管在远程站点,或者它们可以通过云作为服务提供或由驻留在云端的连接服务访问。本文想到了所有这些架构。
还将注意,架构200或其一部分可以布置在各种各样的不同设备上。这些设备中的一些设备包括服务器、台式计算机、膝上型计算机、平板计算机、或其他移动设备,诸如掌上计算机、手机、智能电话、多媒体播放器、个人数字助理等。
图14是可以用作用户或客户端的手持设备16的手持或移动计算设备的一个示意性实施例的简化框图,其中可以部署本系统(或其部分)。图15-16是手持设备或移动设备的示例。
图14提供可以与架构200交互的客户端设备16的组件的一般框图。在一个示例中,客户端设备16可以运行运行时环境206或开发环境220或运行时环境206和开发环境220两者的组件。在设备16中,提供通信链路13,其允许手持设备与其他计算设备进行通信,并且在一些实施例下提供用于例如通过扫描来自动地接收信息的信道。通信链路13的示例包括红外端口、串行/USB端口、诸如以太网端口的有线网络端口、以及允许通过包括以下各项的一个或多个通信协议的通信的无线网络端口:作为用于向网络提供蜂窝接入的无线服务的通用分组无线业务(GPRS)、LTE、HSPA、HSPA+和其他3G和4G无线电协议、1Xrtt和短消息服务;以及向网络提供本地无线连接的Wi-Fi协议和蓝牙协议。
在其他示例下,在连接到SD卡接口15的可移除安全数字(SD)卡上接收应用或系统。SD卡接口15和通信链路13与处理器17(其也可以体现图2的处理器226)沿着还连接到存储器21和输入/输出(I/O)组件23以及时钟25和位置系统27的总线19进行通信。
在一个实施例中,I/O组件23被提供以促进输入和输出操作。设备16的各种实施例的I/O组件23可以包括:诸如按钮、触摸传感器、多点触摸传感器、光学或视频传感器、语音传感器、触摸屏、接近传感器、麦克风、倾斜传感器和重力开关的输入传感器;以及诸如显示设备、扬声器和打印机端口的输出组件。也可以使用其他I/O组件23。
时钟25示意性地包括输出时间和日期的实时时钟组件。也可以示意性地为处理器17提供定时功能。
位置系统27示意性地包括输出设备16的当前地理位置的组件。其可以包括例如全球定位系统(GPS)接收机、LORAN系统、航位推算(dead reckoning)系统、蜂窝三角测量系统、或其他定位系统。其还可以包括例如生成所需地图、导航路线和其他地理功能的地图软件或导航软件。
存储器21存储操作系统29、网络设置31、应用33、应用配置设置35、数据存储器37、通信驱动器39以及通信配置设置41。存储器21可以包括所有类型的有形易失性和非易失性计算机可读存储器设备。其还可以包括计算机存储介质(如下所述)。存储器21存储当由处理器17执行时使处理器根据指令执行计算机实现的步骤或功能的计算机可读指令。类似地,设备16可以具有可以运行各种应用的客户端系统24。处理器17可以被其他组件激活以同样促进它们的功能。
网络设置31的示例包括诸如代理信息、因特网连接信息和映射的内容。应用配置设置35包括为特定企业或用户定制应用的设置。通信配置设置41提供用于与其他计算机通信的参数,并且包括诸如GPRS参数、SMS参数、连接用户名和密码的项目。
应用33可以是先前已经存储在设备16上的应用或在使用期间安装的应用,尽管这些应用也可以是操作系统29的一部分,也可以被托管在设备16外部。
图15示出了其中设备16是平板计算机820的一个实施例。在图15中,示出了具有用户界面显示屏幕822的计算机820。屏幕822可以是触摸屏(因此来自用户手指的触摸手势可以用于与应用交互)或从笔或触控笔接收输入的支持笔功能的界面。其也可以使用屏幕上的虚拟键盘。当然,也可以通过诸如无线链路或USB端口的合适的附接机构将其连接到键盘或其他用户输入设备。计算机820也可以示意性地接收语音输入。
还可以使用设备16的附加示例。设备16可以是特征电话、智能电话或移动电话。手机可以包括用于拨打电话号码的键区、能够显示包括应用图像、图标、网页、照片和视频的图像的显示器、以及用于选择显示器上示出的项目的控件按钮的集合。该电话包括用于接收诸如通用分组无线业务(GPRS)和1Xrtt以及短消息业务(SMS)信号的蜂窝电话信号的天线。在一些示例中,手机还包括一个可接受SD卡的安全数字(SD)卡插槽。
移动设备也可以是个人数字助理或多媒体播放器或平板计算设备等(以下称为PDA)。PDA可以包括当触控笔位于屏幕上方时,感应触控笔(或诸如用户的手指的其他指点器)的位置的感应屏幕。这允许用户选择、突出显示、和移动屏幕上的项目以及绘图和书写。PDA还可以包括多个用户输入键或按钮,其允许用户滚动经过菜单选项或显示在显示器上的其他显示选项,并且允许用户改变应用或选择用户输入功能,而不需要接触显示器。PDA可以包括允许与其他计算机的无线通信的内部天线和红外发射器/接收器、以及允许与其他计算设备的硬件连接的连接端口。这样的硬件连接通常通过支架进行,支架通过串行端口或USB端口连接到另一台计算机。因此,这些连接是非网络连接。
图16示出了电话可以是智能电话840。智能电话840具有显示图标或展开图(tile)的触敏显示器842或其他用户输入机构844。用户可以使用机构844来运行应用、进行呼叫、执行数据传输操作等。通常,智能电话840建立在移动操作系统上,并且提供比功能电话更高级的计算能力和连接性。
注意,其他形式的设备16是可能的。
图17是可以部署架构200或其部分(例如)的计算环境的一个实施例。参考图17,用于实现一些实施例的示例性系统包括计算机910形式的通用计算设备。计算机910的组件可以包括但不限于处理单元920(其可以包括上述处理器中的任意一个)、系统存储器930和将包括系统存储器的各种系统组件耦合到处理单元920的系统总线921。系统总线921可以是包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任一种的本地总线的几种类型的总线结构中的任一种。作为示例而非限制,这种架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线、和外围组件互连(PCI)总线(也被称为夹层(Mezzanine)总线)。关于图2描述的存储器和程序可以部署在图17的对应部分中。
计算机910通常包括各种计算机可读介质。计算机可读介质可以是可由计算机910访问的任何可用介质,并且包括易失性介质和非易失性介质、可移除和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质与调制数据信号或载波不同,也不包括调制数据信号或载波。其包括硬件存储介质,其包括以用于诸如计算机可读指令、数据结构、程序模块或其他数据的信息的存储的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备、或可用于存储期望的信息并且可由计算机910访问的任何其他介质。通信介质通常在传输机构中体现计算机可读指令、数据结构、程序模块、或其他数据,并且包括任何信息传递介质。术语“调制数据信号”是指以对信号中的信息进行编码的方式设置或改变其特征中的一个或多个的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质以及诸如声学、RF、红外的无线介质和其它无线介质。上述任一项的组合也应包括在计算机可读介质的范围内。
系统存储器930包括诸如只读存储器(ROM)931和随机存取存储器(RAM)932的易失性存储器和/或非易失性存储器形式的计算机存储介质。基本输入/输出系统933(BIOS)通常存储在ROM 931中,其包含帮助诸如在启动期间在计算机910内的元件之间传送信息的基本例程。RAM 932通常包含可以通过处理单元920立即访问和/或当前正在处理单元920上操作的数据和/或程序模块。作为示例而非限制,图17示出了操作系统934、应用程序935、其他程序模块936、和程序数据937。
计算机910还可以包括其他可移除/不可移除的易失性/非易失性计算机存储介质。仅作为示例,图17示出了:从不可移除、非易失性磁性介质读取或向不可移除、非易失性磁性介质写入的硬盘驱动器941;以及从诸如CD ROM或其他光学介质的可移除、非易失性光盘956读取或向诸如CD ROM或其他光学介质的可移除、非易失性光盘956写入的光盘驱动器955。可以在示意性操作环境中使用的其他可移除/不可移除、易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等。硬盘驱动器941通常通过诸如接口940的不可移除存储器接口连接到系统总线921,并且光盘驱动器955通常通过诸如接口950的可移除存储器接口连接到系统总线921。
替代地或另外地,本文描述的功能可以至少部分地由一个或多个硬件逻辑组件来执行。例如但不限于,可以使用的示意性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、程序专用集成电路(ASIC)、程序专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等
上面讨论并在图17中示出的驱动器及其相关联的计算机存储介质,为计算机910提供计算机可读指令、数据结构、程序模块和其他数据的存储。在图17中,例如,硬盘驱动器941被示为存储操作系统944、应用945、其他程序模块946和程序数据947。注意,这些组件可以与操作系统934、应用程序935、其他程序模块936和程序数据937相同或不同。操作系统944、应用程序945、其他程序模块946和程序数据947在这里给出不同的数字,以说明至少它们是不同的副本。
用户可以通过诸如键盘962、麦克风963和诸如鼠标、轨迹球或触摸板的指示设备961的输入设备来将命令和信息输入到计算机910中。其他输入设备(未示出)可以包括操纵杆、游戏垫、卫星天线、扫描仪等。这些和其他输入设备通常通过耦合到系统总线的用户输入接口960连接到处理单元920,但是可以通过其他接口和总线结构连接,诸如并行端口、游戏端口或通用串行总线(USB)。可视化显示器991或其他类型的显示设备也经由诸如视频接口990的接口连接到系统总线921。除了监视器之外,计算机还可以包括可以通过输出外围接口995连接的其他外围输出设备,诸如扬声器997和打印机996。
计算机910在联网环境中使用与诸如远程计算机980的一个或多个远程计算机的逻辑连接来操作。远程计算机980可以是个人计算机、手持设备、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且通常包括上文相对于计算机910描述的元件中的一些或全部。图17中描绘的逻辑连接包括局域网(LAN)971和广域网(WAN)973,但也可能包括其他网络。这样的联网环境在办公室、企业范围的计算机网络、内联网和互联网中是常见的。
当在LAN联网环境中使用时,计算机910通过网络接口或适配器970连接到LAN971。当在WAN联网环境中使用时,计算机910通常包括调制解调器972或用于通过诸如互联网的WAN 973建立通信的其他部件。可以是内部或外部的调制解调器972可以经由用户输入接口960或其他适当的机构连接到系统总线921。在联网环境中,相对于计算机910描绘的程序模块或其部分可存储在远程存储器存储设备中。作为示例而非限制,图17示出了驻留在远程计算机980上的远程应用985。应当理解,所示的网络连接是示意性的,并且可以使用在计算机之间建立通信链路的其他手段。
还应当注意,本文描述的不同实施例可以以不同的方式组合。也就是说,一个或多个实施例的部分可以与一个或多个其他实施例的部分组合。所有这一切都在本文中被想到。
示例1是一种计算系统,包括:升级系统,被配置为检测用户升级输入以获得所述计算系统的升级版本,所述用户升级输入指示所述计算系统的基版本将通过向所述基版本应用升级改变的集合而被升级;差异生成系统,被配置为获取所述计算系统的所述基版本的定制版本并且识别所述定制版本对应于被应用了定制的所述基版本;组合引擎,被配置为获得被应用于所述基版本的所述定制和所述升级改变,并且将所述定制与所述升级改变进行组合以获得完整改变集合;以及差异应用引擎,被配置为将所述完整改变集合应用于所述计算系统的所述基版本以获得所述计算系统的定制的升级版本。
示例2是任意一个或全部先前示例中的计算系统,其中所述组合引擎还包括:差异计算引擎,被配置为识别要对所述计算系统的所述基版本作出的所述完整改变集合以获得所述计算系统的所述定制的升级版本,并且将所述完整改变集合保存为对应于所述定制的升级版本。
示例3是任意一个或全部先前示例中的计算系统,其中所述差异生成系统被配置为应用定义所述计算系统的类型系统框架的元模型,以检查所述定制版本中的类型的原语,从而确定改变已经被作出。
示例4是任意一个或全部先前示例中的计算系统,其中所述差异计算引擎包括:原语差异计算组件,被配置为通过识别对其作出改变的所述定制版本中的类型来识别所述完整改变集合,将所述定制版本中的所述类型拆解为其原语组件,以及将所述原语组件与所述基版本中的所述类型中的对应原语组件进行比较,并且其中所述原语差异计算组件被配置为识别对其作出改变的所述升级版本中的类型,将所述升级版本中的所述类型拆解为其原语组件,以及将所述原语组件与所述基版本中的所述类型中的对应原语组件进行比较。
示例5是任意一个或全部先前示例中的计算系统,其中所述差异应用引擎包括:原语差异应用组件,被配置为通过识别对其作出改变的所述升级版本中的类型来将所述完整改变集合应用于所述基版本,将所述类型拆解为其原语组件,向所述原语组件应用升级改变以获得升级的原语组件,以及向所述升级的原语组件应用所述定制。
示例6是任意一个或全部先前示例中的计算系统,并且还包括:冲突解决系统,被配置为识别定制和升级改变之间的冲突。
示例7是任意一个或全部先前示例中的计算系统,其中所述冲突解决系统包括:自动解决组件,被配置为识别能够被自动解决的被识别的冲突的集合,并且自动地解决被识别的冲突的所述集合。
示例8是任意一个或全部先前示例中的计算系统,其中所述冲突解决系统包括:冲突显现组件,被配置为识别要被显现用于手动解决的冲突并且在用户界面显示器上显现所述被识别的冲突,所述用户界面显示器具有被致动以解决所述被识别的冲突的冲突解决用户输入机构。
示例9是任意一个或全部先前示例中的计算系统,其中至少差异生成系统和组合引擎被部署为基于云的服务。
示例10是一种计算机实现的方法,包括:检测用户升级输入以获得所述计算系统的升级版本,所述用户升级输入指示所述计算系统的基版本将通过向所述基版本应用升级改变的集合而被升级;获取所述计算系统的所述基版本的定制版本;识别所述定制版本对应于被应用了定制的所述基版本;获得被应用于所述基版本的所述定制和所述升级改变;将所述定制与所述升级改变进行组合以获得完整改变集合;以及将所述完整改变集合应用于所述计算系统的所述基版本以获得所述计算系统的定制的升级版本。
示例11是任意一个或全部先前示例中的计算机实现的方法,并且还包括:识别要对所述计算系统的所述基版本作出的所述完整改变集合以获得所述计算系统的所述定制的升级版本;以及将所述完整改变集合存储为对应于所述定制的升级版本。
示例12是任意一个或全部先前示例中的计算机实现的方法,并且还包括:应用定义所述计算系统的类型系统框架的元模型,以检查所述定制版本中的类型的原语,从而确定改变已经被作出。
示例13是任意一个或全部先前示例中的计算机实现的方法,其中识别所述完整改变集合包括:识别对其作出改变的所述定制版本中的类型;将所述定制版本中的所述类型拆解为其原语组件并且将所述原语组件与所述基版本中的所述类型中的对应原语组件进行比较;识别对其作出改变的所述升级版本中的类型;以及将所述升级版本中的所述类型拆解为其原语组件并且将所述原语组件与所述基版本中的所述类型中的对应原语组件进行比较。
示例14是任意一个或全部先前示例中的计算机实现的方法,其中向所述基版本应用所述完整改变集合包括:识别对其作出改变的所述升级版本中的类型;将所述升级版本中的所述类型拆解为其原语组件;向所述原语组件应用升级改变以获取升级的原语组件;以及向所述升级的原语组件应用所述定制。
示例15是任意一个或全部先前示例中的计算机实现的方法,并且还包括:识别定制和升级改变之间的冲突。
示例16是任意一个或全部先前示例中的计算机实现的方法,并且还包括识别可以自动解决的所识别的冲突的集合,并且自动地解决所识别的冲突的集合。
示例17是任意一个或全部先前示例中的计算机实现的方法,并且还包括:识别要被显现用于手动解决的冲突并且在具有被致动以解决所识别的冲突的冲突解决用户输入机构的用户界面显示器上显现所识别的冲突。
示例18是任意一个或全部先前示例中的计算机实现的方法,其中获取基版本的定制版本并获得应用于基版本的定制以及升级改变的步骤由一个或多个基于云的服务执行。
示例19是一种升级系统,被配置为检测用户升级输入以获得所述计算系统的升级版本,所述用户升级输入指示所述计算系统的基版本将通过向所述基版本应用升级改变的集合而被升级;差异生成系统,被配置为获取所述计算系统的所述基版本的定制版本,并且识别所述定制版本对应于具有应用了定制的所述基版本,所述差异生成系统检查所述定制版本中的类型的原语以确定改变已经被作出;组合引擎,被配置为获得被应用于所述基版本的所述定制和所述升级改变,并将所述定制与所述升级改变进行组合以获得完整改变集合;以及差异应用引擎,被配置为将所述完整改变集合应用于所述计算系统的所述基版本以获得所述计算系统的定制、升级版本,其中所述差异应用引擎包括:原语差异应用组件,被配置为通过识别对其作出改变的所述升级版本中的类型来将所述完整改变集合应用于所述基版本,将所述类型拆解为其原语组件,将升级改变应用于所述原语组件以获得升级的原语组件,并将所述定制应用于所述升级的原语组件
示例20是任何或所有先前示例的计算系统,并且还包括:冲突解决系统,被配置为识别定制和升级改变之间的冲突。
虽然主题已经以结构特征和/或方法动作特定的语言描述,但是应当理解,所附权利要求中限定的主题不一定限于上述具体特征或动作。相反,上述具体特征和动作被公开为实施权利要求的示例形式,并且其他等同特征和动作旨在在权利要求的范围内。
Claims (15)
1.一种计算系统,包括:
升级系统,其检测用户升级输入以获得所述计算系统的升级版本,所述用户升级输入指示所述计算系统的基版本将通过向所述基版本应用升级改变的集合而被升级;
差异生成系统,其获取所述计算系统的所述基版本的定制版本并且识别所述定制版本对应于被应用了定制的所述基版本;
组合引擎,其获得被应用于所述基版本的所述定制和所述升级改变,并且将所述定制与所述升级改变进行组合以获得完整改变集合;以及
差异应用引擎,其将所述完整改变集合应用于所述计算系统的所述基版本以获得所述计算系统的定制的升级版本。
2.根据权利要求1所述的计算系统,其中所述组合引擎还包括:
差异计算引擎,其识别要对所述计算系统的所述基版本作出的所述完整改变集合以获得所述计算系统的所述定制的升级版本,并且将所述完整改变集合保存为对应于所述定制的升级版本。
3.根据权利要求2所述的计算系统,所述差异生成系统应用定义所述计算系统的类型系统框架的元模型,以检查所述定制版本中的类型的原语,从而确定改变已经被作出。
4.根据权利要求3所述的计算系统,其中所述差异计算引擎包括:
原语差异计算组件,其通过识别对其作出改变的所述定制版本中的类型来识别所述完整改变集合,将所述定制版本中的所述类型拆解为其原语组件,以及将所述原语组件与所述基版本中的所述类型中的对应原语组件进行比较,并且所述原语差异计算组件识别对其作出改变的所述升级版本中的类型,将所述升级版本中的所述类型拆解为其原语组件,以及将所述原语组件与所述基版本中的所述类型中的对应原语组件进行比较。
5.根据权利要求3所述的计算系统,其中所述差异应用引擎包括:
原语差异应用组件,其通过识别对其作出改变的所述升级版本中的类型来将所述完整改变集合应用于所述基版本,将所述类型拆解为其原语组件,向所述原语组件应用升级改变以获得升级的原语组件,以及向所述升级的原语组件应用所述定制。
6.根据权利要求1所述的计算系统,还包括:
冲突解决系统,其识别所述定制和升级改变之间的冲突。
7.根据权利要求6所述的计算系统,其中所述冲突解决系统包括:
自动解决组件,其识别能够被自动解决的被识别的冲突的集合,并且自动地解决被识别的冲突的所述集合。
8.根据权利要求6所述的计算系统,其中所述冲突解决系统包括:
冲突显现组件,其识别要被显现用于手动解决的冲突并且在用户界面显示器上显现所述被识别的冲突,所述用户界面显示器具有被致动以解决所述被识别的冲突的冲突解决用户输入机构。
9.根据权利要求1所述的计算系统,其中至少所述差异生成系统和组合引擎被部署为基于云的服务。
10.一种计算机实现的方法,包括:
检测用户升级输入以获得所述计算系统的升级版本,所述用户升级输入指示所述计算系统的基版本将通过向所述基版本应用升级改变的集合而被升级;
获取所述计算系统的所述基版本的定制版本;
识别所述定制版本对应于被应用了定制的所述基版本;
获得被应用于所述基版本的所述定制和所述升级改变;
将所述定制与所述升级改变进行组合以获得完整改变集合;以及
将所述完整改变集合应用于所述计算系统的所述基版本以获得所述计算系统的定制的升级版本。
11.根据权利要求10所述的计算机实现的方法,还包括:
识别要对所述计算系统的所述基版本作出的所述完整改变集合以获得所述计算系统的所述定制的升级版本;以及
将所述完整改变集合存储为对应于所述定制的升级版本。
12.根据权利要求11所述的计算机实现的方法,还包括:
应用定义所述计算系统的类型系统框架的元模型,以检查所述定制版本中的类型的原语,从而确定改变已经被作出。
13.根据权利要求12所述的计算机实现的方法,其中识别所述完整改变集合包括:
识别对其作出改变的所述定制版本中的类型;
将所述定制版本中的所述类型拆解为其原语组件并且将所述原语组件与所述基版本中的所述类型中的对应原语组件进行比较;
识别对其作出改变的所述升级版本中的类型;以及
将所述升级版本中的所述类型拆解为其原语组件并且将所述原语组件与所述基版本中的所述类型中的对应原语组件进行比较。
14.根据权利要求12所述的计算机实现的方法,其中向所述基版本应用所述完整改变集合包括:
识别对其作出改变的所述升级版本中的类型;
将所述升级版本中的所述类型拆解为其原语组件;
向所述原语组件应用升级改变以获取升级的原语组件;以及
向所述升级的原语组件应用所述定制。
15.一种计算系统,包括:
升级系统,其检测用户升级输入以获得所述计算系统的升级版本,所述用户升级输入指示所述计算系统的基版本将通过向所述基版本应用升级改变的集合而被升级;
差异生成系统,其获取所述计算系统的所述基版本的定制版本并且识别所述定制版本对应于被应用了定制的所述基版本,所述差异生成系统检查所述定制版本中的类型的原语以确定改变已经被作出;
组合引擎,其获得被应用于所述基版本的所述定制和所述升级改变,并且将所述定制与所述升级改变进行组合以获得完整改变集合;以及
差异应用引擎,其向所述计算系统的所述基版本应用所述完整改变集合以获得所述计算系统的定制的升级版本,其中所述差异应用引擎包括:
原语差异应用组件,其通过识别对其作出改变的所述升级版本中的类型来向所述基版本应用改变所述完整集合,将所述类型拆解为其原语组件,向所述原语组件应用升级改变以获取升级的原语组件,以及向所述升级的原语组件应用所述定制。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562133888P | 2015-03-16 | 2015-03-16 | |
US62/133,888 | 2015-03-16 | ||
US14/800,393 | 2015-07-15 | ||
US14/800,393 US10067755B2 (en) | 2015-03-16 | 2015-07-15 | Model driven customization framework |
PCT/US2016/022398 WO2016149228A1 (en) | 2015-03-16 | 2016-03-15 | Model driven customization framework |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107408049A true CN107408049A (zh) | 2017-11-28 |
CN107408049B CN107408049B (zh) | 2021-03-19 |
Family
ID=55543157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680016283.6A Active CN107408049B (zh) | 2015-03-16 | 2016-03-15 | 计算系统和计算机实现的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10067755B2 (zh) |
CN (1) | CN107408049B (zh) |
WO (1) | WO2016149228A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634670A (zh) * | 2018-11-20 | 2019-04-16 | 深圳市优博讯科技股份有限公司 | 一种基于usb otg的pda快速配置方法和装置 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10078501B2 (en) | 2015-03-16 | 2018-09-18 | Microsoft Technology Licensing, Llc | Domain specific language modeling framework in a development environment |
US9959114B2 (en) | 2015-03-16 | 2018-05-01 | Microsoft Technology Licensing, Llc | Representation of customizable types in a development environment |
US20160292295A1 (en) * | 2015-03-30 | 2016-10-06 | International Business Machines Corporation | Change tracking for structured languages |
US10338934B1 (en) * | 2016-03-28 | 2019-07-02 | VCE IP Holding Company LLC | Inter-object validation system and method using chained specialized configuration applications |
US10558440B2 (en) * | 2017-02-02 | 2020-02-11 | Cisco Technology, Inc. | Tightly integrated accelerator functions |
US11068846B1 (en) * | 2017-04-26 | 2021-07-20 | EMC IP Holding Company LLC | Workgroup management system and method for individual sub-systems of an integrated computing system |
US10466981B1 (en) * | 2017-06-06 | 2019-11-05 | Prattle Analytics, LLC | System and method for generative programming in an integrated development environment (IDE) |
US10545755B2 (en) | 2017-09-07 | 2020-01-28 | Servicenow, Inc. | Identifying customization changes between instances |
US10983780B2 (en) * | 2018-11-14 | 2021-04-20 | Ricoh Company, Ltd. | Information processing apparatus, information processing method, and recording medium |
US11914642B2 (en) * | 2019-12-30 | 2024-02-27 | Gm Cruise Holdings Llc | Difference merging for map portions |
US11288055B2 (en) * | 2020-02-18 | 2022-03-29 | International Business Machines Corporation | Model-based differencing to selectively generate and deploy images in a target computing environment |
Family Cites Families (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5864862A (en) * | 1996-09-30 | 1999-01-26 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for creating reusable components in an object-oriented programming environment |
AU6183798A (en) * | 1997-02-27 | 1998-09-29 | Siebel Systems, Inc. | Method of migrating to a successive level of a software distribution incorporating local modifications |
US6662199B1 (en) | 2000-01-04 | 2003-12-09 | Printcafe Systems, Inc. | Method and apparatus for customized hosted applications |
GB0018042D0 (en) | 2000-07-21 | 2000-09-13 | Monsell Edm Ltd | Method of and software for recordal and validation of changes to markup language files |
US7603657B2 (en) | 2001-03-02 | 2009-10-13 | Oracle International Corporation | Customization of client-server interaction in an internet application |
US6868413B1 (en) | 2001-05-10 | 2005-03-15 | Networks Associates Technology, Inc. | System and method for customizing and processing business logic rules in a business process system |
US7065771B1 (en) | 2001-06-28 | 2006-06-20 | Microsoft Corporation | Distributed types and proxy refinement |
US7017162B2 (en) | 2001-07-10 | 2006-03-21 | Microsoft Corporation | Application program interface for network software platform |
DE10247529A1 (de) | 2001-10-15 | 2003-06-05 | I2 Technologies Inc | Anpassbare Zustandsmaschine und Zustandsaggregationstechnik zur Verarbeitung von Zusammenarbeits- und Transaktionsgeschäftsobjekten |
US7577934B2 (en) | 2003-03-12 | 2009-08-18 | Microsoft Corporation | Framework for modeling and providing runtime behavior for business software applications |
US7080089B2 (en) | 2003-03-12 | 2006-07-18 | Microsoft Corporation | Customization of process logic in a software system |
US7293254B2 (en) | 2003-09-18 | 2007-11-06 | Microsoft Corporation | Extensibility application programming interface and framework for meta-model objects |
US7207002B2 (en) * | 2003-11-13 | 2007-04-17 | International Business Machines Corporation | Serialization and preservation of objects |
US7823120B2 (en) | 2004-03-02 | 2010-10-26 | Metaphor Vision Ltd. | Device, system and method for accelerated modeling |
US20060130047A1 (en) * | 2004-11-30 | 2006-06-15 | Microsoft Corporation | System and apparatus for software versioning |
US7681176B2 (en) | 2005-03-04 | 2010-03-16 | Microsoft Corporation | Generating a graphical designer application for developing graphical models |
US7472376B2 (en) * | 2005-05-27 | 2008-12-30 | Microsoft Corporation | Method and system for customizations in a dynamic environment |
US20070006130A1 (en) * | 2005-06-02 | 2007-01-04 | Arnold Stamler | Model oriented method of automatically detecting alterations in the design of a software system |
US7730448B2 (en) | 2005-08-11 | 2010-06-01 | Microsoft Corporation | Layered type systems |
US7945596B2 (en) | 2006-06-20 | 2011-05-17 | Microsoft Corproation | Programming model for customized data objects |
US7590654B2 (en) | 2006-06-30 | 2009-09-15 | Microsoft Corporation | Type definition language for defining content-index from a rich structured WinFS data type |
US8726234B2 (en) | 2006-08-18 | 2014-05-13 | Microsoft Corporation | User-customized extensions for software applications |
US8161078B2 (en) | 2006-09-20 | 2012-04-17 | Microsoft Corporation | Electronic data interchange (EDI) data dictionary management and versioning system |
US7925659B2 (en) | 2006-10-09 | 2011-04-12 | Sap Ag | Business process change analysis and test case adaptation based on change detection |
US20080155504A1 (en) * | 2006-12-21 | 2008-06-26 | International Business Machines Corporation | Method and system for automated merging of multiple versions of a software component for an application |
US7624131B2 (en) | 2007-01-18 | 2009-11-24 | Microsoft Corporation | Type restriction and mapping for partial materialization |
US20080183725A1 (en) | 2007-01-31 | 2008-07-31 | Microsoft Corporation | Metadata service employing common data model |
JP5293595B2 (ja) * | 2007-03-20 | 2013-09-18 | 富士通株式会社 | コンピュータプログラム、更新システム、及びプログラム実行装置 |
US20080250071A1 (en) | 2007-04-06 | 2008-10-09 | Synerg Software Corporation | Systems and methods for business applications |
US8504593B2 (en) | 2007-06-29 | 2013-08-06 | Microsoft Corporation | Server directory schema comparator |
US20090064090A1 (en) * | 2007-09-05 | 2009-03-05 | Microsoft Corporation | Merged view of application customizations |
US20090119311A1 (en) * | 2007-11-06 | 2009-05-07 | International Business Machines Corporation | Systems, methods, and computer products for in-place model attribute comparison |
US8516442B2 (en) | 2008-02-27 | 2013-08-20 | Accenture Global Services Limited | Graphical user interface metadata evolution tool |
US8533672B2 (en) | 2008-03-20 | 2013-09-10 | Sap Ag | Extending the functionality of a host programming language |
US20090288068A1 (en) | 2008-05-13 | 2009-11-19 | Facton Gmbh | Domain model concept for developing computer applications |
US8745611B2 (en) * | 2008-06-05 | 2014-06-03 | Accenture Global Services Limited | Software upgrade analysis system |
US8312430B2 (en) * | 2008-08-27 | 2012-11-13 | International Business Machines Corporation | Guarding code check-in with test case execution results |
US8321834B2 (en) * | 2008-09-25 | 2012-11-27 | International Business Machines Corporation | Framework for automatically merging customizations to structured code that has been refactored |
US8286132B2 (en) * | 2008-09-25 | 2012-10-09 | International Business Machines Corporation | Comparing and merging structured documents syntactically and semantically |
US20100169234A1 (en) | 2009-01-01 | 2010-07-01 | Wizbill Ltd | Method for Capturing the Essence of Product and Service Offers of Service Providers |
US20100175044A1 (en) | 2009-01-07 | 2010-07-08 | Infosys Technologies Limited | Method for creating software factory for developing j2ee applications |
US20100306010A1 (en) | 2009-06-01 | 2010-12-02 | Microsoft Corporation | Interactive map/diagram of erp code and model elements |
JP2011055248A (ja) * | 2009-09-02 | 2011-03-17 | Fuji Xerox Co Ltd | ソフトウエアの更新・追加管理装置、ソフトウエアの更新・追加管理プログラム及び複合機 |
US8856737B2 (en) | 2009-11-18 | 2014-10-07 | Oracle International Corporation | Techniques for displaying customizations for composite applications |
US8549478B2 (en) | 2009-12-02 | 2013-10-01 | Hewlett-Packard Development Company, L.P. | Graphical user interface input element identification |
US8707250B2 (en) | 2009-12-22 | 2014-04-22 | Board Of Regents, The University Of Texas System | Automation support for domain modeling |
US8302014B2 (en) * | 2010-06-11 | 2012-10-30 | Microsoft Corporation | Merging modifications to user interface components while preserving user customizations |
US8782606B1 (en) | 2010-08-22 | 2014-07-15 | Panaya Ltd. | Method and system for identifying non-executable human-readable test scenarios to be updated due to code changes |
US20120072886A1 (en) | 2010-09-16 | 2012-03-22 | Starview Technology, Inc. | Domain specific language creation |
US20120144380A1 (en) * | 2010-12-07 | 2012-06-07 | Samsung Electronics Co. Ltd. | Method for generating delta file using basic blocks |
US8639729B2 (en) | 2010-12-20 | 2014-01-28 | Sap Ag | Executing a business process in a framework |
US20120210296A1 (en) | 2011-02-14 | 2012-08-16 | Microsoft Corporation | Automatically creating business applications from description of business processes |
US8442935B2 (en) | 2011-03-30 | 2013-05-14 | Microsoft Corporation | Extract, transform and load using metadata |
US20120260233A1 (en) | 2011-04-07 | 2012-10-11 | Infosys Technologies Limited | Method and system for automating development and customization of business applications |
US8732664B2 (en) * | 2011-05-17 | 2014-05-20 | Microsoft Corporation | Document serialization and comparison via object model |
WO2013012690A1 (en) | 2011-07-15 | 2013-01-24 | Integware, Inc. | Software automated data and data model upgrade system |
US20130067456A1 (en) | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Application configuration framework for enterprise resource planning application installation |
US8849996B2 (en) | 2011-09-12 | 2014-09-30 | Microsoft Corporation | Efficiently providing multiple metadata representations of the same type |
US20130339254A1 (en) | 2012-06-15 | 2013-12-19 | Oleg Figlin | Task Repository |
US9009615B2 (en) | 2012-10-17 | 2015-04-14 | Microsoft Technology Licensing, Llc | Portal for submitting business metadata for services |
US10289407B1 (en) * | 2013-03-15 | 2019-05-14 | Atlassian Pty Ltd | Correcting comment drift in merges in a version control system |
US9280319B2 (en) | 2013-10-18 | 2016-03-08 | Microsoft Technology Licensing, Llc | Integrated visualization for modeled customizations |
US10650019B2 (en) | 2014-03-06 | 2020-05-12 | International Business Machines Corporation | Managing data conversion for user-defined data types within a database management system |
US9038037B1 (en) | 2014-07-22 | 2015-05-19 | Ted J. Biggerstaff | Automatically solving simultaneous type equations for type difference transformations that redesign code |
US9389934B1 (en) | 2014-12-18 | 2016-07-12 | Sap Se | Centralized and distributed notification handling system for software applications |
US9959114B2 (en) | 2015-03-16 | 2018-05-01 | Microsoft Technology Licensing, Llc | Representation of customizable types in a development environment |
US10078501B2 (en) | 2015-03-16 | 2018-09-18 | Microsoft Technology Licensing, Llc | Domain specific language modeling framework in a development environment |
-
2015
- 2015-07-15 US US14/800,393 patent/US10067755B2/en active Active
-
2016
- 2016-03-15 CN CN201680016283.6A patent/CN107408049B/zh active Active
- 2016-03-15 WO PCT/US2016/022398 patent/WO2016149228A1/en active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634670A (zh) * | 2018-11-20 | 2019-04-16 | 深圳市优博讯科技股份有限公司 | 一种基于usb otg的pda快速配置方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20160274889A1 (en) | 2016-09-22 |
US10067755B2 (en) | 2018-09-04 |
CN107408049B (zh) | 2021-03-19 |
WO2016149228A1 (en) | 2016-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430515A (zh) | 开发环境中的可定制类型的可视化框架 | |
CN107408049A (zh) | 模型驱动定制框架 | |
US10379847B2 (en) | Representation of customizable types in a development environment | |
US10078501B2 (en) | Domain specific language modeling framework in a development environment | |
US9626176B2 (en) | Update installer with technical impact analysis | |
US9830142B2 (en) | Automatic installation of selected updates in multiple environments | |
CN106471517B (zh) | 对显示元素的因用户而异的可视化 | |
CN105830019B (zh) | 用于基本模型定制的集成环境 | |
CN107810509A (zh) | 工作流生成和编辑 | |
US10026064B2 (en) | Automatically recommending updates based on stored lifecycle information | |
CN105229678A (zh) | 进程建模和界面 | |
US20130159036A1 (en) | Runtime generation of instance contexts via model-based data relationships | |
CN105612495A (zh) | 在计算机系统中安装所选更新之后自动解决冲突 | |
US20160314062A1 (en) | Test case generation in a development environment | |
CN104737124B (zh) | 用于提交服务的业务元数据的门户 | |
CN106133697A (zh) | 具有分支和门控的便携式业务逻辑 | |
US20140279823A1 (en) | Lifecycle product analysis | |
CN106164851B (zh) | 基于对已实现的过程进行过程建模的计算机系统的自动配置 | |
CN107257956A (zh) | 具有自动升级的分层数据表面处理配置 | |
CN106575387A (zh) | 智能过程流 | |
US20150106152A1 (en) | Continuously tracing issues through the lifecycle phases of a project | |
CN106663004A (zh) | 订阅者定义的动态事件 | |
US10032203B2 (en) | Dynamic property surfacing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |