CN103119557A - 云计算环境中的企业应用的基于模式的构造和扩展 - Google Patents
云计算环境中的企业应用的基于模式的构造和扩展 Download PDFInfo
- Publication number
- CN103119557A CN103119557A CN2011800444149A CN201180044414A CN103119557A CN 103119557 A CN103119557 A CN 103119557A CN 2011800444149 A CN2011800444149 A CN 2011800444149A CN 201180044414 A CN201180044414 A CN 201180044414A CN 103119557 A CN103119557 A CN 103119557A
- Authority
- CN
- China
- Prior art keywords
- pattern
- enterprise software
- artefact
- extensibility
- framework
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/316—Aspect-oriented programming techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
公开了用于在企业环境内扩展和修改软件功能,更具体而言,用于在企业环境内采用针对企业软件对象的一个或多个模式表达期望的功能和配置,以及采用所述模式生成所述企业软件对象的方法、软件程序和***。根据这些实施例中的某些实施例的方法包括从多个模式中选择一个或多个模式,其中,所述一个或多个模式是针对企业软件对象的。之后能够生成企业软件对象。所述企业软件对象是采用所述一个或多个模式生成的。每一模式被配置为描述多个问题域中的对应的一个问题域内的解决方案。
Description
相关申请的交叉引用
本申请要求2010年9月17日提交的发明名称为“Pattern-BasedConstruction and Extension of Enterprise Applications in a CloudComputing Environment”、发明人为Rahim Mohamed Yaseen、JohnLiang、Yunhee Choi和Xiaomei Zhang的美国临时申请No.61/384086的优先权。这里通过引用将上文提及的申请全文并入本文并且用于所有目的。
技术领域
本发明涉及软件功能的扩展和修改,更具体而言,涉及采用一个或多个模式使企业软件对象表现出期望的功能和配置,以及在企业环境中采用所述模式生成企业软件对象。
背景技术
与虚拟化和大规模实用程序计算联合的计算的成本的降低引发了普遍的计算资源和网络连通性,其又引发了新的计算范例(例如,云计算)。这样的因特网规模的计算资源能够为多个应用降低运作成本。云计算进一步为合作式应用以及移动平台目标提供了基础。云计算以可分级的服务器平台为基础,其适于处理存在高度交互的协作式应用(例如,社交应用和基于云的办公室应用)的计算负载。
随着因特网规模的计算基础设施变得越来越为大规模付费服务所承受得起,云计算用户将寻求与之匹配的软件资源装备能力。云计算资源能够提供平台即服务(PaaS)产品,其包括在云基础设施内支持的软件和产品开发工具。或者,软件即服务(SaaS)云模型包括通过前端入口与用户交互的软件产品。在这样的环境中,用户将希望软件功能处于能够支付得起的价格范围内。这样的用户可能是(例如)在软件编程方面即使受过培训和/或具有经验也十分有限的商业用户。尽管如此,云资源的企业客户仍然需要按照与其需求相适应的方式进行软件配置。
历史上,一直在从计算机的角度解决软件的创建。大部分软件都是利用通用程序设计语言表达的。因而,程序的重点在于计算机的要求是什么(例如,执行细节)上,而不是开发软件所要解决的问题。因而,要通过修改程序的代码实施所述问题或者预期解决方案的处理变化。但是用于写软件的通用程序设计语言却是具有一般性的,因而其并非是为了清晰地表达所要解决的问题而创造出来的。其使得编写这样的软件以及以后做出修改(例如,反映由其解决的问题的变化)都是一项困难的任务。
对所要解决的问题最为熟悉的人当数在其特定的问题域使用所述软件的人。域专家熟知在所述问题域必须满足的议题、概念和定义。另一方面,软件程序员则具有软件创建方面的专业技能,在传统上其与域专家一起工作来生成软件。这种任务和专业技能的分工不可避免地导致一方或者双方遭受挫折,因为程序规范的变化以及该问题域的复杂性是能够被域专家所理解的,但是其将导致程序员一方的大量重写和修订。类似地,程序员一方对域专家提供的描述做出错误的理解可能导致域专家一方受挫。
图1A是示出了传统的软件开发工作流程的简化方框图。域专家105将问题陈述传达给程序员110。这一操作通常是采用不能自动转换成代码的格式完成的,例如,规范、使用情况、情节、注解、草图等。于是,程序员110将采用如此描述的意向连同程序员在软件工程方面的知识和专业技能创建能够通过计算机执行的源代码115。出于维护或者校正目的对软件所做的修改必须在域专家105提供的问题陈述中定义,之后单独由程序员110实施。为了对程序进行扩展或者维护,程序员110必须将实施分解,围绕所讨论的部分进行推理,解决问题,之后将实施重新组合,从而获得预期的结果。这一“拆分”软件,之后重新将软件合并起来的过程可能引入程序设计错误,并且提高了软件成本。
为了使软件反映域专家对该软件的意图,优选通过域术语表达所述问题。这必然需要采取另一步骤通过域术语做出问题说明,并将该说明转换成计算机能够执行的软件,即,程序生成。尽管程序员能够通过采用所述软件解决的域问题所熟悉的术语的方式编写代码,但是能够证明这样的程序设计在其域具有复杂词汇的大的***当中或者在其他这样的情况下存在困难。
因此,考虑到上述内容并且为了适应用户对企业级云编程设施的需求,希望为这样的用户提供这样的应用开发环境,其(1)足够简单,能够被缺乏广泛的编程训练和/或经验的用户使用,(2)充分地易于定制,从而既与这样的用户的技能匹配,又能够实现有效率的定制。此外这样的应用开发环境还应当使应用定制通过这样的一种方式执行,即,不会对其他用户对所涉及的云资源(例如,正被定制的应用)的访问造成干扰。
发明内容
在本发明的各种实施例中,公开了用于在企业环境内对软件功能进行扩展和修改,更具体而言,用于在企业环境内采用一个或多个用于企业软件对象的模式表达期望的功能和构造,以及采用所述模式生成企业软件对象的方法、软件程序和***。根据这些实施例中的某些实施例的方法包括从多个模式中选择一个或多个模式,其中,所述一个或多个模式是针对企业软件对象的。之后能够生成企业软件对象。所述企业软件对象是采用所述一个或多个模式生成的。将所述模式中的每个配置为描述多个问题域中的对应的一个之内的解决方案。
上文只是一个概括,因而其必然含有细节的简化、一般化和省略;因此,本域技术人员将认识到所述概括只是说明性的,而不是旨在做出任何限制。唯独通过权利要求定义的本发明的其他方面、创造性特征和优点将在下文阐述的非限制性详细说明中变得显而易见。
附图说明
通过参考附图能够对本发明更好地理解,并且能够使本发明的多个目的、特征和优点对本域技术人员而言变得显而易见。
图1A是示出了传统的软件开发工作流程的简化方框图。
图1B是示出了生成程序设计工作流程的简化方框图。
图2A是示出了云计算概念的简化方框图。
图2B是示出了根据本发明的实施例的结合了模式的问题解决方案流的例子的简化框图。
图3是示出了采用根据本发明的实施例的采用模式的企业软件对象生成的例子的简化流程图。
图4是示出了根据本发明的实施例的在模式创建过程中执行的操作的例子的简化流程图。
图5是示出了根据本发明的实施例的模式、子模式、模式种类和各种规则/方面/模板之间的关系的例子的简化方框图。
图6是示出了可与本发明的实施例结合使用的企业服务器架构的简化方框图。
图7是示出了根据本发明的实施例的可扩展性框架架构的各种元件的方框图。
图8是示出了根据本发明的实施例的的数据模型的简化方框图。
图9是示出了根据本发明的实施例的元数据管理架构的方框图。
图10是示出了根据本发明的实施例的能够通过可扩展性框架架构执行的操作的例子的流程图。
图11是示出了根据本发明的实施例的通过规划指定的操作的例子的流程图。
图12是示出了根据本发明的实施例的能够通过规划指定的操作的例子的流程图。
图13是示出了根据本发明的实施例的可扩展性框架架构的实现和定制软件组件的生成的方框图。
图14A是示出了根据本发明的实施例的包括可扩展性框架的示例架构的方框图。
图14B是示出了根据本发明的实施例的视图对象以及其与根据本发明的实施例的可扩展性框架的其他元件的关系的例子的方框图。
图14C是示出了根据本发明的实施例的实体对象和视图对象的元件之间的交互和关系的例子的方框图。
图15是示出了根据本发明的实施例的可扩展性框架数据库架构的各种特征的方框图。
图16是根据本发明的实施例的网络(网络)服务可扩展性架构的方框图。
图17是示出了根据本发明的实施例的可扩展分析架构的方框图。
图18是描绘适于实现本发明的各个方面的计算机***的方框图。
图19是描绘适于实现本发明的各个方面的网络架构的方框图。
具体实施方式
本发明的实施例提供了利用一般化的机制构建应用模式并采用这些模式生成新的或者修改的软件对象的方法、设备和***。这样的***采用基本基元和相关操作将简单的模式汇编成语义丰富的模式。之后,可以将实例化的模式(例如,对象)添加到现有的应用当中,由此(例如)出于企业的特定目的对这些应用进行修改。本发明的实施例还能够使未经培训的用户采用预先汇编的模式对应用(例如,SaaS应用)进行扩展。本发明的实施例还提供了配置工具,其用于通过访问这样的模式的储存库而向现有应用中添加新的软件组件。这样的配置工具允许用户从储存库中选择一个或多个用于企业软件对象的模式,提供适于所述模式的具体实例化的参数值,之后采用这些实例化的模式生成企业软件对象。
目的性程序设计
图1B是示出了生成程序设计工作流程的示例的简化方框图。在生成程序设计环境中,现在程序员110的工作重点在于设计并实施创建生成程序120(文中又称为模式引擎)所需的软件,其接收域代码125作为输入,并输出可执行代码115。可以通过包括适合问题域的术语和概念的特定于域的语言表达域代码125。程序员的责任从直接写程序发生了变化,其工作重心转移到了生成程序120的创建和维护上。程序组织和数据结构将继续得到设计、定义和编写,但是可执行代码115则通过域代码125参数化。可执行代码115的预期变化受到域代码125的影响,可以将域代码125重新输入至生成程序120,以实现这些变化。计算机执行在历史上将是程序员的任务的工作,即,根据域代码语言和源代码语言之间的对应关系分布域代码变化。
生成技术的不同应用在如何定义用于域代码125的特定于域的语言、如何创建域代码以及生成程序120如何使用域代码方面可能存在差异。生成程序120的使用将域专家的关切事项与程序员的关切事项分离开来。在生成软件环境中,域专家105负责维护域代码125。程序员110创建并维护生成程序120,并定义如何对域代码输入进行处理,以获得预期的实现(例如,可执行代码115)。生成程序120代表实现知识,例如,工程设计、算法选择、平台和代码模式。
前述生成程序设计环境的实现受到实际应用问题的影响,例如,定义域代码125的语言,谁来定义和支持特定于域的语言和文献汇编,此外还受到与跨越不只一个域的问题相关的事项以及生成程序120通过应用编程接口对域代码125的访问等的影响。此外,前述针对特定于域的语言的解决方案没有解决与如何使具有极少的程序设计知识的用户在企业内部通过简单有效的方式创建和修改软件组件相关的问题。前述的这些解决方案仍然需要用户学习特定于域的语言及其语法。例如,一种特定于域的语言实现要求使用“意图树”,其主要是理论性的,而且不会为企业提供任何种类的有用或者实际的解决方案。其他这样的解决方案需要有关如何对不同的功能块进行汇编以确保正确的交互和功能的知识。
云中的企业程序设计
当今的企业/云计算环境已经取消了用户对运行软件的硬件的直接控制以及对软件本身的控制。在二十世纪七十年代,技术性突破显著降低了成本。硬件革命将大型计算带入到较小的装置内,例如,被实现成计算机内的单个集成电路的中央处理单元。计算成本的改善还提高了计算资源的可及性和可用性。计算机的使用不再只能在选定的少数几个人之间按时间分享。广泛可用的个人计算使得计算机的大量采用成为了事实。尽管硬件变成了广泛可得的,但是仍然需要由具有高度技能的程序员建立应用,其要求程序员周密地了解下层平台。在这一周期内,相较于硬件成本而言,具有高的软件开发成本。应用通常是专业化的,因而通常面向经过培训的专业人员,这样的应用大部分都集中在数据管理以及过程/办公自动化方面。
在上世纪九十年代早期,因特网接入和网络浏览器至少在一些情形下为用户免除了在其个人计算机上安装软件的必要。终端用户只需点击URL就能获得范围很宽的面向终端客户的应用。此外,诸如Java之类的语言因取消了诸如自动存储器管理和软件可移植性的任务而降低了软件开发成本。网络应用带来了其他软件进步,例如,用户界面(UI)和应用框架的商品化。
除了其他的优点、特征和功能之外,当今的应用框架通常提供两个主要组件:元数据(通过框架指定的语言描述问题)和运行时间引擎(其基于应用开发者提供的指定元数据执行实际运行时间执行)。这些基于网络的应用进一步分离了问题描述和执行。因此,没有必要再将软件制作成起着单个专业化执行单元的作用。改变问题描述的操作仅涉及对元数据做出改变,对运行时间执行代码则没有影响。
在这一对计算资源大量采用的第二次浪潮中,浏览器、Java和框架中的软件进步降低了软件相对于硬件的成本。然而,仍然要求应用开发者具有高水平的专业技能,从而对应用开发环境(文中又称为应用开发框架(ADF))中通常可用的全范围的选择和控制加以充分利用。
计算资源的大量采用的第三次浪潮已经伴随着计算成本的突破性降低而开始。云计算与诸如虚拟化的技术革新相结合并不断获得大规模实用计算方面的经验,从而使非常丰富的计算资源和网络连通性都能够在因特网规模上被负担得起。这种计算资源的可用性降低了网络应用的操作成本。这样的可用性还为协作式应用和移动式应用的继续开发提供了基础。这些因特网规模的基础设施作为***已经变得能够为大量的用户所负担得起。这些用户还在寻找匹配的软件可负担性。这一点也适用于其他类型的按需服务,例如,按需视频。云计算领域中的内容只是在实用程序资源上执行的程序或应用而已。
图2A是示出了云计算概念的简化方框图。将因特网或广域网210耦合至内联网或局域网220(1)-(n)。每一内联网或局域网具有一个或多个客户端计算机225(1)-(m)。客户端计算机能够通过内联网客户端和因特网资源之间的网络连接访问(例如)网络服务器230(1)-(p)(又被称为网站服务器,或简称为服务器)。此外,可通过因特网210获得的一个或多个资源能够提供具有云资源240的形式的主机托管(hosted)服务。云计算是涉及在诸如因特网的广域网内分发主机托管服务的任何机制的泛称。通常将这样的服务宽泛地分为三类:基础设施即服务(IaaS)、平台即服务(PaaS)以及软件即服务(SaaS)。云服务通常按需出售(例如,按分钟或者按小时),云服务是具有弹性的,因为用户能够在任何既定时间上拥有其想要的多少的服务,并且云服务完全由云服务的供应商管理。
云可以是私有的,也可以是公共的。公共云向任何能够对其进行访问的人出售服务,而私有云则是所有权网络或数据中心,其只向有限数量的用户提供主机托管服务。云服务供应商可以采用公共云资源创建私有云,从而获得虚拟私有云。在每种情况下,云计算的目的都在于提供对计算资源和信息技术服务的可分级的访问。
IaaS为虚拟服务器实例提供唯一网络地址和按需存储块。通过提供应用编程接口(API)而开始、停止和访问虚拟服务服务器和存储器。在企业中,IaaS云计算允许公司仅对其所需要的那些容量付费,并在线增加所需的这一容量。
云中的PaaS提供了主机托管软件集和产品开发工具,在图2A中示出了PaaS250作为其例子。开发者能够通过因特网在其供应商的平台上创建应用。PaaS提供商能够利用(例如)API、网站入口、安装在客户的计算机上的网关软件等提供对这样的服务的访问。
在SaaS架构中,供应商通过前端入口提供硬件基础设施、软件产品并且与用户交互。所提供的服务可以包括(例如)基于网络的电子邮件、库存控制和数据库处理。由于应用和数据都由服务供应商主持,因而终端用户能够随处自由地使用服务。
从上文对云计算的说明可以看出,可以将云的资源(即云资源)看作是物理计算机资源的抽象化。终端用户通常不能控制所述硬件或软件,尤其是在SaaS和PaaS环境中。由于采用同一云资源的不同企业可能具有不同的要求来满足其特定企业的需求,因而需要一种机制使用户通过与所讨论的企业相适应的方式对其采用的软件进行修改。前面讨论的生成软件概念认识到了这一问题,但是未能提供实际的解决方案来实现能够创建和修改软件资源,例如,云计算环境中提供的软件资源的工具的提供。此外,由于云资源被多个用户访问(其还可能与不同的企业相关),因而任何用于修改云计算环境中的软件的工具都不能破坏云资源对其他用户的提供。因此,必须提供某些保证,以确保对软件所做的修改的功能。也就是说,应当针对指定云计算环境中的使用对使用户能够修改软件资源的工具加以验证。
用于描述用户意图的模式
在企业内,域专家可能(例如)想要修改或者创建原始的或者额外的对象(例如,业务对象、数据对象、用户界面对象等)。执行这样的任务往往包括执行至少一些相同(或者类似的)操作。此外,要想获得预期结果(例如,通过其创建而实现的新的数据对象的存在)可能必须要创建其他对象/类别(例如用户界面显示中的新字段)(或者对其做出改变)。文中将这样的为了实现预期目标而执行的通常重复发生的操作的集合称为模式。在一个实施例中,这样的模式包括模式声明(例如,其揭示用于配置操作的实质配置选项)和模式定义(例如,其封装软件组件生成的细节(例如,通过中间件API访问))。模式的使用既提供了简易性(例如,通过对用户隐藏程序设计的复杂性),又提供了适应性(例如,通过封入对应用所做的变化、中间件等)。
在本发明的实施例中,模式描述了在给定问题域通常出现的解决方案。此外,模式能够指定创建进而描述该解决方案(抽象概念)的实例(具体的或者切实的表示)的方式(例如,能够在特定的目标平台上使重复发生的解决方案实例化的方式)。考虑到本公开将认识到,这样的解决方案(抽象)的实例化包含了所述解决方案(例如,作为模板,例如一类对象或计算过程)的实际例子和具体实现的创建。这样的实例化操作通过(例如)定义一类中的对象(表示解决方案)的具体变化、为对象赋予名称并且将对象存储到某一物理位置上(例如,将对象存储到诸如计算机存储器的计算机可读介质内)而创建对应解决方案的实例。照此,模式还能够提供用于使域专家形成(以及表达)对这样的软件进行预期修改的意图的一般化机制。
图2B是示出了根据本发明的实施例的结合了模式的问题解决方案流的例子的简化框图。与图1B一样,程序员110主要考虑创建生成程序120,该程序能够生成期望的可执行代码115作为其输出。与图1B一样,向生成程序120提供域代码125作为输入。
与图1B不同,可以使域专家105获得一个或多个模式(例如,在图2B中将其描述为模式260),从而允许域专家105表达其有关期望域代码的生成的意图,所述域代码将充当生成程序120的输入(例如,诸如图1B的域代码125的域代码)。可以通过模式储存库的形式使模式260能够为域专家105所用(在图2B中未示出;但而,应当认识到,例如,可以将图2B的模式260存储到这样的模式储存库内并从该储存库内将其选出)。例如,模式程序员270可以针对特定域或者多个域创建模式储存库。模式程序员270通常是专家程序员,其制备的模式并非是针对具体的问题实例的解决方案,而是反映解决给定的一类问题的更为一般的方案。诸如模式程序员270的模式程序员应当理解将在所述模式中获取的所述解决方案的复杂的细微差别。所述模式应当明确的公式化,包括针对期望的对象的必要变化(例如,使用户界面元素存在差别以及使这些元素的外观存在差别)。
域专家105从含有模式260的储存库中选择一个或多个模式,之后采用(例如)配置器280对所述模式的元素实施期望/必要的修改(编辑)。例如,可能必须对各种参数进行定义,从而使模式实例化,因而域专家105将为这些各种各样的参数赋值。或者,模式可以具有能够进行选择的子模式,所述子模式可能也具有定义的参数。一组与模式和子模式相关的规则能够限制模式和参数值选择。通过模式和子模式的存在,诸如文中描述的***的***能够采用其他(通常较为简单的)模式作为构件块创建出越来越复杂并且能力越来越强的模式。实际上,情况往往是这样,所采用的模式具有更加复杂的多样性,而且除了其更高的功能性之外,其使用还提供了一定量的抽象化,这种抽象化掩盖了下层模式的复杂性,从而简化了这些更为复杂的模式的使用。
之后,配置器280生成被用作生成程序120的输入的域代码125。本发明的实施例不限于图2B所示的块的配置。可以将配置器280和发生程序120的功能结合,从而得到以域专家105选定的模式和修改作为其输入,以可执行代码115作为其输出的功能元件。
这样的模式的设计还应当(例如)在考虑将应用这样的模式的企业对象也可能随着时间的推移而发生变化的这一事实的情况下为提供随着时间推移的演化。为了提供这样的演化,这样的模式的生成能够采用下述模式演化技术中的一种或多种:方面定向、变异化、构成、交互和限制条件,下文马上要对此予以更为详细的讨论。
每一模式都可能具有单独演化或者实现的不同方面。例如,对于用户界面模式而言,就可能存在诸如显示、安全、风格和定位的不同方面。每一方面都独立地转化或者演变。此外,变异化允许根据情况对模式做出改变。例如,在不同的应用之间,用户界面模式可能看起来略微不同。或者,在向某一格式添加文本字段时,可能将文本表现为文本输入。但是,如果将同一文本字段添加至只读表格时,则将所述文本字段表现为简单的串。一种实现变异化的机制是使所述模式受到元数据驱动。也就是说,模式为目标平台生成元数据,但是该模式也由元数据(例如,元元数据)描述。所述元元数据根据具体的情况而变异化。
模式的构成模型允许由一组较为简单的模式汇编成复杂的模式。构成规则含有与模式的汇编有关的结构要求。交互规则指定模式内的组件的行为相关性。交互的重点在于描述影响运行时间***的组件的相互关联。例如,用户界面组件能够使页面内的其他组件的部分刷新。最后,约束规则指定在元数据生成过程中实施的限制或指南。可以基于目标平台或优选最佳实践的限制操纵约束条件,约束条件可以使所述构成和交互规则遵守所述限制和指南。例如,用户界面最佳实践可以要求表格不含有任何文本区组件。
因而根据本发明的实施例的云程序设计模型实施了允许“自服务程序员”采用意图化程序设计技术创建和修改软件的程序设计范例和原理。这样的用户可能是其专业域内的专家,但是其在计算机程序设计方面可能具有很少的训练或者没有训练过,从这样的事实可以看出对这样的程序设计范例的需求是显然的。例如,这样的用户可以是销售人员,其又是兼职的***管理员。如早前指出的,现有的范例不能解决简化程序设计经验的问题。实际上,此前可用的种种技术只会使计算机程序设计的工作更加艰巨。随着软件变得更加复杂,为实际业务逻辑编写的程序设计代码与学习应用框架所需的努力而言,仍然保持着很小的比例。
根据本发明的实施例的云程序设计模型的优点是简化了新程序员的程序设计经验。其包括各种致力于解决这样的程序员在基于云的计算环境中的需求的规程。从根本上来讲,这样的程序设计环境必须能够解决意图而不是转化。程序设计环境的重点应当集中在实现对期望结果的描述,而不是在具体的框架/环境内实施问题的解决方案的方式。用户应当优选能够通过业务中心用户界面(UI)而不是综合设计环境等指定(描述)给定意图。通过对这样的业务中心UI的结构设计辅助用户描述问题,而不是管理程序设计任务。换言之,这样的用户并非是传统意义上的编写程序(但是捕捉用户意图的结果仍然在逻辑的意义上构成了“程序”)。
此外,用于描述意图的词汇和表示法应当与问题域密切一致。从传统的意义上来讲,词汇和表示法通常构成了语法。从这一意义上来讲,语法应当适合于问题域,而不是要依赖于程序员采用固定语法(例如,通用程序设计语言)将意图转化成程序。这样的词汇和表示法应当是自适应的(例如,用于满足新的要求)。由于根据本发明的实施例的程序设计环境的重点在于捕捉用户的意图,因而程序(语法)的能力应当支持满足新的不断变化的要求的演进。
还优选具备在不对现有的软件和硬件基础设施(例如,中间件运行时间、数据库基础设施、服务器等)进行修改(例如,无需新的专用运行时间引擎)而使所述程序设计环境在其上运行的能力。换言之,根据本发明的实施例的云程序设计模型的使用和实施与传统方案相比所提供的优点在于显著简化了程序设计模型。例如,就中间件平台而言,这样的方案并非旨在重建该中间件平台,而是致力于将用户的意图无缝地自动转换成能够通过所述中间件平台运行的目标元数据/语言。
因而,根据本发明的实施例的程序设计环境应当在意图和意图转化“效果”之间提供直接而简单的关联。因此,在前述例子中,转化的“效果”并非是生成的中间件人工产物(artifact),而是用户创建或修改的应用中的(期望)可观测行为。例如,如果用户意图是为定制实体创建新的页面,那么转化的效果是应用中的新界面,其中,所述页面是以某种观感和布局表现出来的。在提供这样的环境的过程中,应当使用户尽可能少地接触到***的内部实现细节(实际上优选使用户与这样的细节完全隔离)。在前面的例子中,这意味着用户可能没有中间件元数据或运行时间的知识(也不需要任何这样的知识)。因而,所述中间件将能够在不产生任何能够被用户观察到的变更的情况下随着时间的推移而演进,即,产生从一个版本到另一版本的变化。
采用意图程序设计的云程序设计模型的设计
下面的段落将描述体现前述原理的根据本发明的实施例的支持“自服务”程序设计的云程序设计模型的实施例子。此外,在提供这样的功能时,诸如文中描述的程序设计环境的程序设计环境还能够实现与扩展性相关的目标,尤其是与前述自服务程序设计概念有关的目标。例如,这样的可扩展云程序设计环境提供了这样的自服务程序员能够通过其构建和/或修改软件组件以构建期望的软件应用(例如,客户关系管理(CRM)应用)的机制。因而,这样的程序设计环境允许将简单的组件汇编成语义丰富的组件(文中将其称为组件构成)所需的基本基元和操作的开发。组件构成的简单的例子是基于一组特定的布局限制和要求将一组用户界面元素(例如,用于文本输入的)汇编成表格。诸如文中描述的可扩展云程序设计环境还允许对按需软件应用(例如,CRM SaaS应用)采取组件构成技术,从而允许未经训练的用户(自服务程序员)采用预先配置的组件对应用(例如,CRM SaaS应用)进行扩展。
可以将下文介绍的示例设计分解成四个主要的片段。第一个包含捕获程序员(这里是指前述“自服务程序员”)的意图的语言。接下来是前向转换实现,其将意图转换成可执行文件(例如,中间件可执行文件)。这样的程序设计环境的另一部分是反向转化实现,其被设计为将可执行文件转化成意图(例如,将中间件可执行文件转化成意图)。这四个片段中的最后一个是配置用户界面(例如,在CRM环境中为业务中心配置UI),其被设计为引导程序员在既不需要任何编程细节,也不需要编程细节知识的情况下指定其意图。
意图指定
根据本发明的实施例的程序设计环境中的意图指定的目的在于允许自服务程序员关注期望的结果,而不是执行指令的按部就班的过程在指定的计算机***中进行的方式。此外,还可以相对简单地调整和修改这样的语言。这样的方案允许将每一意图指定成命令。每一命令识别出程序员意欲使计算机***执行的一个或多个操作。命令还能够携带一组进一步提供有关所要执行的操作的具体细节的用户性质。
这样的命令在几个方面有别于传统的程序设计指令。在这些差异当中存在这样的事实,即,这样的命令尽管缺乏明确地指导给定计算机***执行计算机***的指令集中的具体指令的能力,但是其在更高的抽象水平上运行,并解决程序员的意图和要求。通过明显的对比,传统的程序设计指令(例如,计算机***的指令集中的指令,例如,单机指令)存在于所述谱系的另一端,因而其是针对计算装置的要求而量身定制的。
前向转化
前向转化基于接收自自服务程序员的体现自服务程序员的意图的命令为计划为其进行程序设计的***(例如,前述中间件平台)提供有关要执行的操作的指导,由此实施自服务程序员的意图。在本发明的实施例中,将转化单元封装到文中被称为模式的描述具体问题域内的(预定义)解决方案的概念(即逻辑)构造中。此外,可以将这样的模式设计为携带使针对特定目标平台的重复出现的解决方案“实质化”(例如实例化)的方式的规约。在调用命令时,一个或多个模式将由此实质化。在示例中间件***中的实质化过程中,例如,所述转化将为给定目标平台生成实现期望解决方案所必需的元数据。应当认识到,根据本公开,文中描述的模式能够重复使用任意次数(通过任何指定的迭代进行重新配置或不进行重新配置)。
在前向转化的支持当中,希望为先前提及的模式演进的概念提供支持。这样的功能确保了,如此实质化的模式能够响应于要求的变化而容易有效地演进。文中描述了几种提供必要的功能的技术,其包括:
1)方面定向。每一模式可以具有必须单独演进的(例如,单独地实现,从而允许它们(例如)随着时间的推移而独立地发生变化)不同的方面(即,各种特性或特征,其反映要通过其对应的构造处理/捕捉的各种考虑事项、关切事项等)。例如,UI模式的不同方面可能包括诸如显示、安全、风格和定位的方面。每一方面能够独立地转化或演进,从而允许针对给定的情况对这些方面进行单独的裁量,从而最佳地满足该情况的需要。
2)变异化。如已经指出的,模式可能随着不同的情况而发生变化。例如,UI模式可以随着纵向应用的不同而看起来略微不同。变异化导致了模式自身是受到元数据驱动的。换言之,模式为目标中间件平台生成元数据,但是模式本身也由元数据描述(因而能够将其称为元元数据)。因此,能够基于具体的情况而使所述元元数据变异化。
3)构成规则。可以由一组较为简单的模式组成复杂的模式。例如,可以将关于模式的相互组合的结构要求包含到所述构成规则内。
4)交互规则。与指定模式的组合的构成规则形成对照的是交互规则指定模式内的组件的行为相关性。交互规则的主要关注点在于描述影响运行时间***的组件之间的相互关联。例如,UI组件能够使页面内的其他组件部分刷新。
5)约束条件规则。约束条件规则指定在各种构造的生成(例如元数据生成)过程中实施的限制或准则。例如,约束条件规则能够基于目标平台或优选最佳实践的限制而指定约束条件。在这样的方案中,例如,UI最佳实践可以要求表格不含有任何文本区组件。
反向转化
在反向转化(文中又称为“反射”)中,根据本发明的实施例的程序设计环境从现有的构造(例如现有中间件元数据)中识别出一个或多个模式。因而反向转化通过模式提供的抽象化(即,模式抽象)为这样的构造的修订和迁移提供了条件。在中间件元数据的例子中,这样的模式抽象化意味着能够按照促进中间件元数据的修订和迁移的方式生成中间件元数据。(应当理解,文中采用的“促进”一词目的在于表达所讨论的功能或结构有助于辅助给定***或过程实现所陈述的结果,而不是要求所讨论的功能或结构实现该结果,而且不管怎样都不应认为其是强制性的。)在根据本发明的实施例的程序设计环境中,能够通过(例如)利用基于规则的模式识别器实现这样的反向转化。
应用中心配置用户界面
根据本发明的实施例的应用中心配置用户界面起着前端应用(例如网络应用)的作用,其使自服务程序员在不需要任何实际程序设计的情况下描述其意图作为配置任务。随着程序员游历这一用户界面,将捕捉到其意图。于是,能够发出命令以触发模式的实质化。这样的模式实质化的结果是生成了程序设计构造(例如,生成了生成的中间件元数据)。在所述例子中,能够利用反向转化通过UI将有关生成中间件元数据的即时反馈呈现给程序员。与常规的中间件综合设计环境不同,能够采用根据本发明的实施例的UI触发简单的用户意图向复杂的程序设计构造的转化。而相比之下,常规的中间件综合设计环境则不能提供这样的功能,因此其自身只能呈现为程序设计工具。
企业软件对象生成
图3是示出了根据本发明的实施例的采用模式的企业软件对象生成的例子的简化流程图。如图所示,图3的过程开始于选择企业软件对象生成的企业域(步骤310)。由于本发明的一个实施例被设想为在云计算环境中发挥作用,而在云计算环境中,有多个企业共享这些企业中的资源和各种各样的域(例如,顾客关系管理(CRM)和人力资源管理(HRM)),因而要选择适当的域,以确定由其进行操作的模式的子集。例如,域的选择可以是基于用户识别或者特定用户的群识别的自动化过程,其也可以是用户输入的选择。
用户从选定域可用的多个模式中选择模式(步骤320)。基于希望创建或修改的对象的性质以及所要解决的问题的性质做出对适当模式的选择。如果所选择的模式与先前选择的模式不兼容(步骤330),那么可以拒绝所选择的模式(步骤340)。例如,可以通过参考与先前选择的模式相关的一个或多个规则做出兼容性判断。如上所述,构成规则和交互规则影响模式之间的关系。这些规则可能在生成模式时与模式相关,或者可以是以后在将新的模式存入模式储存库时发现模式之间存在矛盾而增加的。如果拒绝了选定模式,那么为用户提供选择另一模式的机会(步骤320)。如果不拒绝选定的模式,那么为用户提供选择额外的模式的机会(步骤350)。
一旦用户选择了希望用于企业对象的创建或修改的所有模式,那么提示用户为所述一个或多个选定模式定义的参数提供值(例如,变量值、字段定义等)(步骤360)。例如,可以在诸如图2B的配置器280的配置器内执行这一模式选择、规则确认和参数指定的过程。随着参数值的提供,判断所述参数值是否符合与该模式以及实例化的其他模式相关的规则(步骤370)。如果参数值超出所述规则指定的范围或者具体值以外,那么拒绝所述参数值(步骤380),并为用户提供另一次在考虑指定规则的情况下提供可接受的值的机会。
一旦针对与选定模式相关的参数输入了适于要解决的问题的参数值,那么生成程序将采用选定模式生成企业软件对象(步骤390)。例如,在图2B所示的实施例中,配置器280将模式指定和参数的具体值结合起来生成域代码文件连同用作生成程序120的输入的适当元数据。之后,生成程序120为期望平台生成可执行代码(指令)(例如,针对具体平台(例如,原始Java2平台、企业版(J2EE)或者更近的Java平台企业版6(Java EE6))的Java程序设计语言可执行代码)。或者,在使配置器和发生器的功能结合时,能够直接采用模式、参数值和额外元数据生成可执行代码。一旦生成了期望企业对象,那么所述对象就可用于在适当的平台上运行(步骤395)。
生成程序120可以利用多个方案中的任何一种生成必要的可执行代码。考虑本公开将认识到,并且如前面所注意到的,本发明的实施例采用与基于组件的方案形成对照的生成方案。在采用任一种方案的软件***的构造中,在所采用的语言和由其俘获的意图与为了给定的实现生成的可执行文件(软件)之间存在差别。还将认识到,在这些软件开发阶段之间存在明显的区别。在基于组件的方案中,语言和所得到的可执行文件相互密切地交织在一起。因而,采用基于组件的方案时,将使单个意图(采用单种语言通过期望软件的人工编码表达该意图)映射至单一实现(反映在由其产生的单个可执行文件内)。相形之下,采用诸如文中描述的方案的生成方案时,单一语言/意图能够根据各种因素产生多个不同的可执行文件/实现。这种由根据本发明的实施例的方案提供的语言/意图与所产生的可执行文件/实现的解耦产生了能够为这样的可执行文件/实现的生成提供极大的灵活性的方案。在认识到这样的方案能够将意图动态地映射至可执行文件时尤其能够体会到这一点的真实性。例如,作为根据本发明的实施例的过程的结果,单个意图(例如,创建能够显示对象细节的网页)可以基于给定国家、行业等映射至多个种不同实现中的一种。
在采用前述通过Java程序设计语言生成可执行代码的例子的情况下,生成程序120将接收到多个模式作为输入。这些模式中的每者包括不同的方面。每一个这样的方案都将具有对应的内容提供器。内容提供器负责生成必要的元数据并将其注入到给定对象(例如,具体的中间件组件)内。实质上每一内容提供器的都类似于给定方面特有的专用编译器一样运作。例如,在生成用户界面组件时,可能涉及一个或多个方面。例如,通常如此涉及的两个方面是外观方面(例如,用于生成显示(实际布局等))和安全方面(例如,用于生成该用户界面的安全策略)。在这样的方案中,有两个对应的内容提供器。外观内容提供器生成符合Java服务器表情(JSF)规约的页面元数据。安全内容提供器创建安全策略并将其注入到适当的服务器内。这样的安全内容可以包括(例如)轻量级目录访问协议(LDAP)服务器,其被配置为验证和批准一个或多个网络实体(例如,一个或多个客户端225或服务器230)对有组织的记录集合(例如,数据库、储存库、存储器或者其他这样的构造(其中的任意项可以实际上指代同一对象))的访问,以及促进对提供这样的访问的过程中涉及的分布式目录信息服务的访问和维护,连同其他这样的支持功能。
根据所指出的方式,模式是对于具体应用而言经常重复出现的实现的抽象化。如上所述,这些实现可以包括外观和感觉、指南、标准等。模式被配置为揭示用于企业对象的基本配置选择,其偏向于支持企业对象配置的约定。由于模式的一般化性质的原因,模式通常比由模式生成的企业对象的实例更持久。
图4是示出了根据本发明的实施例的在模式创建过程中执行的操作的例子的简化流程图。图4所示的模式生成过程开始于所要创建的模式的识别(步骤410)。如前所述,根据本发明的实施例的模式描述了给定问题域内的问题的解决方案。如前所述,具体域的模式识别至少在某种程度上依赖于对该域内的常见问题和解决方案的熟悉度。所描述的解决方案一般是通常出现的解决方案,更具体而言,能够通过具体应用中的这样的解决方案的常常重复出现的实现的抽象化对其加以表示。通常将由在域空间内操作的程序员(例如,模式程序员270)执行这些重复出现的解决方案或者引向解决方案的重复出现的步骤的识别。在这样做的时候,模式程序员270能够创建体现这样的解决方案的模式,其意图是使这样的模式“照原样”得到使用。或者,模式程序员270创建这样的模式的目的可以是为其他人(例如,自服务程序员)提供用于进行定制的模式,从而允许他们根据其具体需求对给定的模式进行定制。此外,模式程序员270还能够将模式创建为使模式只是简单地定义问题域的解决方案空间内的“全域(universe)”,在其内诸如自服务程序员的用户能够通过实际创建针对具体情况的模式而实现其意图。通过创建定义这样的全域的模式,诸如模式程序员270的模式程序员能够为自服务程序员提供“边界”,从而引导自服务程序员游历存在于手头的解决方案空间内的各种可能的解决方案,同时允许自服务程序员以一定的自由度去定义达成解决方案的方式。
一旦识别了模式,就可以使所述模式与新的或者旧的“模式种类”相关联(步骤420)。模式种类的主要作用是实现同一“种类”的模式之间的一致性。模式种类能够起到指定可在同一种类的模式之间共享的公共规约和资源的作用。此外,模式种类还能够为模式指定外在化契约,其包括(例如)模式能够具有的各个方面的列表、该种类中的模式之间的共同规约和资源、该种类中的模式的性质的集合、一个或多个子模式的各个方面的集合以及文字连同其用于该种类中的模式的值的列表。在适当的情况下,模式可以属于多于一个模式种类。在使模式与模式种类相关时,对于诸如性质、方面、变量等的参数而言,模式将采取模式种类指定的特性,除非通过模式内的值对其进行覆盖。
在模式创建过程中还对模式的各个方面加以识别(步骤430)。如上所述,方面指定使模式实例化的要求。这些方面可以包括模式在目标域内的物理表现。例如,用户界面模式可以具有一个或多个下述方面:外观方面、安全方面、显示方面和绑定方面,连同其他方面。通常前两个方面是强制性的,而后者则通常是任选的。显示方面指定模式的观感。绑定方面指定模式与下层模型的交互方式。显示方面和绑定方面具有其自身的物理表现(例如,可扩展标记语言(XML)方案)。
针对模式的每一方面,识别该方面的内容提供器(步骤440)。内容提供器指定如何生成具体表现的内容。在一个实施例中,内容提供器是Java类别,其控制如何为某一方面制作内容。内容提供器能够采用模板生成内容,在一个实施例中,所述模板为含有内容的部分实现的XML文档。模板内容提供器可以含有切换逻辑,从而根据情况确定采用哪一模板。例如,如果正在创建输入文本模式,并且文本容器是表格,那么内容提供器可以选择将输入文本用户界面控制包封到列单元下的模板。
在本发明的一个实施例中,内容提供器的输出是内容对象,该对象是含有所生成的内容以及有关所述内容的诸如实现类型的额外信息的自描述对象,所述实现类型将识别出用于所述内容以及生成的内容所针对的方面的实现。模板指定针对具体方面的模式内容。通过模板表示的模式的内容可以包括(例如)含有目标表现所特有的文本片段的特定于语言的文字、在对模板实例化时能够代入值的变量、模式内包含的子模式、基于输入性质和模板参数的条件句以及嵌入到模板内的子模板。一旦识别出了一个方面的内容提供器,那么判断是否已经识别了最后一方面(步骤450)。如果还有其他方面,那么识别这样的其他方面(步骤430),这时所述过程将循环过所述模式的其他方面。如果已经识别了最后一个方面,那么识别所述模式的生成语境(步骤460)。生成语境是在使模式实例化时可用的资源的集合。这些资源可在模板内作为变量加以访问。之后存储模式和相关元数据(例如,存储在可为特许用户所访问的储存库内)(步骤470)。
图5是示出了模式、子模式、模式种类和各种规则/方面/模板之间的关系的例子的简化方框图。指定可在模式之间共享的公共规约和资源的以及用于模式的外部契约的模式种类(在图5中示为模式种类510)可以包括一个或多个采取了这些规约、资源和外部契约的模式(在图5中将其描述为模式520)。模式可以包括一个或多个子模式530,其能够为模式提供更多的基本元素。例如,子模式可以涉及模式描述的用户界面窗口中包含的日期检出器元件。模式520可以受到一组规则、方面和模板540的限制。类似地,每一子模式530可以与一组规则、方面、模板550相关,类似地,第二模式535可以与另一组规则、方面和模板555相关。如上所述,限制规则、方面和模板提供了与每一模式相关的各种参数,其将限制值的各种组合以及能够获准在模式内交互的子模式的组合。此外,模式种类510能够与规则、方面和模板的模式种类集合相关。可以将模式种类与模式和子模式之间的关系看作是分级关系。一个模式种类中的模式采取模式种类指定的特性,除非由模式内的值对其进行覆盖。此外,子模式可以采取(例如,继承)其所属的模式的特性,除非被子模式所覆盖。可以通过某种方式巧妙设计用于子模式的参数值,从而将其从母模式传递给子模式。
一个模式可以不只包含在一个模式种类当中。这样的模式采取其作为成员的每一模式种类的定义特性,但前提是这些特性彼此不发生冲突。在来自每一模式种类的特性发生矛盾的情况下,所述模式只能采取这些特性之一。在本发明的一个实施例中,模式将采取最后一个相关模式种类的特性。
规划570提供了在由模式生成意图之前、之时和之后要完成的步骤。所述规划提供了一组有关如何使参数的输入等与模式结合起来的指导。因而,假定向配置器提供了输入,那么所述规划将针对使参数和模式联系起来的方式提供了对生成程序的引导。
在本发明的一个实施例中,开发供访问云环境中的计算机资源的企业使用的模式储存库。通过某种方式对储存库内的模式进行审查,从而保证由所述模式生成的软件不会对云环境的用户造成破坏。此外,储存库内的模式可以经过批准才可用于具体的问题域,并且可使其只能被这些问题域的批准用户所访问。因而,可以使安全适得其所,这样只有获得生成该域内的新软件的批准的“域专家”才能访问与该域相关的模式。此外,一个域的域专家不能访问与不具有其特许使用权的另一问题域相关的模式。通过使用这样的***,经过批准的用户能够采用被设计为促进其意图的表达的模式来表达其对期望软件的意向,之后将这些生成意图提供给软件生成器,所述软件生成器将输出期望的企业类别对象,例如,业务对象、数据对象和用户界面。
示例企业服务器架构
图6是示出了可与本发明的实施例结合使用的企业服务器架构的简化方框图,所属架构包括联系图5的简化方框图描述的软件构造。所示出的企业服务器架构包括企业服务器610,它是支持访问共同的数据库630的客户端群(例如,客户端660和665)的一个或多个服务器620的逻辑组。可以将企业服务器作为单个逻辑组进行配置、管理和监测,从而允许管理员对企业服务器610内的服务器620进行起动、停止、监测或者参数设置。在这样的配置中,在企业服务器层级上设置企业***的参数,这些参数适用于在企业服务器内工作的每一服务器。此外,可以在服务器(例如服务器620)层级上对其他参数进行调整,以支持对这些参数的细调。在这一分级参数语境下,如果在服务层次级上设定参数,那么该参数的特定于服务器的值将超越该参数的企业服务器层级设置。此外,组件层级(服务器620上运行的过程)上的参数设置将超越服务器层级上的参数设置。
可以将服务器620配置为支持访问所述服务器的每一客户端的后端及交互过程。将这些过程示为每一服务器内的一个或多个组件625。诸如服务器620的服务器能够支持(例如)多过程和多线程组件,并且能够按照后台、批处理和交互方式运行组件。服务器组件还可以同时在服务器620中的多者上运行,以支持更高数量的用户和/或更高的批处理工作负荷。组件过程的例子包括(例如)移动网络客户端同步、网络客户端的业务逻辑的操作、用于客户端的数据库和文件***的连接和访问、与传承数据或第三方数据(例如,非企业***所固有的数据)的整合、新帐户、机会、服务请求和其他记录自动分配以及工作流管理。也可以将本发明的搜索过程的实施例实现为作为组件在一个或多个服务器620上运行。
将服务器620耦合至被示作企业服务器610的部分的网关服务器650。网关服务器650协调企业服务器610和服务器620的操作。这样的网关服务器能够对企业服务器配置信息的持久存储,所述信息包括(例如)组件组和组件的定义和分配、工作参数和连接信息。网关服务器还能够充当服务器和组件可用性信息的登记处。例如,企业服务器610内的服务器(例如,服务器620之一)能够向网关服务器650进行可用性的通知。可以将诸如网络地址的连接信息存储在网关服务器650访问的存储器内。如果服务器620之一关机了或者变得不可用,那么可以从网关服务器650中清除与该服务器相关的连接信息。
服务器620及其组件625能够通过其在企业服务器610内的关系访问一个或多个数据源(例如,数据库630和文件***640)。数据库630能够存储(例如)与企业***影响的所有操作相关的RDBMS客户端软件和表格、指标和数据。这样的数据库信息可以包括(例如)客户信息、市场数据、历史价格制定信息、当前价格制定信息、联系信息等。类似地,文件***640能够存储客户端660和665以及企业服务器610使用的数据和物理文件。文件***640可以是不同装置上的共享目录或者目录集,企业服务器610内的所有服务器620都可对其进行网络访问。为了使客户端获得对文件***640内的文件的访问,客户端能够连接至服务器620中的适当服务器,以请求文件上传或下载。于是,所述服务器能够采用(例如)文件***管理组件访问文件***640。
如上所述,能够将本发明的过程的实施例实现为作为组件在一个或多个服务器620上运行。这些服务器能够形成私有或者公共云计算环境,或者可以是其部分。替代实施例提供了可受到相同的或者不同的网络服务器访问的单独服务器。
客户端660和665为使用企业***的代理提供对企业服务器610的访问。客户端通过直接的方式(例如,客户端660)或者通过网络服务器670(例如客户端665)经由网关服务器650与企业服务器610通信。网络服务器670提供企业服务器610对基于网络的请求(例如,HTML、XML等)做出响应的机制。网络客户端665可以包括通过局域网、城域网或广域网耦合至网络服务器670并且通过各种通信媒介传播的客户端,如上文所讨论的。此外,网络客户端665可以包括通过无线通信手段访问网络服务器670的移动客户端。客户端660和网络客户端665的用户可以包括(例如)销售代理、服务代理、客户代表、企业实体管理者等。用户可以访问数据库630内的可由企业服务器610访问的所有信息,其受到用户的安全访问权的控制。
客户端660和网络客户端665可能遍及企业分布,其可能包括成百上千的这样的客户端。每一这样的客户端都能够执行与将要存储到(例如)数据库630内的新记录的创建、数据库630中的记录修改或者数据库630中的信息搜索相关的任务。
可扩展云程序设计环境中的意图程序设计模型的示例实现
图7是示出了根据本发明的实施例的可扩展性框架架构的各种元素的方框图(在图7中将其示为可扩展性框架架构700)。对于可扩展性框架架构700的操作而言最核心的是规划705。规划705指定将由所述架构的规划处理模块(在图7中将其示为规划处理模块710)执行和/或指导的操作(或者在某些实施例中促进所述操作的识别)。
通常至少部分地基于规划处理模块710接收到的命令712确定规划705,例如,所述命令接收自配置器714。配置器714是根据未经训练的用户(例如自服务程序员)量身打造的配置工具,其允许这样的用户向现有应用添加新的软件组件,或者修改其内现有的软件组件。
规划(例如,规划705)指定要在实施给定命令的过程中执行的一个或多个通常处于具有某种排序的序列内的操作。在某些实施例中,通过执行器类别执行由规划指定的每一操作。
例如,“CreateAttribute(创建属性)”命令可以具有指定下述操作的规划:
1.分配可用的属性。
2.识别要将所述模式注入到其内的目标元数据和人工产物。
3.针对所述新的属性创作模式。
4.将所述新模式注入到所述目标元数据内。
将联系图12更为详细地讨论根据本发明的实施例的通过规划促进的操作以及功能的另一例子。
在接收到命令712时,规划处理模块710参考包括对规划705的信息映射命令712(以及反向情况)的映射信息(例如,命令登记(未示出))。应当认识到,命令可以映射至不只一个规划,反过来说就是可以有不只一个命令映射至给定规划。因而,命令和规划之间的关系可以是1:N、1:1或者N:1及其组合。一旦识别出了规划705,就识别出了规划概括出的操作,并在可能并且适当的情况下执行所述操作。
考虑到本公开应当认识到,在某些实施例中,诸如命令712的命令被实现为XML片段,其含有能够在模式的创建和注入过程中使用的配置选项。此外,例如,能够将一组这样的命令保存在命令配置文件中。前述命令范例起着自服务程序员的与可扩展性框架架构700的初级接口的作用。根据本发明的实施例的命令优选是通配的轻量机制,从而使调用者(例如,诸如配置器714的配置器等)能够容易有效地生成并注入新的模式。
为了执行模式的创建和注入所需的操作(并由此支持所讨论的软件组件的可扩展性),可扩展性框架架构700提供了模式管理器715、人工产物管理器720和注入解析器725。模式管理器715响应于模式请求730访问模式储存库732。在某些实施例者,模式储存库732(文中又称为组件储存库)是可用于应用构建的预构建组件的集合。此外,如果有必要可以执行一个或多个模式构成操作。如文中在别处指出的,模式构成是指由其他(通常更为基本的)模式构成语义丰富的模式的过程。如文中别处所述,这种通过汇集更简单的模式创建更为复杂的模式的能力进一步提高了可扩展性框架架构700的可扩展性质,将联系图8对其做更加详细的讨论。
在已经识别了(和/或构成了,视情况而定)一个或多个满足模式请求730的模式的情况下,模式管理器715返回如此识别或者构成的模式(在图7中将其描述为模式734)。在图7描绘的例子中,呈现了样本用户界面模式736作为这样的模式的例子。样本用户界面模式736包括显示信息737和绑定信息738。例如,可以将显示信息737实现为显示模板,其可以包括指定样本用户界面模式736的观感的信息。类似地,绑定信息738也可以采用显示模板,例如,其可以包括指定样本用户界面模式736与给定数据模型的交互方式的信息。联系图8提供了与显示信息737和绑定信息738相当的元素的例子。
作为提供模式734的部分,模式管理器715可以必须执行模式构成。模式构成是指由更为基本的模式构成更为复杂的语义丰富的模式的过程。在先前描述的方式当中,模式是符合具体的语义和使用情况的可重复使用的构件块。模式与组件类似,但是具有至少一个差别:通常,组件是针对很宽的范围内的使用构建的,而模式通常是针对少数的几种具体的使用情况构建的。因而,组件通常在采取这样的使用方案的过程中提供丰富的可配置选项的集合。作为区分,模式具有在可配置性方面降低了其复杂度的固有语义。模式中的固有语义可以是通过其结构以及其预定义性态表征的,而在组件当中,这些结构和性态通常是可配置的。然而,要认识到,文中使用的模式一词旨在传达组件的使用的可能性(作为直观的例子,假定模式出于本公开的目的只是具有以可配置性降低为代价简化了其使用的固有语义的组件)。
模式可以属于一个或多个模式种类,将进一步联系图8对此予以描述。每一模式种类促成给定模式的使用过程中的外在化契约。所述外在化契约包括一组表征模式的配置选项的性质。模式可以具有一个或多个方面,每一这样的方面满足模式实质化过程中的某一要求。模式的模式种类指定该模式种类的模式可以具有的方面。每一方面又包括提供该方面的实际内容的内容提供器。内容提供器能够在实际的内容的汇编过程中采用一个或多个模板。这样的模板可以指定作为模板采用的配置选项的性质。性质名称通常是字母数字串(优选不区分大小写),可以为性质指定默认值(例如,文字串)。模式的另一个可能的特性是注释。注释为模式提供语义含义。例如,如果采用模式生成细节表,那么能够在注释中捕捉到这一信息。可以在以后生成这一模式的人工产物过程中采用这一注释(例如,在创建所述模式时)。
图7中描绘的可扩展性框架架构700的另一特征是人工产物管理器720。人工产物管理器720除了包括其他元件之外还包括多个适配器(在图7中将其示为适配器740(1)-(N))。如图7所示,适配器740(1)-(N)允许人工产物管理器720访问程序设计构造的各种资源,例如元数据、人工产物等(图7中示出了构造资源741(1)-(M)作为其例子)。人工产物是为一条运行时间元数据赋予含义的抽象化。人工产物除了具有其他特性和能力以外还能够提供必要的抽象,从而允许从运行时间元数据进行性质检索。
或者,能够将人工产物管理器720设计为直接访问构造源(从而使得前述适配器可选)。还可以将人工产物管理器720设计为直接访问其他信息,例如各种登记(图7中示出了人工产物登记处742作为其例子)。然而,如图7所示(并且如上文指出的),适配器740(1)-(N)不仅将人工产物管理器720接口连接至构建资源741(1)-(M),而且还接口连接至这样的构造源的例子,即元数据储存库744。如图所示,人工产物管理器720通过适配器740(1)访问元数据储存库744,通过适配器(2)-(N)访问构造源741(1)-(M)。应当认识到,尽管被示为具有1:1的关系,但是在既定的实现中所采用的适配器和构造源实际上也可以具有一对多、多对一或者多对多的关系和/或所述关系的某种组合。然而,在图7所示的方案中,应当认识到适配器740(1)-(N)中的每者将人工产物管理器720接口连接至指定构造源(即,元数据储存库744或者构造源741(1)-(M)之一)。
考虑到本公开应当认识到,人工产物登记处742保存可得以在可扩展性框架架构700中使用的人工产物以及与其相关的信息。考虑到本公开还应当认识到,人工产物登记处742中的人工产物将至少就某一方面而言是可配置的(即,可定制的),由此将对注入过程有所促进。类似地,元数据储存库744保存与人工产物相关的元数据(例如,目标元数据748)。应当理解,元数据储存库744只是能够使其为人工产物管理器720所用的各种人工产物储存库的一个例子,此外,这样的储存库支持能够通过应用开发框架使其为自服务程序员所用的功能,例如,所述框架可以是联系图13描述的框架。
在人工产物管理器720接收到来自规划处理模块710的人工产物请求(在图7中将其示为人工产物请求746)时,人工产物管理器720通过适配器访问变得可用的数据源(例如,人工产物登记处742和元数据储存库744),从而响应于来自规划处理模块710的人工产物请求746识别、访问和提供所请求的信息(该信息是包括所请求人工产物和相关元数据的信息)(在图7中将其示为目标元数据748))。人工产物的聚集连同其他构造一起包含(或者可能包含)在具有给定配置的人工产物管理器720可用的各种人工产物登记处当中。文中将人工产物的某些聚集称为划分。划分是指一个应用域所特有的配置人工产物(例如模式和规划)的集合。在某些实施例中,通过文件名和文件***目录识别划分。放置到划分的文件***目录中的配置文件将属于该划分。将联系图9更为详细地讨论人工产物管理器720的操作以及其他相关的要素及其额外特征。
所请求的模式(模式734)和必要的元数据(目标元数据748)现在已可用,因而规划处理模块710能够继续规划705识别的操作,并将所请求的模式和元数据提供给注入解析器725。诸如注入解析器725的注入解析器725(文中又称为模式解析器)确定所要生成的模式,而其又取决于由此接收到的输入(例如,模式734和目标元数据748)。例如,可以基于给定命令、一个或多个属性类型和目标人工产物选择多个模式中的具体模式进行注入。
更具体而言,模式注入是指将模式注入到现有人工产物内(例如,从而允许自服务程序员对人工产物进行定制)以及由实质化的模式创建新的人工产物(例如,从而允许自服务程序员在所述模式的模式程序员定义的全域内创建人工产物)的过程。因而,将模式(例如,模式705)注入到人工产物的运行时间元数据(例如,目标元数据748)内。如文中别处指出的,运行时间元数据是指在运行时间***的软件组件中采用的元数据。例如,在一种实现中,运行时间元数据和所产生的软件组件是针对所讨论的应用创建的软件文件(例如,应用开发框架文件)的集合。在这样的实现中,通过唯一的名称引用每一条运行时间元数据。因而,可以采用运行时间元数据的唯一名称从元数据储存库(例如,元数据储存库744)中检索到所述运行时间元数据的内容。
如前面指出的,人工产物是为一条运行时间元数据赋予含义的抽象化。在一种实现当中,人工产物的例子是图框。图框是对应于用户界面页面内的区域的用户界面人工产物。主区域是能够映射至页面内的版面布局元素的图框。版面布局元素是将被显示为主对象的字段的容器。
在这样的方案中,人工产物将携带下述信息:
1.名称人工产物的名称。
2.种类其描述了属于何种人工产物种类(例如,图框)。
3.目的其描述了此人工产物意思是什么(例如,主区域)。
4.应用到其描述应用这一人工产物的语境。
5.描述符每一描述符是描述该人工产物(例如,标签、验证器等)的名称—值对。
如上所述,应用到信息指示了人工产物的应用语境。例如,图框人工产物用于显示实体(例如,机会)的字段。语境(机会)为这一图框人工产物赋予了额外的含义。
此外,人工产物可以具有多个方面,其方式至少在概念上与模式的情况相当。每一方面取得人工产物和对应的运行时间元数据之间的映射。例如,人工产物方面可以具有下述信息:
1.运行时间元数据名称——其用于从元数据储存库检索运行时间元数据的内容。
2.***—***描述如何将这一人工产物定位到运行时间元数据内。就基于XML的元数据而言,例如,所述***可以是xpath表达式。
在将模式注入到人工产物的元数据内时,通常需要有关所述人工产物的元数据中的将注入所述模式的点的信息,文中将其称为切入点。切入点指定了将模式注入到人工产物内的***点。然而,这里应当指出,在切入点的自动识别和定位处于本公开的范围内时,情况就未必如此了。这样的自动识别和定位能够通过这样的技术实现,例如,运行时间元数据中的模式的识别、有关过去注入这样的模式的位置的历史信息的使用以及其他这样的自动化技术。
在一种实现中,切入点可以包括(例如)下述信息:
1.名称—识别切入点的唯一名称。
2.算子—指定如何将模式***到人工产物中的切入点算子。
3.注入器—作为用于执行***的实施类别的注入器。能够在切入点信息中识别出这一类别,或者可以将其实际包含到信息本身当中。
就算子切入点信息而言,如此识别出的切入点算子的例子包括“***”、“之后”、“之前”和“***排序”。“***排序”指示注入解析器725将模式***到运行时间元数据中的现有元素之间的相对位置内。每一切入点算子可以与具体的方面相关。例如,对于显示方面而言,可以采用“***排序”切入点算子,而对于绑定方面而言,可以采用“***”切入点算子。
在可扩展性框架架构700中,对于要通过注入解析器725注入到人工产物中的模式而言,需要下面的两条信息:
1.将要***所述模式的人工产物。
2.将要注入的模式。
3.用于确定如何执行***的切入点。
在被呈现为可扩展性框架架构700的实现当中,将在注入过程中执行以下操作:
1.选择模式中的方面。
2.针对选定的方面从模式检索生成内容。
3.针对选定的方面从人工产物检索运行时间元数据。可以针对选定的方面采用***对运行时间元数据进行检索。
4.针对选定的方面对切入点算子进行检索。
5.调用注入器,从而将所述生成的内容注入到运行时间元数据内。
如前面指出的,也可以在可扩展性框架架构700中生成人工产物。为了采用给定模式执行人工产物生成,采用专门的切入点创建新的人工产物。在这样的方案中,必须对给定模式给出正确的注释,从而能够由模式的注释生成新的人工产物。
注入解析器725除了包括其他元件外,还包括多个操纵器(在图7中将其示为操纵器750(1)-(N))。操纵器750(1)-(N)促进注入解析器725和可扩展性框架架构700的各个其他***元件之间的交互,由此提供对接受定制的软件构造进行修改所需的功能。例如,操纵器750(1)允许注入解析器725与服务会话752交互。类似地,操纵器750(N)允许注入解析器725与正在受到修改的各个软件组件754交互。在支持这样的功能的过程中,操纵器750(1)-(N)允许注入解析器725在接收到目标元数据748和模式734之后,将模式734注入到目标元数据748内,并向一个或多个软件组件754提供所定制的元数据。在执行前述操作并使定制构造可用的过程中,规划处理模块710通过(例如)向元数据服务760提供注释和其他信息(在图7中示出了注释765作为其例子)而与元数据服务760通信。然而,还要认识到,元数据服务760能够直接支持与规划处理模块710相关的功能,从而包含对规划705的处理。
图8是描绘根据本发明的实施例的数据模型的模式数据模型800的简化方框图。考虑到本公开应当认识到,模式数据模型800至少在某些特征和功能方面与联系图5的简化方框图描述的软件构造以及文中的别处描述的模式相当。模式数据模型800包括模式种类810、模式820、方面830、内容提供器840和模板850。从图8中所示的结构将认识到,实际上模式种类810和模式820具有多对多关系,这意味着诸如模式种类810的模式种类能够包含多个模式,模式820就处于所述模式当中。类似地,诸如模式820的模式可以含有一个或多个模式种类(例如,模式种类810)(即,作为其成员)。按照类似的方式,如图8所示,模式820可以具有一个或多个方面(例如方面830)。然而,诸如方面830的方面与其内容提供器(例如内容提供器840)具有一对一的关系。然而诸如内容提供器840的内容提供器可以与其模板(例如模板850)具有一对多的关系。
诸如模式种类810的模式种类(也可以称呼其类别名“模式种类”)的主要功能是在同一“种类”的模式之间实现一致性。就其而言,模式种类起着两个作用:
1.指定可在模式之间共享的共同规约和资源;以及
2.指定模式的使用过程中的外部契约(作为性质集)。
UI模式种类和数据模式种类是模式种类的例子。可以从母模式种类导出模式种类。例如,可以由UI模式种类导出文本UI模式种类。子模式种类能够继承母模式种类的资源。在一种实现中,能够在模式种类中指定下述特征:
1.性质集。性质集是性质连同这些性质的默认值的集合。模式将从其模式种类自动继承这些性质。模式能够超越性质集的默认值。
2.枚举。枚举含有串文字列表。性质可以参照枚举来指定其可能值的集合。
3.方面集。方面集是模式能够具有的方面的集合。
模式可以属于一个或多个模式种类。如果模式具有不只一个模式种类,那么通过列表指定这些模式种类,并应用下述规则解决模式种类之间的矛盾。
1.如果两个模式种类形成了分级,那么子模式种类的资源优先。
2.如果两个模式种类没有形成分级,那么列表中的后一模式种类的资源优先。
方面指定给定模式的实质化过程中的某一要求。一个这样的要求可以是模式在目标域内的物理表示。用户界面模式(例如,样本用户界面模式736)可以具有两个方面,即显示方面(例如,显示信息737)和绑定方面(例如,绑定信息738)。显示方面指定模式的观感。绑定方面指定这一模式与模式数据模型800交互的方式。显示方面和绑定方面每者具有其自身的物理表示(例如,XML方案)。每一方面具有其对应的内容提供器,以指定如何为具体的表示生成内容。
在某些实现中,诸如内容提供器840的内容提供器是Java类别,其控制某一方面的内容制作方式。典型地,内容提供器840采用一个或多个模板生成必要的内容。在这样的实现中,模板可以是(例如)含有所讨论的内容的部分实现的XML文档。或者,内容提供器840也可以以编程的方式生成内容。
模板内容提供器是模板的一个更加具体的例子。模板内容提供器是基于模板生成内容的内容提供器。模板内容提供器可以含有切换逻辑,其能够根据情况确定采用哪一模板。例如,如果正在创建输入文本模式,并且目标容器是表格,那么内容提供器可以选择是否采用将输入文本用户界面控制包封到列单元下的模板。
在某些实施例中,内容提供器的输出是内容对象。这样的内容对象是不只含有生成内容还含有有关所述内容的额外信息的自描述对象。作为例子,内容对象可以含有下述信息:
1.生成内容;
2.实现类型;以及
3.正在为其生成内容的方面。
实现类型识别用于这一内容的实现。例如,实现类型可以是XML内容的“DOM”(指示文档对象模型约定)。在这样的实现中,如果缺失了实现类型,那么将其默认设置为实际内容的类别名。
模板是针对具体方面的模式内容的指定。例如,可以采用模板指定基于XML的内容。能够在模板中表现模式的内容的形式的例子包括:
1.特定于语言的文字。这样的文字实质上是目标表示所特有的文本片段。例如,考虑到基于ADF的模式的情况,所述文字将是嵌入到模式内的ADF构造。
2.变量。变量是在使模板实质化时能够代入值的符号。变量通常是指模式的输入性质和模板参数。
3.子模式。模板本身能够嵌入其他子模式。
4.条件句。条件句是模板内的切换条件。这样的条件能够以(例如)输入性质和模板参数为基础。
5.子模板。模板本身能够嵌入子模板。这样的子模板将属于同一模式中的同一方面。
每一模板实质上都是下层目标表示的构造的延伸。就ADF而言,用户界面模板(例如,将与样本用户界面模式736一起使用的模板)将含有所讨论的应用(例如,CRM应用)的具体布局和视觉要求。
模板还可以申明一个或多个参数。这样的参数能够被用作模板的文本中的变量。通常在能够将模板嵌入到同一方面的另一模板内时采用模板参数。模板参数增强了模板的可重复使用性。
具有变量和条件的模板的例子如下:
具有子模板的模板的例子如下:
随着对模式的实质化,将其子模式扩充成具体的内容。应当认识到,考虑到本公开,可以采用几个方案将子模式包含到母模式内,例如,其包括:
1.简单包含。在这种方案中,直接在母模板中指定子模式。其与模板包含类似,只是目标是模式而不是模板。
2.动态包含。在这一方案中,在母模板中指定对象的集合。对于所述集合中的每一对象而言,能够基于其类别调用模式解析器,以确定用于该对象的实际子模式。此外,在给定对象的情况下,能够调用语境工厂生成能够在模式绑定中采用的生成语境。下文将进一步讨论生成语境。
3.元数据包含。这一方案是动态包含的特例,其中,所述对象是元数据对象。在这种情况下,提供专门语法支持元数据包含。
在将模式嵌入到模板内时,内容提供器进行核对,以确保所嵌入的内容的实施类型与包含模板兼容。在对模式实质化时,通常需要执行这样的操作的语境。文中将这样的语境称为生成语境。生成语境是在使模式实质化时可用的资源的集合。这些可用资源可在模板内作为变量加以访问。
诸如刚刚描述的生成的生成可以包括(例如):
1.模式性质的值;
2.事件的有效负荷;以及
3.标识符发生器,还能够采用其在模板中生成定制标识符。
在使模式实质化时,还可能希望提供语境绑定。例如,在将模式包含到模板内时,能够将母体的生成语境绑定至子模式。例如,能够按照下述顺序绑定来自母体的子模式性质值:
1.模式种类。将来自模式种类的默认性质值应用于子模板。
2.隐含式。子模式将自动继承母体的生成语境。例如,如果模式要求被称为“只读”的性质,那么母体的生成语境含有这样的性质,并且将使母体的生成语境内的“只读”的值绑定至子模式。注意,“只读”性质应当是子模式的输入性质,从而使这一性质能够被用作模板中的变量。
3.明确式。在绑定至子模式时,母模板能够明确地指定子模式的输入性质的值。例如,所述明确值可以是文字或表达式。如果所述明确值是表达式,那么所述表达式可以引用母体的生成语境内的性质。由于明确绑定是所述模式的性态规约的部分,因而认为明确绑定更强。
4.经过。如果母体的生成语境含有并非是子模式的输入性质的性质,那么将所述性质标记为经过。这意味着在所述模板中不能引用这一性质,但是在将这一性质绑定至子模式(子子模式)内的嵌入模式时,其是可用的。
在采用多形包含时,能够针对多形集合中的每一对象创建模板语境。在完成简单的绑定之后绑定这些对象级模板语境。而且,还要认识到,在对检测到的更为复杂的模式进行扩充时在这些模式当中可能存在任何具有母/子关系的循环(例如,从而避免子模式包含其母体)。此外,可扩展性框架架构700支持公共域名空间的使用,例如,可以将其实现为公共域名空间文件。可以将这样的公共域名空间文件指定为,使模板能够输入文件,从而指定模板内的单元的域名空间(或者域名空间前缀)。
图9是示出了根据本发明的实施例的元数据管理架构900的方框图,其是能够提供由图7中的人工产物管理器720及其相关元件所表示的功能的架构的例子。在根据本发明的实施例的可扩展性框架中,元数据管理处理由其管理的运行时间元数据的两项主要的使用。其中的第一项是将运行时间元数据用作向其内注入新模式的内容,该操作主要是在注入阶段执行的。其中的第二项是采用与运行时间元数据相关的性质反映所讨论的人工产物(即具体人工产物)的配置选择。这样的性质的例子为标签、所需的标志和验证器。可扩展性框架(即可扩展性框架架构700)通常不复制运行时间元数据中已经存在的性质。此外,如果额外的元数据在运行时间元数据中不可得,那么可扩展性框架还能够存储所述的额外元数据。这一功能能够实现在现有的人工产物的定制以及新人工产物的创建过程中采用同一基础设施。
除了其他功能之外,元数据管理架构900还能够提供元数据反射(按照上文提及的反向转化的方式)。如前面指出的,人工产物是为一条运行时间元数据赋予含义的抽象化,其还能够提供允许从运行时间元数据进行性质检索的信息。图9示出了支持元数据反射的可扩展性框架架构700内的各种元件。
人工产物管理器905是元数据管理架构900的核心,其至少在某些特征和功能方面与图7中的人工产物管理器720相当。将人工产物管理器905设计为通过元数据管理架构900提供的便利访问人工产物信息和元数据两者。人工产物管理器720起着入口点的作用,可扩展性框架架构700内的其他组件能够由其检索与指定人工产物相关的信息,例如,人工产物描述(如下文所述)。相对于这样的人工产物而言,人工产物管理器905对人工产物登记处910进行访问,人工产物登记处910又将通过人工产物登记适配器920提供对人工产物登记存储器915的访问。
人工产物登记存储器915响应于这一请求通过人工产物登记适配器920向人工产物登记处910提供一个或多个人工产物描述,在图9中其被示为人工产物描述925(1)-(N)。例如,可以将人工产物描述925(1)-(N)实现为表示有关人工产物的信息的类别。实际上,能够由人工产物登记处910获得人工产物的列表。人工产物登记处910通常仅保存可扩展的运行时间元数据的人工产物。人工产物登记处910采用人工产物登记适配器920从其物理存储器(即人工产物登记存储器915)检索必要的信息(人工产物列表)。应当认识到,人工产物登记处910、人工产物登记适配器920和人工产物登记存储器915至少在其功能的某些方面与图7中的人工产物登记处742相当。人工产物登记910的输出是人工产物描述(人工产物描述925(1)-(N))的列表。在某些实施例中,人工产物描述925(1)-(N)只含有有关人工产物的基本信息(例如,人工产物名、人工产物种类、人工产物目的等)。
一旦检索到了人工产物描述925(1)-(N),那么人工产物管理器905则继续检索用于注入过程的必要元数据。人工产物描述925(1)-(N)中的每一人工产物种类映射至资源访问简档(在图9中示出了资源访问简档930作为其例子)。对于人工产物登记处910返回的每一人工产物描述而言,资源管理器935识别出指定的人工产物描述的资源访问简档(例如资源访问简档930)并采用其访问适当的运行时间元数据存储器。应当认识到,根据本公开,可以将人工产物映射至多个资源,每一资源被设计为管理人工产物的性质(例如,标签、验证器或者其他这样的性质)的子集。
对于每一资源而言,元数据管理架构900通常包括对应的资源适配器(在图9中示出了资源适配器940作为其例子),其负责从资源的运行时间存储器检索性质,但是其他布置也处于本公开的范围内(例如,支持多个运行时间元数据存储器的资源适配器)。诸如资源适配器940的资源适配器以每人工产物为基础以资源描述(在图9中示出了人工产物描述945作为其例子)的形式返回人工产物的性质。能够按照与结合可扩展性框架架构700的其他人工产物描述说明的方式类似的方式将人工产物描述945实现为(例如)表示有关人工产物的信息的类别。资源适配器940访问运行时间元数据存储器950,以检索期望的运行时间元数据(在图9中将其描述为运行时间元数据955)。应当认识到,资源管理器935、资源适配器940和运行时间元数据存储器950至少在其功能的某些方面上与图7的适配器740(1)和元数据储存库744相当。
之后,人工产物管理器905使接收自人工产物登记处(例如,人工产物描述925(1)-(N))和资源管理器935(例如,人工产物描述945)的资源描述合并。现在就可以将合并的资源描述返回至调用人工产物管理器905的可扩展性框架架构700的模块(例如,规划处理模块710、元数据服务760或者可扩展性框架架构700的其他模块,这些模块通过与人工产物管理器905的接口连接而受到任务分派)。就创建了新人工产物的情况而言,人工产物管理器905还负责将这一人工产物存储到人工产物登记处910内。
还可以采用资源管理器935从运行时间元数据(例如,运行时间元数据存储器950中的运行时间元数据)去除一个或多个人工产物。例如,在某些实施例,人工产物存储一组针对其每一方面的***。这些***中的每者识别人工产物在运行时间元数据中的存在位置。对于每一这样的***识别人工产物种类。基于人工产物种类获得资源访问文件。如上文指出的,能够针对资源访问文件识别的每一资源识别资源适配器。其将促进给定资源的资源适配器的识别。一旦如此识别了所讨论的资源适配器,就能够采用对应的***调用资源适配器中的“删除”操作。之后,所述资源适配器对下层元数据存储器(即,运行时间元数据存储器950)执行“删除”操作。例如,采用图7中示出的元数据服务实例,资源适配器将简单地删除所讨论的人工产物。
在某些实施例中,可以保存命令日志(未示出)作为元数据管理架构900的部分,或者将其保存在可扩展性框架架构700中的其他位置。这样的命令日志将有关针对所创建、修改等的每一人工产物执行的创建、修改等的信息保存在可扩展性框架架构700内。在这样做的过程中,保存这些操作的历史,从而允许针对受到影响的人工产物受到扩展或者更改的方式做出判断。就***升级而言,这样的命令日志允许基于命令日志中保存的命令重新生成人工产物。
图10是示出了根据本发明的实施例的能够通过诸如可扩展性框架架构700的可扩展性框架架构执行的操作的例子的流程图。所述过程开始于可扩展性框架架构的规划处理模块等待来自配置器的命令(步骤1000)。一旦接收到了来自配置器的命令(步骤1000),就基于所接收到的命令识别规划(图7的规划705)(步骤1010)。如上文指出的,能够采用命令登记确定给定规划,其中,基于(例如)接收到的命令确定规划。一旦如此识别出了所要实现的规划,就根据需要适当地执行由其指定的操作(步骤1020)。下文将联系图11的描述进一步说明执行所识别的规划中指定的操作的过程。
图11是示出了执行诸如规划705的规划指定的操作的过程的例子的流程图。所述过程开始于识别由所述规划指定的所要执行的操作(步骤1100)。一旦识别出了给定操作,就判断是否应当执行所识别出的操作(步骤1110)。如果应当执行所识别出的操作(步骤1120),那么所述操作中所涉及的可扩展性框架架构的元件将执行所识别出的操作(步骤1130)。相反,如果判断不应执行所述规划识别出的指定操作(步骤1110和1120),那么跳过当前操作。在任意情况下,可扩展性框架架构的规划处理模块之后都判断所述规划中是否有尚待完成的操作(步骤1140)。如果还有这样的其他操作,那么所述过程循环回到给定操作的识别(步骤1100),并继续通过刚刚概述的过程。如果没有其他的操作(步骤1140),那么所述过程结束。
图12是示出了根据本发明的实施例的能够通过规划指定的操作的类型的例子的流程图。应当认识到,根据本公开并且联系图10、11和12,为了简化起见将按照顺次的方式组织图12的流程图中描绘的操作(因而不遵循图11中的迭代流)。图12中的流程图中描绘的规划的操作开始于人工产物及其目标元数据的识别(步骤1200)。如上文指出的,如此识别出的目标元数据是向其内注入模式的元数据。接下来,通过规划处理模块从人工产物管理器中检索出人工产物和目标元数据(步骤1210)。规划处理模块按照上文指出的方式将请求(例如,模式请求730)发送至模式管理器(步骤1220)。接着,模式管理器将构成所请求的模式(例如,样本用户界面模式736)(步骤1230)。于是,模式管理器将所请求的模式提供给从所述模式管理器接收模式的规划处理模块(步骤1240)。现在已经接收到了人工产物和目标元数据,以及将要注入其中的模式,因而规划处理模块将所述人工产物的目标元数据和模式提供给注入解析器(步骤1250)。在接收到这一信息的同时,注入解析器执行必要的操作,从而将所述模式注入到人工产物和目标元数据内(步骤1260)。在已经执行了这些操作的情况下,于是规划处理模块对注入操作和元数据服务进行协调(步骤1270)。
就运行时间可扩展性而言,由诸如可扩展性框架架构700的可扩展性框架架构提供的可扩展性按照文中先前指出的方式提供了几种好处。例如,自服务程序员能够在不写计算机代码的情况下对应用进行扩展和配置。在某些实现中,这样的程序员能够采用基于浏览器的界面做出改变,所述界面又能够通过向导和流的提供为这样的用户提供支持。此外,能够在不需要重启或者重新部署应用的情况下向所述应用施加期望的变化。此外,这样的可扩展性可以是“附加并任选的”,只有这样做能够提高和增强自服务程序员对所述应用的使用时才实施所述可扩展性。
图13是示出了可扩展性框架架构(例如可扩展性框架架构700)和用于在运行时间生成定制软件组件的相关元件的实现(在图13中被示为可扩展性框架实现1300)的方框图。可扩展性框架实现1300包括生成层1310,其又包括模式1315。模式1315至少在其某些特征和功能方面与(例如)图7的模式734相当。模式1315作为生成层1310的部分可用于引导各种适配器的操作,从而提供定制的软件组件的运行时间生成。在模式1315可以与其交互的可能的适配器当中,在图13中将模式1315示为可被应用开发框架适配器1320、面向服务的架构适配器1322、网络适配器1324、储存库定义适配器1326和服务适配器1328所用。考虑到本公开还应当认识到,诸如文中描述的实施例的实施例能够在预期可执行文件的生成中在运行时间上采用决策树,从而引导自服务程序员实施期望的修改和/或创建期望的功能。
而这些适配器又将在模式1315(继而在生成层1310)和多个应用编程接口(API)之间提供接口。考虑到本公开应当认识到,生成层1310的适配器能够提供对范围很宽的一组可能的API的访问。生成层1310的适配器能够提供对其的访问的可能的API当中是可扩展性框架实现1300中示出的那些,其包括应用开发框架(ADF)API1330、面向服务的架构(SOA)API1332、网络API1334、储存库定义网络服务API1336和服务策略API1338。在某些实施例中,采用ADF API1330支持用户界面、数据模型、方案定义(例如,XML方案定义)以及指定可扩展性框架的其他组件的可扩展性。服务策略API1338也通过促进功能授权而支持可扩展性。
应用开发框架API1330、面向服务的架构API1332和网络API1334将生成层1310中的对应适配器接口连接至元数据服务人工产物储存库1340。元数据服务人工产物储存库1340存储各种人工产物,ADF人工产物、SOA人工产物、网络人工产物等均处于其中。出于当前讨论的目的,元数据服务人工产物储存库1340与图7中描绘的元数据储存库744相当。因此可推知,应用开发框架适配器1320、面向服务的架构适配器1322和网络适配器1324与图7中的适配器740(1)-(N)中的各种适配器相当。模式1315通过储存库定义适配器1326和储存库定义网络服务API1336接口连接至储存库定义存储器1345。储存库定义存储器1345又将提供针对元数据服务人工产物储存库1340的储存库定义。在某些实现中,储存库定义存储器1345包括定义事实表和维度表的储存库定义(接下来将联系(例如)图17对其予以说明)。类似地,通过服务策略API1338为模式1315提供经由服务适配器和服务策略API1338对策略存储器1350的访问。在某些实现中,能够采用上文提及的轻量目录访问协议通过服务策略API1338访问策略存储器1350,以促进对其内的策略记录的访问的管理。
图14A是示出了根据本发明的实施例的包括诸如图7的可扩展性框架架构的可扩展性框架的实现的示例架构的方框图(在图14A中将其示为可扩展性框架架构实现1400)。可扩展性框架架构实现1400包括可扩展性框架1410(例如,按照可扩展性框架架构700的方式)。除了包括诸如图7所示的包含在可扩展性框架架构700中的元件的元件之外,可扩展性框架1410还被示为包括元数据适配器1412、内容构建模块1414和内容持续模块1416。元数据适配器1412促进通过各种API及其服务对可扩展性框架架构实现1400的元数据人工产物的访问。内容构建模块1414通过(例如)支持可扩展性框架架构实现1400内的各种数据库方案(schema)的扩展而促进内容类型的动态创建,由此促进文中描述的定制的各个方面。除了可扩展性框架1410的其他特征和其内的其他信息之外,内容持续模块1416促进自服务程序员对可扩展性框架1410所做的变化(例如,采用可扩展性框架1410创建的定制以及对其的修改)的持续,进而促进(例如)这样的定制及其属性和其他方面的持续。在这样的方案中,例如,能够使这样的变化在自服务程序员的会话的持续时间内持续。或者,能够使这样的变化跨越多个会话持续,在这种情况下,内容持续模块1416使所述变化持续至元数据储存库(例如,元数据储存库744、元数据服务人工产物储存库1340等,或者接下来将联系可扩展性框架架构实现1400描述的储存库)。
可扩展性框架1410按照图7中描绘的方式与构造界面1420接口,其允许自服务程序员(例如,管理员或其他用户)采用可扩展性框架1410定制软件组件。可扩展性框架1410按照与先前描述相当的方式从配置界面1420接收一个或多个命令,并在所接收的命令中识别的一个或多个规划指定的操作的执行过程中与几个界面之一交互。出于这一目的,可扩展性框架1410与应用开发框架API1430、元数据服务1432和/或flex字段API1434接口连接。flex字段API1434促进诸如扩展列和扩展表格的构造在按照可扩展性框架架构实现1400的方式构造的实现中的使用。可扩展性框架架构实现1400通过构成器界面1440提供对元数据人工产物的访问。构成器界面1440提供了用于对运行时间编辑进行定制以解决(例如)终端用户应用要求的易于使用的说明性可编程可扩展性机制。构成器界面1440能够被实现为基于浏览器的平台,其通过经由构成器框架1445和flex字段API1434提供对元数据服务1432的访问而提供这样的功能。构成器框架1445又提供了在其上构建这样的可定制应用页面的框架。
不管是采用配置界面1420还是采用构成器界面1440对元数据服务1432进行访问,元数据服务1432都会提供对元数据人工产物集(在图14A中被示为元数据人工产物1450)的访问。元数据人工产物1450包括基础人工产物1454以及扩展人工产物1458。基础人工产物1454可以包括(例如)诸如视图对象、页面、页片段、任务流、页面定义等的构造。扩展人工产物1458可以包括(例如)诸如构成器人工产物、flex扩展元数据等的构造。除了配置界面1420(其旨在供自服务程序员使用)和构成器界面1440(其旨在供程序员使用)之外,程序员还能够采用开发界面1460直接访问元数据服务1432和元数据人工产物1450。
为了使可扩展性框架实现支持根据本发明的实施例的定制的生成以及运行时间生成,可以提供多个种功能。例如,所要定制的模块或应用应当与所述可扩展性框架兼容(例如,就文中的某些例子而言,应当采用元数据定义内容)。此外,优选不对内容编码,而是生成所述内容。这样的元数据还应当采用运行时间API促进内容的扩展和/或增加。而且,这样的元数据应当使用被用作数据/对象的基础的开发框架(例如,ADF)并且/或者与之集成。这样的模块和应用也优选在不需要服务器重启的情况下在运行时间上读取元数据,并且应当定义适当的模式,以实现可扩展性。
此外,应当由本公开认识到,能够通过可扩展性框架实现1300提供各种类型的可扩展性。例如,在根据本发明的实施例的可扩展性框架实现中能够变得可定制的构造的类型包括(例如)实体、属性和关系以及用户界面。采用这些构造作为例子,一旦指明了一个或多个可扩展的实体,就能够增加新的顶层实体(例如,租借)和新的子实体(例如,机会判决问题)了。一旦增加了这样的实体,就能够通过增加新的属性以及创建新的“关系”(其采用基于外关键字(FK)的关系)和新的“语境链接”(其不采用基于FK的关系)而扩展所述实体的属性和关系。考虑到上述扩展,能够通过创建工作区着陆页扩展相关的可扩展用户界面。在一个实施例中,例如,针对每一(定制)实体创建一个着陆页。一旦创建了着陆页,就在指定的用户界面单元内揭示新的属性。对于新的“语境链接”关系而言,创建树节点(实体“客户”的子体),同时针对新的“关系”创建新的子选项卡(但是,在这种情况下,母实体页必须是子选项卡用户界面)。
可扩展性框架实现1300也支持其他类型的可扩展性。其他可扩展性类型包括可扩展服务、可扩展工作流事件、可扩展分析以及可扩展输入/输出。服务的扩展中涉及的操作包括(例如)增加新的属性作为实体的有效负荷XML方案定义(XSD)中的元素以及针对所述(可定制)实体创建新有效负荷XSD。可扩展分析提供的功能包括(例如)在现有报告中提供定制属性、采用定制和标准实体创建新报告、支持深向和浅向钻研以及支持分组和汇集操作。对可扩展工作流事件的支持包括(例如)电子邮件通知的创建、从属字段的更新、用户任务的创建以及出站服务的发送。对可扩展输入/输出操作的支持包括(例如)提供现有的输入/输出操作中的定制属性以及支持定制实体的输入/输出。
此外,能够对可扩展性框架实现中的各种可扩展性类型“预播种”(即,预配置),进而提供预配置的元数据人工产物(例如,预配置的中间件元数据人工产物)。可以采用诸如开发界面1460的开发界面完成这样的预配置,所述预配置包括用于实现数据可扩展性、用户界面可扩展性、数据安全可扩展性、功能安全可扩展性、业务事件可扩展性、分析可扩展性和网络服务可扩展性的预配置人工产物以及其他可能的预配置人工产物。
就数据可扩展性而言,预配置的人工产物可以包括基础表格中的flex列、基础实体对象中的flex列的实体对象属性、以每一基础母表格为基础的子扩展表格、每一子扩展表格的子实体对象,它们为母实体对象和子实体对象之间提供了关联,提供了顶层扩展表格(例如,根据逻辑业务区(LBA)),为每一扩展表提供了顶层扩展实体对象,并且允许以每一应用为基础的资源束超越。就用户界面可扩展性而言,提供可扩展解绑定任务流,以添加新的工作区,其为增加新的菜单项目的应用菜单。
根据本发明的实施例的实体对象是可扩展性框架组件,其表示指定数据源中的行,其简化了对其相关属性的修改。重要的是,其促进了域业务逻辑的封装,而这又有助于确保按照一致的方式验证业务策略和规则。实体对象支持各种说明性业务逻辑特征,以实施数据的有效性。这样的构造不仅保证了说明性验证,还保证了额外的定制应用逻辑和业务规则,由此促进了必要的域业务逻辑向每一实体对象内的封装。
因而实体对象支持各种概念特征在根据本发明的实施例的可扩展性框架中的实现。例如,至少部分地通过指定数据库表格而定义实体对象,所述实体对象表示所述表格的行。因而,自服务程序员能够创建这样的行之间的关联,以反映实体对象之间的关系(例如,采用视图链接,接下来将对此予以说明)。此外,在运行时间上,能够采用对应于给定实体对象的实体定义对象管理实体对象的数据库表格行(文中又称为实体行)。例如,能够通过对应的行关键字识别出每一这样的实体行。此外,能够在提供数据库交易的应用模块(或者更简单而言的应用)的语境内对这样的实体行进行检索和修改。
就数据安全可扩展性而言,为顶层扩展表格提供参数化实例集,并且为预定义角色授予某些特权。就功能安全可扩展性而言,也能够为预定义角色赋予特权。此外,能够通过提供Java授权数据中的源代码授权而允许对服务策略API(例如,服务策略API1338)进行访问。就业务事件可扩展性而言,例如,所述架构能够规定给定电子邮件模板中的属性的注释。就分析可扩展性而言,能够针对视图对象的实体对象中的flex属性做出规定,类似地能够提供储存库定义存储器1345的物理和逻辑表格中的flex列。然而,在提供这样的分析可扩展性时,所述架构应当确保给定视图对象是用户界面视图对象属性的超集(例如,通过确保属性名称的匹配)。就网络服务可扩展性而言,能够通过几种方式提供可扩展性,包括(例如)提供多形视图对象(例如,在每一基础视图对象的基础上),以实现XSD生成。还能够通过提供视图链接促进网络服务可扩展性,所述链接将对基础视图对象和多形视图对象进行链接。还能够提供顶层多形视图对象(例如,在每一LBA的基础上),以促进网络服务可扩展性。
根据本发明的实施例的视图对象是一种可扩展性框架组件,其提供各种特征和优点,包括封装一个或多个数据库查询(例如,SQL查询),以及简化有关其结果的工作。能够在根据本发明的实施例的可扩展性框架中实现几种类型的视图对象,包括(例如)只读视图对象、基于实体的视图对象(从而允许执行数据更新)、静态数据视图对象(例如,由视图对象本身定义的数据)、以编程方式填充的视图对象以及其他视图对象。能够将基于实体的视图对象(即以实体对象为基础的视图对象)配置为支持可更新的行,这样的视图对象能够将其属性映射至一个或多个现有实体对象的属性。将这样的映射实体对象作为实体使用保存到视图对象的视图对象定义当中。通过这种方式,基于实体的实体对象能够与实体对象协作,进而提供可更新数据模型。因而,基于实体的视图对象能够仅查询面向客户端的任务所需的数据,并且要依赖其映射实体对象来验证和存储对其视图行做出的改变。与只读视图对象类似,基于实体的视图对象保证了一个或多个查询的封装,能够将所述对象链接至主(master)细节层级,并且能够将其用在应用的数据模型中。
本发明的各种实施例提供了具有独特运行时间特征的只读视图对象。例如,在某些实施例中,不具有实体使用定义的视图对象默认是只读的。因此,这样的只读视图对象不采集由实体导出的默认值,不反映未决的改变,不反映更新的参考信息,以及其他这样的特征。与基于实体的视图对象形成对照的是,只读视图对象要求用户采用适用的查询语言(例如,SQL查询语言)对查询编程。此外,作为创建在设计时间指定查询(例如,SQL语句)的视图对象的替代,能够创建在运行时间动态地生成查询(例如SQL语句)的实体映射的视图对象。
本发明的各种实施例提供了具有独特运行时间特征的基于实体的视图对象。例如,在某些实施例中,如果视图对象具有一项或多项下层实体使用,那么能够创建新的行,并且能够对查询到的行进行修改和删除。根据本发明的实施例的基于实体的视图对象与下层实体对象协作,以实施业务规则,以及将变化保存至数据库。此外,基于实体的视图对象还能够提供各种对于只读视图对象而言不存在的能力。例如,实体管理的高速缓存信息的变化(更新、***、删除等)能够跨越视图对象的执行边界而持续(即,继续存在)。此外,就此而言,通过同一事务中的其他视图对象对相关实体对象属性所做的改变将立即反映到受到这样的变化所影响的同一事务中的那些实体对象的各个当中,并且能够将新的行的属性值初始化为来自下层实体对象属性的值。此外,对外关键字(FK)属性值所做的变化将导致参考信息的更新。可以通过参考来自一个或多个实体对象的属性定义可更新视图对象,其中基于下层实体相关性定义视图链接。应当认识到,通常在促进事务的应用的语境下采用这样的基于实体的视图对象。
图14B是示出了根据本发明的实施例的视图对象以及由其提供的功能的例子的方框图。在图14B中还示出了这样的对象能够具有的与诸如可扩展性框架1410的可扩展性框架的其他逻辑构造和元件的关系的例子。因而,由前述功能和关系将认识到,这样的视图对象能够通过上文讨论的方式定义一个或多个查询,以及生成一个或多个行(由行构成的行集合)。
图14C是示出了根据本发明的实施例的实体对象和视图对象的元件之间的交互和关系的例子的方框图。图14C所示的逻辑构造除了具有其他特征和优点之外,演示了在促进可更新数据模型的提供的某些实现中存在于前述视图对象和实体对象的元件之间的交互和关系,
图15是示出了根据本发明的实施例的可扩展性框架数据库架构1500的各种特征的方框图,其提供了数据模型可扩展性、用户界面可扩展性、数据安全可扩展性和功能安全可扩展性的例子。在图15所示的示例架构中,将能够由(例如)网络服务器230执行的多个网络应用(在图15中被示为网络应用1510(1)-(N))设计成访问应用数据库(在图15中就其示为应用数据库1520(1)-(N))中的对应的一个。由本公开将认识到,尽管将网络应用1501(1)-(N)中的每者示为与应用数据库1520⑴-(N)中的对应的一个接口连接,但是这样的1:1关系既不是强制性的,也未必是所希望的,因而应当将图15所示的架构仅仅看作是能够根据本发明的实施例构建的任意数量的可能架构中的一个例子。
如图15进一步所示,根据可扩展数据库方案1530构造应用数据库1520⑴。可扩展数据库方案1530包括基础表格1540,其又将包括基础列1545和flex列1547。可扩展数据库方案1530还包括基础表格1540的子可扩展表格1550。子扩展表格1550又包括***列1555和flex列1557。此外,可扩展数据库方案1530还包括顶层实体扩展表格1560。顶层实体扩展表格1560又包括***列1565和flex列1567。
前述描述提供了能够在根据本发明的实施例的可扩展性框架数据库架构中(例如,通过一个或多个配置界面1420、构成器界面1440或开发界面1460)实施的预配置的例子。在图15所示的例子中,将基础表格1540的flex列1547示为是预配置的。子扩展表格1550(例如,每个基础表格一个子扩展表格)和顶层实体扩展表格1560(例如,每LBA一个顶层实体表格)也是预配置的。
按照本公开通篇(针对较早提及的可扩展性类型)指出的方式,能够采用模式为每一前述可扩展性类型提供各种可扩展特征。例如,按照上文针对数据可扩展性指出的方式,预配置的人工产物能够包括子扩展表格、顶层实体扩展表格和/或flex列(例如,在基础表格、子扩展表格和/或顶层实体扩展表格中)。在表格1中将提供这样的可扩展性的模式表示为数据模型可扩展性示例模式,所述模式采用其内列举的预配置的可扩展性单元,进而能够用来生成各种这样的可扩展特征。如表1中指出的,诸如创建定制属性模式的模式采用基础表格中的flex列,并生成(例如)视图对象、标签和/或flex元数据等当中的属性。表1还包括创建子实体模式,其(例如,在每基础母表格的基础上)采用子扩展表格生成(例如)子实体视图对象,所述对象又能够使其flex列被用来创建新的属性(按照与刚刚指出的相当的方式)。表1中还包含了创建顶层实体模式,其将顶层扩展表格和顶层扩展实体对象用于扩展表格,以生成顶层实体视图对象和/或flex元数据等。
表1数据模型可扩展性示例模式
就用户界面可扩展性而言,提供可定制的解绑定任务流,从而增加新工作区,其为用于增加新菜单项的应用菜单。在表2中示出了提供这样的可扩展性的模式作为用户界面可扩展性示例模式,其采用其内列举的预配置的可扩展性元素,进而能够用于生成各种这样的可扩展特征。
表2用户界面可扩展性示例模式
就数据安全可扩展性而言,为顶层扩展表格提供参数化的实例集,并且为预定义角色授予某些特权。在表3中示出了提供这样的可扩展性的模式作为数据安全可扩展性示例模式,其采用其内列举的预配置的可扩展性元素,进而能够用于生成各种这样的可扩展特征。
表3数据安全可扩展性示例模式
就功能安全可扩展性而言,能够为预定义角色赋予特权。在表4中示出了提供这样的可扩展性的模式作为功能安全可扩展性示例模式,其采用其内列举的预配置的可扩展性单元,进而能够用于生成各种这样的可扩展特征。
表4功能安全可扩展性示例模式
图16是示出了根据本发明的实施例的网络服务可扩展性架构1600的方框图,其提供了网络服务可扩展性和业务事件可扩展性的例子。网络服务可扩展性架构1600包括各种抽象层,包括应用开发框架层1610、网络服务定义层1620和网络服务运行时间层1630。应用开发框架层1610包括应用(在图16中将其示为应用模块1640)。而应用模块1640又包括基础视图对象定义1642和多形视图对象定义1644。通过视图链接1645(如图所示,其链接基础视图对象和多形视图对象)表示有关基础视图对象定义1642和多形视图对象定义1644之间的关系的信息。而多形视图对象定义1644又包括诸如定制属性1646和定制视图链接1648之类的元素。
在ADF层1610中,应用模块1640包括各种定义构造,其促进了网络服务定义层1620中的视图对象方案的定义,并且其在这样做的过程中采用对象定义语言。这些方案定义(例如,视图对象方案定义)又促进了网络服务运行时间层1630内的运行时间构造的生成。此外,能够在母视图对象和子视图对象之间,例如,在图16的基础视图对象定义和多形视图对象定义(基础视图对象定义1642和多形视图对象定义1644)之间生成一个或多个视图链接(例如,视图链接1645)。如上文指出的,在图16中将多形视图对象定义1644示为包括定制属性1646和定制视图链接1648,它们是采用网络服务可扩展性架构1600的自服务程序员可采用的定制/可定制特征的例子。此外,考虑到本公开应当认识到,多形视图对象定义1644的这些(以及其他)构造促进了多形视图对象定义1644的多形本质。
网络服务定义层1620包括网络服务定义语言1650中的信息,例如,基础视图对象方案定义1655。而基础视图对象方案定义1655又可以包括诸如多形视图对象方案定义1657的元素。从图16可以看出,通过基础视图对象定义1642和基础视图对象方案定义1655之间的关系以及多形视图对象1644和多形对象方案定义1657之间的关系,采用网络服务定义语言1650在网络服务定义层1620中定义应用模块1640。
在网络服务定义层1620中,来自ADF层1610的视图对象定义充当了在网络服务定义层1620中定义的、通过网络服务定义语言1650实施的视图对象方案定义(例如,基础视图方案定义1655和多形对象方案定义1657)的基础。包括多形对象方案定义1657的基础视图方案定义1655充当了网络服务运行时间层1630中的服务实现的基础。考虑到本公开应当认识到,基础视图对象方案定义1655和多形对象方案定义1657是提供可扩展性构造和功能的数据库方案,例如,所述可扩展性构造和功能可以是联系图15的可扩展数据库方案1530描述的构造和功能。更具体而言,这样的可扩展性构造(及其相关功能)包括(例如)基础表格1540的flex列1547、子扩展表格1550(和flex列1557)以及顶层实体扩展表格1560(和flex列1567)。
如曾指出的,基础视图对象方案定义1655(进而多形视图对象方案定义1657)充当作为网络服务运行时间层1630的元素的服务实现(在图16中示出了服务实现1660作为其例子)的基础。在支持可扩展性的过程中,服务实现1660采取基础视图对象服务数据对象1662作为输入。基础视图对象服务数据对象1662包括多形视图对象服务数据对象1664。基础视图对象服务数据对象1662和多形视图对象服务数据对象1664提供可扩展性构造,其定义自服务程序员能够在其内根据需要创建、修改和删除功能从而实现其预期结果的全域。基于这样的输入(例如,方案定义、数据对象、其多形性以及其他这样的可扩展性构造和输入),服务实现1660生成基础视图对象行1666作为输入,该行包含(或者能够包含)多形视图对象行1668。应当认识到,诸如图15中描绘的构造的可扩展性构造促进了诸如基础视图对象行1666和多形视图对象行1668的视图对象行的可扩展性。
如文中早前指出的,能够按照各种方式提供网络服务可扩展性,包括(例如)提供用于XSD生成的多形视图对象。在表5中示出了提供这样的可扩展性的模式作为网络服务可扩展性示例模式,其采用其内列举的预配置的可扩展性单元,进而能够用于生成各种这样的可扩展特征。
表5网络服务可扩展性示例模式
就业务事件可扩展性而言,例如,所述架构能够提供给定电子邮件模板中的属性的注释。在表6中示出了提供这样的可扩展性的模式作为业务事件可扩展性示例模式,其采用其内列举的预配置的可扩展性单元,进而能够用于生成各种这样的可扩展特征。
表6业务事件可扩展性示例模式
图17是示出了根据本发明的实施例的可扩展分析架构1700的方框图,其提供了分析可扩展性的例子。可扩展数据库方案被示为可扩展分析架构1700的元素。能够看出,可扩展数据库方案1710具有与数据库方案1530相当的结构,其允许可扩展数据库方案1710通过其对模式的支持而实现对各种可扩展特征的定义、创建、修改和删除,由此实现对可扩展性的支持。
可扩展分析架构1700还包括应用开发框架1720,其包括基于可扩展数据库方案1710的结构的对象。因而,可扩展数据库方案1710提供了(采用应用开发架构1720的)自服务程序员在其内能够采用简单、有效的基于意图的范例定义、创建、修改和/或删除各种可扩展特征的全域。应用开发框架1720又基于在应用开发框架1720内可获得的、通过可扩展数据库方案1710使用(例如,扩展)的对象生成图17所示的结构作为储存库定义1730。
如刚刚指出的,可扩展数据库方案1710包括与所指出的数据库方案1530的元素相当的元素。例如,将这样的元素包含到根据可扩展数据库方案1710构造的应用数据库中。可扩展数据库方案1710包括客户基础表格1740,其又包括基础列1745和flex列1747。可扩展数据库方案1710还包括用于客户基础表格1740的子扩展表格1750。子扩展表格1750又包括***列1755和flex列1757。此外,可扩展数据库方案1710还包括顶层实体扩展表格1760。顶层实体扩展表格1760又包括***列1765和flex列1767。
在可扩展数据库方案1710的基础上,自服务程序员能够采用应用开发框架1720中的各种对象工作,以生成储存库定义(例如,储存库定义1730)。例如,客户视图对象1770、借贷视图对象1772和抵押视图对象1774就处于这样的对象当中。这些对象为应用开发框架1720提供了必要的基础材料,以生成储存库定义1730。
在图17所示的例子中,储存库定义1730包括采用一个或多个模式定制前述对象的结果。在图17所示的例子中,由此生成的人工产物包括具有一个或多个维度列1785的借贷维度表格1780。储存库定义1730还包括具有外关键字(FK)列1792和度量列1794的新事实表格1790。考虑到本公开应当认识到,外关键字通常是所述外关键字所涉及的实体的关键字。还应当认识到,就数据库环境(例如,关系数据库)而言,将外关键字与弱实体(即,不能单独通过其属性唯一识别的实体)的属性一起使用来创建主关键字。FK列1792又能够参考其他维度表,例如,数据维度表1796和抵押维度表1798(其本身具有一个或多个维度列1799)。
表7示出了各种的分析可扩展性示例使用情况,其演示了所执行的扩展(可扩展性操作)、所涉及的表格类型(例如,在表7所示的例子中为事实表格或维度表格)。
表7分析可扩展性示例使用情况
一般而言,可以按照各种方式提供分析可扩展性,包括在实体对象内提供flex属性,以及类似地在所得到的储存库定义存储器的物理和逻辑表中提供flex列。在图8中示出了提供这样的可扩展性的模式作为分析可扩展性示例模式,其采用其内列举的预配置可扩展性元素,进而能够用于生成各种这样的可扩展特征。
表8分析可扩展性示例模式
示例计算和网络环境
如上所述,能够采用各种计算机***和网络实现本发明。下文将参考图18和19描述一个这样的计算和网络环境的例子。
图18示出了适于实现本发明的各个方面(例如,服务器620、网关服务器650、客户端660和网络客户端665)的计算机***1810的方框图。计算机***1810包括总线1812,其对计算机***1810的主要子***进行互连,例如所述子***为中央处理器1814、***存储器1817(通常为RAM,但是其也可以包括ROM、闪速RAM等)、输入/输出控制器1818、诸如经由音频输出接口1882的扬声器***1820的外部音频装置、诸如经由显示适配器1826的显示屏1824的外部装置、串行端口1828和1830、键盘1832(与键盘控制器1833接口连接)、存储接口1834、用于接收软盘1838的软盘驱动器1837、用于与光纤信道网络1890连接的主机总线适配器(HBA)接口卡1835A、用于连接至SCSI总线1839的主机总线适配器(HBA)接口卡1835B以及用于接收光盘1842的光盘驱动器1840。还包括鼠标1846(或者通过串行端口1828耦合至总线1812的其他点击装置)、调制调解器1847(通过串行端口1830耦合至总线1812)和网络接口1848(直接耦合至总线1812)。
总线1812允许在中央处理器1814和***存储器1817之间进行数据通信,如前所述,所述存储器可以包括只读存储器(ROM)或闪速存储器(两者都未示出)以及随机存取存储器(RAM)(未示出)。所述RAM通常是将操作***和应用程序加载到其内的主存储器。所述ROM或闪速存储器能够含有基本输入-输出***(BIOS)连同其他代码,所述BIOS控制诸如与***组件的交互的基本硬件操作。驻留在计算机***1810内的应用通常存储在计算机可读介质上,并且经由其被访问,例如,所述计算机可读介质为硬盘驱动器(例如,硬盘1844)、光驱动器(例如,光驱动器1840)、软盘单元1837或者其他存储介质。
与计算机***1810的其他存储器接口的情况一样,存储器接口1834能够连接至诸如固定磁驱动器1844的用于信息存储和/或检索的标准计算机可读介质。固定盘驱动器1844可以是计算机***1810的一部分,或者可以是单独的并通过其他接口***被访问。调制调解器1847可以提供经由电话链路与远程服务器的直接连接,或者经由因特网服务提供商(ISP)与因特网的直接连接。网络接口1848可以通过经由POP(存在点)与因特网的直接网络链路提供与远程服务器的直接连接。网络接口1848可以采用无线技术提供这样的连接,包括数字蜂窝电话连接、蜂窝数字信息分组数据(CDPD)连接或者数字卫星数据连接等。
可以按照类似的方式连接多个其他装置或子***(未示出)(例如,文档扫描仪、数字照相机等)。相反,本发明的实践未必需要图18所示的所有装置。可以按照与图18所示的不同的方式对所述装置和子***进行互连。诸如图18所示的计算机***的计算机***的操作是本域公知的,在本应用中将不对其予以详细讨论。可以将用于实现本发明的代码存储到计算机可读存储介质中,例如,***存储器1817、固定盘1844、光盘1842或软盘1838。在计算机***1810上提供的操作***可以是 或其他已知的操作***。
此外,就文中描述的信号而言,本域技术人员将认识到,能够将信号从第一块直接传输至第二块,或者能够在所述块之间对信号进行修改(例如,放大、衰减、延迟、锁存、缓冲、反转、滤波或者其他修改)。尽管将上述实施例的信号表征为从一个块传输至下一个块,但是本发明的其他实施例可以包括修改的信号来替代这样的直接传输的信号,只要在所述块之间完成了所述信号的信息和/或功能方面的传输即可。由于所涉及的电路的物理限制的原因(例如,不可避免地存在一定的衰减和延迟),在一定程度上,能够将在第二块处输入的信号概念化成由第一块输出的第一信号导出的第二信号。因此,文中采用的由第一信号导出的第二信号包括第一信号或者任何对第一信号的修改,所述修改是由电路限制导致的,或者是由通过其他不对第一信号的信息和/或最终功能方面做出改变的电路元件而导致的。
图19是示出了网络架构1900的方框图,在所述架构中,客户端***1910、1920和1930以及存储服务器1940A和1940B(能够采用计算机***1910实现其中的任何一者)耦合至网络1950。存储服务器1940A还被示为具有直接附着的存储装置1960A(1)-(N),将存储服务器1940B示为具有直接附着的存储装置1960B(1)-(N)。存储服务器1940A和1940B还连接至SAN构造1970,但是与存储区网络的连接并不是本发明的运作所需的。SAN构造1970支持存储服务器1940A和1940B对存储装置1980⑴-(N)的访问,进而支持客户端***1110、1120和1130通过网络1150对存储装置1980⑴-(N)的访问。还示出了智能存储阵列1190作为可通过SAN构造1970访问的具体存储装置的例子。
参考计算机***1810,能够采用调制调解器1847、网络接口1848或者其他方法提供从客户端计算机***1910、1920和1930中的每者向网络1950的连接。客户端***1910、1920和1930能够采用(例如)网络浏览器或者其他客户端软件(未示出)访问存储服务器1940A或1940B上的信息。这样的客户端允许客户端***1910、1920和1930访问存储服务器1940A或1940B或者存储装置1960A(1)-(N)、1960B(1)-(N)、1980(1)-(N)或者智能存储阵列1990之一持有的数据。图19示出了诸如因特网的用于交换数据的网络的使用,但是本发明不限于因特网或者任何具体的基于网络的环境。
其他实施例
本发明非常适于获得所提及的以及其中内在的优点。尽管已经参考本发明的具体实施例对本发明给出了图示和描述,并且参考本发明的具体实施例对本发明进行了定义,但是这样的参考并不隐含对本发明的限制,不应推断存在任何这样的限制。本发明能够在形式和功能上存在相当大的修改、变更和相当多的等价方案,这是本域技术人员能够想到的。图示和描述的实施例只是例子,而不是对本发明的范围的穷举。
上文描述了包括包含于其他组件内的组件的实施例(例如,将各种元件示为计算机***1810的组件)。这样的架构只是例子,实际上能够通过实施多个其他架构实现相同的功能。从抽象但是仍然明确的意义上来讲,用于实现相同功能的组件的任何布置都是有效“相关的”,从而实现预期的功能。因而,可以将文中的任何两个通过结合实现具体的功能的组件看作是为了实现预期的功能而彼此“相关的”,而不管架构或者中间组件如何。类似地,可以将任何两个如此相关的组件视为相互“操作连接”或“操作耦合”,以实现预期功能。
上述详细说明已经利用方框图、流程图和例子阐述了本发明的各种实施例。本域技术人员应当理解,能够通过很宽范围内的硬件、软件、固件或其任何组合,包括图6中所示的专门***单独地和/或集体地实现以举例的方式示出的每一方框图组件、流程图步骤、操作和/或组件。
已经在具有充分的功能的计算机***的背景下描述了本发明,但是本域技术人员将认识到,本发明能够作为各种形式的程序产品分布,而且不管用于实际执行所述分布的计算机可读介质的具体类型如何,本发明都同样地适用。计算机可读介质的例子包括计算机可读存储介质以及未来开发的介质存储和分布***。
能够通过执行一项或多项与上述实施例相关的任务的软件模块实现上文讨论的实施例。文中讨论的软件模块可以包括脚本、批处理文件或者其他可执行文件。可以将软件模块存储到及其可读或者计算机可读存储介质上,例如,软磁盘、硬盘、半导体存储器(例如,RAM、ROM和闪速类型介质)、光盘(例如,CD-ROM、CD-R和DVD)或者其他类型的存储模块。根据本发明的实施例的用于存储固件或硬件模块的存储装置还可以包括基于半导体的存储器,其可以是永久性地、可拆卸地或者远程地耦合至微处理器/存储***的。因而,能够将所述模块存储到计算机***存储器内,从而将所述计算机***配置为执行所述模块的功能。可以采用其他新的各种类型的计算机可读存储介质存储文中讨论的模块。
上述说明的目的在于对本发明举例说明,不应将其视作限制。其他处于本发明的范围内的实施例也是可能的。本域技术人员将容易地实现提供文中公开的结构和方法所必需的步骤,并且将理解,所述步骤的过程参数和顺序都是以举例的方式给出的,可以对其做出改变,以实现预期的结构以及处于本发明的范围内的修改。在不背离本发明的范围的情况下,可以基于文中阐述的说明对文中公开的实施例做出变化和修改。
因此,旨在使本发明仅由所附权利要求的范围限定,其将提供对等价方案的全方位的完整认知。
尽管已经结合几个实施例描述了本发明,但是其并非旨在使本发明局限于文中阐述的具体形式。相反,旨在使其覆盖这样的替代方案、修改和等价方案,它们能够合理地包含在由所附权利要求定义的本发明的范围内。
Claims (20)
1.一种方法,包括:
从多个模式中选择一个或多个模式,其中
所述模式中的每一个被配置为描述多个问题域中的对应的一个问题域之内的解决方案,以及
所述一个或多个模式是针对企业软件对象的;以及生成企业软件对象,其中
所述生成使用所述一个或多个模式生成企业软件对象。
2.根据权利要求1所述的方法,其中
所述企业软件对象是记录对象、业务逻辑对象、业务处理对象或者用户界面对象中的一个或多个。
3.根据权利要求1所述的方法,还包括:
提供参数的值,其中
所述参数是由所述一个或多个模式定义的。
4.根据权利要求3所述的方法,其中,所述提供值包括:
从用户界面输入字段接收值。
5.根据权利要求3所述的方法,其中,
所述参数的值被配置为定义所述企业软件对象的特性。
6.根据权利要求3所述的方法,还包括:
根据一个或多个规则限制所述选择,其中
所述一个或多个规则与所述一个或多个模式中的一个或多个或者企业软件对象相关联。
7.根据权利要求6所述的方法,其中
所述一个或多个规则中的一个规则支配模式的可允许的组合。
8.根据权利要求6所述的方法,其中
所述一个或多个规则中的一个规则被配置为限制所述参数的值。
9.根据权利要求6所述的方法,还包括:
选择所述一个或多个规则,其中
基于有关要为其生成企业软件对象的企业的信息来选择所述一个或多个规则。
10.根据权利要求1所述的方法,还包括:
生成所述一个或多个模式中的一个模式,其中
所述模式包括
针对企业软件对象的配置选项。
11.根据权利要求10所述的方法,其中,所述模式还包括:
针对所述企业软件对象的生成细节。
12.根据权利要求10所述的方法,其中,所述配置选项包括:
指定对在所述企业软件对象中实例化的模式的要求的一个或多个方面。
13.根据权利要求1所述的方法,还包括:
在云计算环境中执行所述选择和生成;以及
在所述云计算环境中执行所述企业软件对象。
14.一种计算机程序产品,包括:
多个指令,包括
可在计算机***上执行的第一指令集,其被配置为
从多个模式中选择一个或多个模式,其中
所述模式中的每一个配置为描述多个问题域中的对应的一个问题域内的解决方案,以及
所述一个或多个模式是针对企业软件对象的,以及
可在所述计算机***上执行的第二指令集,其被配置为生成企业软件对象,其中
所述生成使用所述一个或多个模式来生成企业软件对象;以及
计算机可读存储介质,其中所述指令被编码在计算机可读存储介质内。
15.根据权利要求14所述的计算机程序产品,其中
所述企业软件对象是记录对象、业务处理对象、或者用户界面对象中的一个或多个。
16.根据权利要求14所述的计算机程序产品,其中,所述指令还包括:
可在所述计算机***上执行的第三指令集,其被配置为提供参数的值,其中
所述参数是由所述一个或多个模式定义的,
所述第三指令集包括
可在所述计算机***上运行的第一指令子集,其被配置为从用户界面输入字段接收值,以及
所述参数的值被配置为定义所述企业软件对象的特性。
17.根据权利要求14所述的计算机程序产品,其中,所述指令还包括:
可在所述计算机***上执行的第三指令集,其被配置为选择一个或多个规则,其中
基于有关要为其生成企业软件对象的企业的信息选择所述一个或多个规则;以及
可在所述计算机***上执行的第四指令集,其被配置为根据所述一个或多个规则限制所述一个或多个模式的选择,其中
所述一个或多个规则与一个或多个模式中的一个或多个或者企业软件对象相关联,
所述一个或多个规则中的一个规则支配模式的可允许的组合,并且
将所述一个或多个规则中的另一个规则被配置为限制所述参数的值。
18.根据权利要求14所述的计算机程序产品,其中,所述指令还包括:
可在所述计算机***上执行的第三指令集,其被配置为生成所述一个或多个模式中的一个模式,其中
所述模式包括以下项中的一个或多个
针对企业软件对象的配置选项,
针对所述企业软件对象的生成细节,以及
指定对在所述企业软件对象中实例化的模式的要求的一个或多个方面。
19.根据权利要求14所述的计算机程序产品,其中,所述指令还包括:
可在所述计算机***上执行的第三指令集,其被配置为在所述云计算环境中执行所述企业软件对象,其中,所述第一和第二指令集被配置为在所述云计算环境中执行。
20.一种计算机***,包括:
处理器;
耦合至所述处理器的计算机可读介质;以及
指令,其中
所述指令被编码在所述计算机可读介质中,以及
所述指令被配置为使所述处理器
从多个模式中选择一个或多个模式,其中
所述模式中的每一个被配置为描述多个问题域中的对应的一个问题域内的解决方案,以及
所述一个或多个模式是针对企业软件对象的,以及
生成企业软件对象,其中
所述生成使用所述一个或多个模式生成企业软件对象。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38408610P | 2010-09-17 | 2010-09-17 | |
US61/384,086 | 2010-09-17 | ||
PCT/US2011/052158 WO2012037557A1 (en) | 2010-09-17 | 2011-09-19 | Pattern-based construction and extension of enterprise applications in a cloud computing environment |
US13/236,022 | 2011-09-19 | ||
US13/236,022 US9535663B2 (en) | 2010-09-17 | 2011-09-19 | Pattern-based construction and extension of enterprise applications in a cloud computing environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103119557A true CN103119557A (zh) | 2013-05-22 |
CN103119557B CN103119557B (zh) | 2017-05-17 |
Family
ID=45218849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180044414.9A Active CN103119557B (zh) | 2010-09-17 | 2011-09-19 | 云计算环境中的企业应用的基于模式的构造和扩展 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9535663B2 (zh) |
CN (1) | CN103119557B (zh) |
WO (1) | WO2012037557A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106022615A (zh) * | 2016-05-23 | 2016-10-12 | 成都镜杰科技有限责任公司 | 基于云计算的企业资源管理方法 |
CN107615274A (zh) * | 2015-05-27 | 2018-01-19 | 谷歌公司 | 经由插件市场增强虚拟助理和对话***的功能性 |
CN107729025A (zh) * | 2017-09-30 | 2018-02-23 | 广州市网畅信息技术有限公司 | 一种一体化管理***的构建平台 |
CN108369549A (zh) * | 2016-01-19 | 2018-08-03 | 微软技术许可有限责任公司 | 使用重启时期的版本化记录管理 |
CN110968303A (zh) * | 2019-11-29 | 2020-04-07 | 苏州迈高材料基因技术有限公司 | 材料计算和材料数据挖掘的交互式流程设计方法和*** |
CN111008051A (zh) * | 2018-10-04 | 2020-04-14 | 甲骨文国际公司 | 基于多维规则的动态布局 |
Families Citing this family (107)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2316071A4 (en) | 2008-06-19 | 2011-08-17 | Servicemesh Inc | CLOUD DATA PROCESSING GATEWAY, CLOUD DATA PROCESSING HYPERVISOR, AND METHOD FOR IMPLEMENTING THEM |
US9489647B2 (en) | 2008-06-19 | 2016-11-08 | Csc Agility Platform, Inc. | System and method for a cloud computing abstraction with self-service portal for publishing resources |
US9069599B2 (en) * | 2008-06-19 | 2015-06-30 | Servicemesh, Inc. | System and method for a cloud computing abstraction layer with security zone facilities |
US10411975B2 (en) | 2013-03-15 | 2019-09-10 | Csc Agility Platform, Inc. | System and method for a cloud computing abstraction with multi-tier deployment policy |
US8676904B2 (en) | 2008-10-02 | 2014-03-18 | Apple Inc. | Electronic devices with voice command and contextual data processing capabilities |
US8412797B2 (en) * | 2009-08-27 | 2013-04-02 | Vmware, Inc. | Platform for development and deployment of system administration solutions |
US8806424B1 (en) * | 2010-04-20 | 2014-08-12 | Accenture Global Services Limited | System for linking process architectures to technology architectures |
US20120291011A1 (en) * | 2011-05-12 | 2012-11-15 | Google Inc. | User Interfaces to Assist in Creating Application Scripts |
US20120330699A1 (en) * | 2011-06-17 | 2012-12-27 | Sap Ag | Case-based retrieval framework |
IN2011CH02818A (zh) * | 2011-08-18 | 2015-05-29 | Infosys Ltd | |
US9483279B2 (en) * | 2011-10-31 | 2016-11-01 | Oracle International Corporation | Mechanism for providing unified access to decentralized user assistance repositories |
US9792451B2 (en) * | 2011-12-09 | 2017-10-17 | Echarge2 Corporation | System and methods for using cipher objects to protect data |
CN104205149A (zh) | 2012-01-06 | 2014-12-10 | 通用电气智能平台有限公司 | 用于创建和呈现控制逻辑的设备及方法 |
US9075616B2 (en) | 2012-03-19 | 2015-07-07 | Enterpriseweb Llc | Declarative software application meta-model and system for self-modification |
US9141363B2 (en) * | 2012-03-23 | 2015-09-22 | Sap Se | Application construction for execution on diverse computing infrastructures |
WO2013147780A1 (en) * | 2012-03-29 | 2013-10-03 | Hewlett-Packard Development Company, L.P. | A conceptual services implementation platform |
US20130262504A1 (en) * | 2012-03-30 | 2013-10-03 | Sap Ag | Case-based Adaptation Framework for Customization Knowledge in Enterprise Systems |
US8935191B2 (en) * | 2012-05-02 | 2015-01-13 | Sap Ag | Reuse of on-demand enterprise system customization knowledge utilizing collective experience |
WO2014008304A2 (en) | 2012-07-02 | 2014-01-09 | Oracle International Corporation | Extensibility for sales predictor (spe) |
US20140013237A1 (en) * | 2012-07-03 | 2014-01-09 | Avrom Roy-Faderman | Extensible Framework to Expose Metametadata for Dynamically Generated User Interfaces |
US20140082586A1 (en) * | 2012-08-09 | 2014-03-20 | FatFractal, Inc. | Application development system and method for object models and datagraphs in client-side and server-side applications |
US9348490B2 (en) | 2012-09-14 | 2016-05-24 | Ca, Inc. | User interface with configuration, registration, and runtime selection of views |
US9275355B2 (en) * | 2012-09-24 | 2016-03-01 | International Business Machines Corporation | Business process model analyzer and runtime selector |
WO2014071367A2 (en) | 2012-11-05 | 2014-05-08 | Rodney Aiglstorfer | Systems and methods for providing financial service extensions |
US10019259B2 (en) | 2013-01-29 | 2018-07-10 | Mobilize.Net Corporation | Code transformation using extensibility libraries |
US9465608B2 (en) * | 2013-03-15 | 2016-10-11 | ArtinSoft Corporation | Code separation with semantic guarantees |
US9459862B2 (en) | 2013-01-29 | 2016-10-04 | ArtinSoft Corporation | Automated porting of application to mobile infrastructures |
US10061573B2 (en) | 2013-01-29 | 2018-08-28 | Mobilize.Net Corporation | User interfaces of application porting software platform |
CN104969289B (zh) | 2013-02-07 | 2021-05-28 | 苹果公司 | 数字助理的语音触发器 |
US9110935B2 (en) * | 2013-02-26 | 2015-08-18 | Sap Se | Generate in-memory views from universe schema |
US9448773B2 (en) * | 2013-04-03 | 2016-09-20 | Salesforce.Com, Inc. | Systems and methods for implementing a uniform application user interface across a multi-tenant environment |
CN104253831B (zh) | 2013-06-26 | 2018-05-11 | 国际商业机器公司 | 一种用于在云计算环境中部署应用的方法和*** |
US20150019559A1 (en) * | 2013-07-11 | 2015-01-15 | Salesforce.Com, Inc. | Systems and methods for identifying categories with external content objects in an on-demand environment |
US9471345B2 (en) | 2013-09-25 | 2016-10-18 | Sap Se | Runtime generation and injection of java annotations |
US20150120479A1 (en) * | 2013-10-28 | 2015-04-30 | International Business Machines Corporation | Catalog driven order management for rule definition |
US9729615B2 (en) * | 2013-11-18 | 2017-08-08 | Nuwafin Holdings Ltd | System and method for collaborative designing, development, deployment, execution, monitoring and maintenance of enterprise applications |
US20150161547A1 (en) * | 2013-12-10 | 2015-06-11 | Oracle International Corporation | Methods and systems to define and execute customer declarative business rules to extend business applications |
US11308114B1 (en) * | 2013-12-23 | 2022-04-19 | Cazena, Inc. | Platform for provisioning a data analytics environment |
US9742838B2 (en) | 2014-01-09 | 2017-08-22 | Red Hat, Inc. | Locked files for cartridges in a multi-tenant platform-as-a-service (PaaS) system |
EP3982256B1 (en) | 2014-01-17 | 2023-11-01 | Fair Isaac Corporation | Cloud-based decision management platform |
US9715513B2 (en) * | 2014-02-19 | 2017-07-25 | Cellos Software Limited | System, method and computing apparatus to isolate a database in a database system |
US9563419B2 (en) * | 2014-02-20 | 2017-02-07 | International Business Machines Corporation | Managing deployment of application pattern based applications on runtime platforms |
US20140173554A1 (en) * | 2014-02-24 | 2014-06-19 | Arunav Gupta | Platform and a method for development of a software application |
US9575639B2 (en) * | 2014-02-27 | 2017-02-21 | Ab Initio Technology Llc | Compound controls |
US9338493B2 (en) | 2014-06-30 | 2016-05-10 | Apple Inc. | Intelligent automated assistant for TV user interactions |
US9910858B2 (en) * | 2014-07-08 | 2018-03-06 | Intuit Inc. | System and method for providing contextual analytics data |
US10564937B2 (en) * | 2014-07-18 | 2020-02-18 | Sap Se | Relational logic integration |
US10043153B2 (en) | 2014-07-24 | 2018-08-07 | International Business Machines Corporation | Pattern-based product identification with feedback |
US10547562B2 (en) * | 2014-07-31 | 2020-01-28 | Hewlett Packard Enterprise Development Lp | Cloud resource pool |
US11650816B2 (en) | 2014-11-11 | 2023-05-16 | Fair Isaac Corporation | Workflow templates for configuration packages |
US10162630B2 (en) | 2014-11-11 | 2018-12-25 | Fair Isaac Corporation | Configuration packages for software products |
CN107111497A (zh) * | 2015-01-16 | 2017-08-29 | 株式会社野村综合研究所 | 开发支持*** |
CN104731862A (zh) * | 2015-02-09 | 2015-06-24 | 河南工程学院 | 基于物联网的大数据管理*** |
US9569203B2 (en) | 2015-03-27 | 2017-02-14 | International Business Machines Corporation | Service-based integration of application patterns |
US9652269B2 (en) | 2015-04-03 | 2017-05-16 | Oracle International Corporation | System and method for supporting representational state transfer services natively in a service bus runtime |
US9977700B2 (en) * | 2015-04-03 | 2018-05-22 | Oracle International Corporation | System and method for providing an application programming interface for deploying a service bus artifact from a local development environment to a cloud environment |
US10313451B2 (en) | 2015-04-03 | 2019-06-04 | Oracle International Corporation | System and method for providing a configuration wizard for use in creating representational state transfer services for execution in a service bus runtime |
US10091086B2 (en) | 2015-04-03 | 2018-10-02 | Oracle International Corporation | System and method for providing an application programming interface manager for use with a service bus runtime |
US10460227B2 (en) | 2015-05-15 | 2019-10-29 | Apple Inc. | Virtual assistant in a communication session |
CN107430517B (zh) * | 2015-05-27 | 2020-12-18 | 谷歌有限责任公司 | 用于增强对话***的插件的在线市场 |
US9866451B2 (en) | 2015-06-02 | 2018-01-09 | International Business Machines Corporation | Deployment of enterprise applications |
CN105022806B (zh) * | 2015-07-03 | 2018-08-10 | 厦门二五八集团有限公司 | 基于翻译模板的互联网网页建构移动页面的方法与*** |
US9904452B2 (en) * | 2015-08-25 | 2018-02-27 | Sap Se | Building user specific user interface instances |
US10182122B2 (en) | 2015-08-31 | 2019-01-15 | Open Text Corporation | Action flow fragment management |
US10747498B2 (en) | 2015-09-08 | 2020-08-18 | Apple Inc. | Zero latency digital assistant |
US10691473B2 (en) | 2015-11-06 | 2020-06-23 | Apple Inc. | Intelligent automated assistant in a messaging environment |
US10063649B2 (en) * | 2015-12-29 | 2018-08-28 | Ca, Inc. | Data translation using a proxy service |
US10521721B2 (en) * | 2016-04-08 | 2019-12-31 | International Business Machines Corporation | Generating a solution for an optimization problem |
US10380508B2 (en) * | 2016-04-25 | 2019-08-13 | Fair Isaac Corporation | Self-contained decision logic |
CN106056351B (zh) * | 2016-05-23 | 2020-05-22 | 鲜丰水果股份有限公司 | 基于云计算的企业工作流管理方法 |
US10255051B2 (en) | 2016-08-02 | 2019-04-09 | Oracle International Corporation | Generation of dynamic software models using input mapping with feature definitions |
DK180048B1 (en) | 2017-05-11 | 2020-02-04 | Apple Inc. | MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION |
DK201770429A1 (en) * | 2017-05-12 | 2018-12-14 | Apple Inc. | LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT |
US11195137B2 (en) * | 2017-05-18 | 2021-12-07 | International Business Machines Corporation | Model-driven and automated system for shared resource solution design |
US10990898B2 (en) | 2017-05-18 | 2021-04-27 | International Business Machines Corporation | Automatic rule learning in shared resource solution design |
US10764204B2 (en) * | 2017-06-22 | 2020-09-01 | Sap Se | Cloud extensibility framework |
US11327869B2 (en) * | 2017-07-10 | 2022-05-10 | Dell Products L.P. | Distributed architecture for determining performance parameters |
US10521223B1 (en) | 2017-08-22 | 2019-12-31 | Wells Fargo Bank, N.A. | Systems and methods of a metadata orchestrator augmenting application development |
US11630650B2 (en) * | 2017-09-11 | 2023-04-18 | NextWorld, LLC | Systems and methods for creating enterprise software |
CN109814861A (zh) * | 2017-11-21 | 2019-05-28 | 海云数据 | 为终端用户提供能力的开放平台 |
US10673700B1 (en) * | 2018-01-29 | 2020-06-02 | Intuit Inc. | Method and system for extending a base pattern using an automatic pattern generation engine |
US10680895B1 (en) * | 2018-01-29 | 2020-06-09 | Intuit Inc. | Method and system for automatic patterns generation and testing |
US10466990B1 (en) * | 2018-01-29 | 2019-11-05 | Intuit Inc. | Method and system for auto stacking and launching base and extended patterns using an automatic launch and restack engine |
US10713153B1 (en) | 2018-01-29 | 2020-07-14 | Intuit Inc. | Method and system for testing an extended pattern using an automatic pattern testing engine |
US10664294B2 (en) * | 2018-02-28 | 2020-05-26 | Intuit Inc. | Matching adopting users and contributing users for decentralized software localization |
US10928918B2 (en) | 2018-05-07 | 2021-02-23 | Apple Inc. | Raise to speak |
DK180639B1 (en) | 2018-06-01 | 2021-11-04 | Apple Inc | DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT |
US11462215B2 (en) | 2018-09-28 | 2022-10-04 | Apple Inc. | Multi-modal inputs for voice commands |
US10970052B2 (en) * | 2018-10-19 | 2021-04-06 | Oracle International Corporation | System and method for enhancing component based development models with auto-wiring |
US11132368B2 (en) * | 2019-02-21 | 2021-09-28 | Oracle International Corporation | Recursive data traversal model |
US11348573B2 (en) | 2019-03-18 | 2022-05-31 | Apple Inc. | Multimodality in digital assistant systems |
US11281820B2 (en) | 2019-04-02 | 2022-03-22 | Desktop Metal, Inc. | Systems and methods for growth-based design |
US11681504B1 (en) | 2019-04-26 | 2023-06-20 | Opturo, Inc. | Automated application builder using configuration files |
US11307752B2 (en) | 2019-05-06 | 2022-04-19 | Apple Inc. | User configurable task triggers |
US11227599B2 (en) | 2019-06-01 | 2022-01-18 | Apple Inc. | Methods and user interfaces for voice-based control of electronic devices |
US10942709B2 (en) * | 2019-07-02 | 2021-03-09 | Holtworks, LLC | Hyperpiler |
US10853062B1 (en) | 2019-07-02 | 2020-12-01 | Holtworks, LLC | Hyperpiler |
US11212384B2 (en) | 2019-12-20 | 2021-12-28 | Capital One Services, Llc | Cross-channel configurable navigation |
US11126414B1 (en) * | 2020-03-13 | 2021-09-21 | RedLore | Method and system for changing the behavior of a connected field device |
US11061543B1 (en) | 2020-05-11 | 2021-07-13 | Apple Inc. | Providing relevant data items based on context |
US11490204B2 (en) | 2020-07-20 | 2022-11-01 | Apple Inc. | Multi-device audio adjustment coordination |
US11438683B2 (en) | 2020-07-21 | 2022-09-06 | Apple Inc. | User identification using headphones |
US11984124B2 (en) | 2020-11-13 | 2024-05-14 | Apple Inc. | Speculative task flow execution |
US11500864B2 (en) * | 2020-12-04 | 2022-11-15 | International Business Machines Corporation | Generating highlight queries |
TWI813962B (zh) * | 2021-03-05 | 2023-09-01 | 中華電信股份有限公司 | 企業雲網整合監控之建置與演進系統、方法及電腦可讀媒介 |
US20230025538A1 (en) * | 2021-07-26 | 2023-01-26 | Dell Products L.P. | Secure vsan cluster using device authentication and integrity measurments |
US11934817B2 (en) * | 2021-10-25 | 2024-03-19 | Jpmorgan Chase Bank, N.A. | Systems and methods for deploying federated infrastructure as code |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040153992A1 (en) * | 2000-04-04 | 2004-08-05 | Pedro Juan Molina-Moreno | Method and apparatus for automatic generation of information system user interfaces |
US20050177384A1 (en) * | 2004-02-10 | 2005-08-11 | Cronin Donald A. | System and method for designing and building e-business systems |
US20080082959A1 (en) * | 2004-10-22 | 2008-04-03 | New Technology/Enterprise Limited | Data processing system and method |
US20090288068A1 (en) * | 2008-05-13 | 2009-11-19 | Facton Gmbh | Domain model concept for developing computer applications |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6931625B1 (en) * | 1999-10-05 | 2005-08-16 | Borland Software Corporation | Method and system for collapsing a graphical representation of related elements |
TW463175B (en) * | 2000-03-01 | 2001-11-11 | Winbond Electronics Corp | Memory processing method and system |
US7203695B2 (en) * | 2003-03-20 | 2007-04-10 | Sap Ag | Method and system for using a framework to implement an audit process |
JP2005173788A (ja) * | 2003-12-09 | 2005-06-30 | Ibm Japan Ltd | オートノミック・コンピューティングシステム、実行環境制御方法及びプログラム |
US20060230379A1 (en) * | 2005-04-06 | 2006-10-12 | Microsoft Corporation | System and method for generating a user interface based on metadata exposed by object classes |
US7979848B2 (en) * | 2005-04-29 | 2011-07-12 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Systems, methods and apparatus for pattern matching in procedure development and verification |
WO2009017231A2 (ja) * | 2007-08-02 | 2009-02-05 | Nec Corporation | パターン検査システム、パターン検査装置、方法およびパターン検査用プログラム |
US8196089B2 (en) * | 2007-10-09 | 2012-06-05 | International Business Machines Corporation | Pattern-based development of computer system solutions |
US20100088671A1 (en) * | 2008-10-07 | 2010-04-08 | Heiko Rentsch | Project scopes for configuration based computer application projects |
US8417798B2 (en) * | 2010-05-11 | 2013-04-09 | International Business Machines Corporation | Deploying artifacts for packaged software application in cloud computing environment |
-
2011
- 2011-09-19 WO PCT/US2011/052158 patent/WO2012037557A1/en active Application Filing
- 2011-09-19 US US13/236,022 patent/US9535663B2/en active Active
- 2011-09-19 CN CN201180044414.9A patent/CN103119557B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040153992A1 (en) * | 2000-04-04 | 2004-08-05 | Pedro Juan Molina-Moreno | Method and apparatus for automatic generation of information system user interfaces |
US20050177384A1 (en) * | 2004-02-10 | 2005-08-11 | Cronin Donald A. | System and method for designing and building e-business systems |
US20080082959A1 (en) * | 2004-10-22 | 2008-04-03 | New Technology/Enterprise Limited | Data processing system and method |
US20090288068A1 (en) * | 2008-05-13 | 2009-11-19 | Facton Gmbh | Domain model concept for developing computer applications |
Non-Patent Citations (1)
Title |
---|
CLARLES SIMONYI 等: "Intention Software", 《ACM SIGPLAN NOTICES》, 10 October 2006 (2006-10-10) * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11170415B2 (en) | 2015-05-27 | 2021-11-09 | Google Llc | Enhancing functionalities of virtual assistants and dialog systems via plugin marketplace |
CN107615274A (zh) * | 2015-05-27 | 2018-01-19 | 谷歌公司 | 经由插件市场增强虚拟助理和对话***的功能性 |
US11769184B2 (en) | 2015-05-27 | 2023-09-26 | Google Llc | Enhancing functionalities of virtual assistants and dialog systems via plugin marketplace |
US11551273B2 (en) | 2015-05-27 | 2023-01-10 | Google Llc | Enhancing functionalities of virtual assistants and dialog systems via plugin marketplace |
CN108369549A (zh) * | 2016-01-19 | 2018-08-03 | 微软技术许可有限责任公司 | 使用重启时期的版本化记录管理 |
CN108369549B (zh) * | 2016-01-19 | 2022-03-22 | 微软技术许可有限责任公司 | 版本化记录管理计算***、方法和计算机可读介质 |
CN106022615B (zh) * | 2016-05-23 | 2020-05-19 | 上海中传网络技术股份有限公司 | 基于云计算的企业资源管理方法 |
CN106022615A (zh) * | 2016-05-23 | 2016-10-12 | 成都镜杰科技有限责任公司 | 基于云计算的企业资源管理方法 |
CN107729025A (zh) * | 2017-09-30 | 2018-02-23 | 广州市网畅信息技术有限公司 | 一种一体化管理***的构建平台 |
CN111008051A (zh) * | 2018-10-04 | 2020-04-14 | 甲骨文国际公司 | 基于多维规则的动态布局 |
CN111008051B (zh) * | 2018-10-04 | 2024-04-23 | 甲骨文国际公司 | 基于多维规则的动态布局 |
CN110968303A (zh) * | 2019-11-29 | 2020-04-07 | 苏州迈高材料基因技术有限公司 | 材料计算和材料数据挖掘的交互式流程设计方法和*** |
CN110968303B (zh) * | 2019-11-29 | 2023-12-01 | 苏州迈高材料基因技术有限公司 | 材料计算和材料数据挖掘的交互式流程设计方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN103119557B (zh) | 2017-05-17 |
US20120185821A1 (en) | 2012-07-19 |
WO2012037557A1 (en) | 2012-03-22 |
US9535663B2 (en) | 2017-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103119557A (zh) | 云计算环境中的企业应用的基于模式的构造和扩展 | |
CN102656557B (zh) | 自动化企业软件开发 | |
Johnson | Expert one-on-one J2EE design and development | |
Brambilla et al. | Process modeling in web applications | |
US20220215122A1 (en) | Specifying a new computational step of a data pipeline | |
US8037409B2 (en) | Method for learning portal content model enhancements | |
CN102622227B (zh) | 一种支持动态配置的构件模型及构件工厂的装置 | |
CN102253827A (zh) | 具有学习机制的糅合基础结构 | |
Delgado et al. | Towards a generic BPMS user portal definition for the execution of business processes | |
CN104769911A (zh) | 多域身份管理*** | |
WO2005069942A2 (en) | System and method for generating and deploying a software application | |
JP2004280821A (ja) | ソフトウェアビジネスプロセスモデル | |
US20110137807A1 (en) | Model-based customized eco system and design method thereof | |
JP7373563B2 (ja) | ウェブサイト構築システム用の構成可能なアプリケーションの作成および処理のためのシステムおよび方法 | |
Freeman et al. | Pro asp. net MVC 3 Framework | |
Thalheim | From Models_For_Programming to Modelling_To_Program and Towards Models_As_A_Program | |
Sam-Bodden | Beginning POJOs: Lightweight Java Web Development Using Plain Old Java Objects in Spring, Hibernate, and Tapestry | |
Hatami-Alamdari et al. | Monolithic architecture vs. multi-layered cloud-based architecture in the CRM application domain | |
Garaba | Medieval municipal buildings: development of a digital atlas to support historical research | |
Wipp | Workflows on Android: A framework supporting business process execution and rule-based analysis | |
Hodel | Integration with Third-Party Tools | |
Sadeghian Boroujeni | Development of a shared authentication system–a microservice approach | |
Malik et al. | Business Connectivity Services | |
Xiong et al. | Design and implementation of silk relic information systems via SSH | |
Thakker | Pro Oracle Fusion Applications: Installation and Administration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |