CN1826599A - 自述商务对象 - Google Patents
自述商务对象 Download PDFInfo
- Publication number
- CN1826599A CN1826599A CNA2004800211346A CN200480021134A CN1826599A CN 1826599 A CN1826599 A CN 1826599A CN A2004800211346 A CNA2004800211346 A CN A2004800211346A CN 200480021134 A CN200480021134 A CN 200480021134A CN 1826599 A CN1826599 A CN 1826599A
- Authority
- CN
- China
- Prior art keywords
- data
- service
- storage vault
- relation
- title
- 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
- 238000000034 method Methods 0.000 claims abstract description 93
- 230000009471 action Effects 0.000 claims description 80
- 230000014509 gene expression Effects 0.000 claims description 18
- 238000012217 deletion Methods 0.000 claims description 14
- 230000037430 deletion Effects 0.000 claims description 14
- 238000001914 filtration Methods 0.000 claims description 9
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 claims description 6
- 230000005055 memory storage Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 abstract description 9
- 230000000875 corresponding effect Effects 0.000 description 23
- 230000033001 locomotion Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 238000003780 insertion Methods 0.000 description 11
- 230000037431 insertion Effects 0.000 description 11
- 230000008859 change Effects 0.000 description 9
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000015654 memory Effects 0.000 description 7
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000033228 biological regulation Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000000926 separation method Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000013499 data model Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 241000124033 Salix Species 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000012010 growth Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000002620 method output Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000002603 single-photon emission computed tomography Methods 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/106—Display of layout of documents; Previewing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/123—Storage facilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种方法和装置,包括计算机程序产品,其包括在储存库中表示来自服务器的服务,所述服务包括使用一组对集合中的数据元素的操作来与一个或多个数据元素的集合交互,所述储存库包括集合的描述和每个集合的共同属性,所述储存库根据元模型来组织。所述方法还包括使软件实体请求表示在储存库中的服务,所述服务表示对来自多个集合的第一集合中的一个或多个数据元素的第一操作,并执行对第一集合中的一个或多个数据元素的第一操作。
Description
相关申请的参考
本申请要求以下申请的优先权:2003年7月22日的美国临时申请No.60/489573,“企业服务构架技术(ENTERPRISE SERVICES FRAMEWORKTECHNOLOGIES)”,以及美国有效申请No.10/747020,“自述商务对象(SELF DESCRIBING BUSINESS OBJECTS)”,并且其公开内容被全部结合在此作为参考。
技术领域
本发明涉及数字计算机的数据处理,特别涉及自述商务对象。
背景技术
大规模商务软件应用有时被用“前端构件(front end component)”的术语来分类,其包括图形用户界面(GUI)以便向用户展示数据并从用户接收数据输入。这样的前端构件是为了特定的用户定制的(customize)。这样的软件应用的另一个构件有时被称为“后端构件(back end component)”,其存储商务数据并根据商务逻辑处理商务数据。所述后端构件检索、产生和维护商务数据。所述后端构件通常负责数据的一致性(consistency)和正确性。所述后端构件还能够存储在各种数据之间的关系。在一个典型的商务软件应用中,前端构件包括应用代码以显示和集合(aggregate)后端的数据,并提供帮助以产生请求给所述后端用于更新操作。
后端的数据能够使用关系数据库术语(relational database terminology)来表示。在关系数据库术语中,实体(entity)是记录,并且实体类型(entitytype)是一组具有共同属性的实体,而一个唯一的名称和一个唯一的描述被指派给所述实体类型。典型地,数据库具有多个二维表,其中每个表表示一种实体类型,而每个表的每一行表示一个实体。属性(attribute)是对实体或实体类型的特性的描述。典型地,属性被规定在数据库的字段(rield)或列中。实体类型还可以具有能够链接(link)一个实体类型的一个或多个实体和另一个实体类型的其它实体的关系。这个链接可以使用外来关键字(foreignkey)、通过将一个表中的一个或多个字段指向(pointing to)第二个表的主关键字来建立(done)。这使得从一个表中的一组实体遍历(traversing)到另一个表中的相关实体。
发明内容
在一个方面,本发明的特征在于一种方法,其包括在储存库(repository)中表示来自服务器的服务,所述服务包括使用一组对集合中的数据元素的操作来与一个或多个集合的数据元素交互,所述储存库包括集合的描述和每个集合的共同属性,所述储存库根据元模型来组织。所述方法还包括使软件实体请求在储存库中表示的服务,所述服务表示对来自多个集合的第一集合中的一个或多个数据元素的第一操作,并执行对第一集合中的一个或多个数据元素的第一操作。
实施例可以包括一个或多个以下特征。储存库还包括对来自多个集合的一个集合的数据元素的特殊动作的描述。特殊动作的描述包括特殊动作的名称、特殊动作的输入数据的数据结构的名称、以及数据元素的集合的名称。该组操作(the set ofoperations)对应服务供应商类别的方法,在一些情况下,该组操作包括选择、删除、按照关系选择、以及更新操作。储存库还包括在数据元素的集合对之间的关系的描述。第一集合具有与数据元素的第二集合的关系,关系的描述被存储在储存库中,并且所述关系使得软件实体通过指定第一集合的数据元素来请求检索第二集合的数据元素。所述储存库是数据库。
执行第一操作包括从记忆装置(memory storage)读取第一集合的数据元素的一个或多个属性,并发送属性到软件实体。在一些情况下,执行第一操作还包括计算数据元素集合的一个或多个属性,并发送属性到软件实体。集合的描述和集合的共同属性包括集合的名称和定义属性的数据结构的描述。
第一操作是查询,并且执行第一操作还包括在第一集合内搜索单个(individual)数据元素,并返回表示单个数据元素的关键字。在一些情况下,储存库包括查询的定义,包括查询的搜索参数结构和定义用于从数据集合中过滤一个或多个数据的关键字的输入名称。
实施例还可以包括使得软件实体请求表示在储存库中的服务,所述服务表示对来自多个集合的第二集合中的一个或多个数据元素的第一操作,并执行对第二集合中的一个或多个数据元素的第一操作。
在另一个方面,本发明的特征在于一种系统,其包括:第一计算机,配置来执行客户程序;第二计算机,配置来执行服务器程序;和网络,链接第一和第二计算机,以致服务器程序被配置来执行以下操作。在储存库中表示来自服务器的程序,所述服务包括使用一组对集合中的数据元素的操作来与一个或多个集合的数据元素交互,所述储存库包括集合的描述和每个集合的共同属性,所述储存库根据元模型来组织。使得客户程序请求表示在储存库中的服务,所述服务表示对来自多个集合的第一集合中的一个或多个数据元素的第一操作,并执行对第一集合中的一个或多个数据元素的第一操作。
实施例可以包括一个或多个以下特征。储存库还包括对来自多个集合的一个集合的数据元素的特殊动作的描述。在一些情况下,特殊动作的描述包括特殊动作的名称、特殊动作的输入数据的数据结构的名称、以及数据元素的集合的名称。该组操作对应服务供应商类别的方法。在一些情况下,该组操作包括选择、删除、按照关系选择、以及更新操作。
实施例可以包括一个或多个以下特征。储存库还包括在数据元素的集合对之间的关系的描述。第一集合具有与数据元素的第二集合的关系,该关系的描述被存储在储存库中,并且所述关系使得客户程序通过指定第一集合的数据元素来请求检索第二集合的数据元素。所述储存库是数据库。执行第一操作包括从记忆装置读取第一集合的数据元素的一个或多个属性,并发送属性到客户程序。在一些情况下,执行第一操作还包括计算数据元素集合的一个或多个属性,并发送属性到软件实体。
实施例可以包括一个或多个以下特征。集合的描述和集合的共同属性包括集合的名称和定义属性的数据结构的描述。第一操作是查询,并且执行第一操作还包括在第一集合内搜索单个数据元素,并返回表示单个数据元素的关键字。在一些情况下,储存库包括查询的定义,其包括查询的搜索参数结构和定义用于从数据集合中过滤一个或多个数据的关键字的输入名称。所述系统还包括使得客户程序请求表示在储存库中的服务,所述服务表示对来自多个集合的第二集合中的一个或多个数据元素的第一操作,并执行对第二集合中的一个或多个数据元素的第一操作。
这些以及其它实施例具有一个或多个以下优点。服务供应商和服务客户具有独立的软件生命周期。由基于服务的软件体系结构提供的服务可以被重新用于不同的情形。软件体系结构中的普通引擎可以为新的应用组合服务
本发明的一个或多个实施方式的细节将在下面附图和说明书中描述。通过说明书、附图和权利要求书,本发明的其它特征和优点将更加清楚。
附图说明
图1是商务软件应用的示例逻辑表示的框图。
图2是商务软件应用的网络配置的视图。
图3是图1的商务软件应用的框图。
图4是元模型储存库的结构的统一建模语言(Unified ModelingLanguage,UML)表示。
图5是商务处理的流程图。
图6是表示在商务软件应用的不同方面之间的关系的图。
具体实施方式
图1说明了商务软件体系结构2的概览的逻辑表示,其包括客户3、分离层(separation layer)5、储存库7和后端数据9和9′。客户3提供用户界面(UI),其使得用户能够与后端数据9和/或9′交互(interact)。后端数据9和9′可以与不同的后端应用相关联,和/或具有相互不同的安排和格式。分离层5将客户3提供的前端用户界面与后端数据9和9′分离开。这种分离使得客户3能够以一致和相似的方式与后端数据9和9′交互,而不管在后端数据9和9′之间的与格式或与应用相关联的不同。换句话说,分离层5给后端数据9和9′提供了一个规范的接口,所以客户3被配置与分离层5交互,并且只有在分离层5改变时才需要进行更新。对后端数据9和9′的改变并不会必然地导致对客户3的更新。而且,分离层5是可以伸缩的(scalable),并被配置成处理后端数据9和9′、任何其它异类的(disparate)后端数据、以及同样连接到分离层5的后端服务的改变和增长。
如在下面更具体描述的,分离层5基于一种元模型(meta model),其定义了后端数据(例如,9和9′)如何被表示在分离层5中。元数据被存储在储存库7中,其描述了后端数据9和9′如何适应于元模型表示。客户3利用由分离层5定义的普通命令集(generic command set)与后端数据9和9′交互。如下面更具体地描述的,分离层5使用储存库7中的元数据访问服务供应商,以便实现(effect)所请求的对后端数据9和9′的处理(manipulation),其中所述服务供应商执行来自客户3的普通命令。服务供应商是可配置的,以便对不同的后端数据9和9′可以使用不同的服务供应商。分离层5包括一个接口(例如,服务管理器),其隐藏了相应的后端数据9和9′的特性以及实施(即,服务供应商)的均匀度(granularity)和分布。
图2说明了商务软件体系结构2的示例实施。如图2所示,商务软件体系结构2包括第一计算机4和第二计算机6。计算机4和6的每一个都包括处理器、随机存取存储器(RAM)、程序存储器(例如,如闪速只读存储器(ROM)的可写ROM)、硬盘驱动器控制器、视频控制器、以及由处理器(CPU)总线耦合的输入/输出(I/O)控制器。例如,计算机4和6可以在ROM中被预编程,或者计算机4和6可以通过将程序从另一个来源(例如,从软盘、CD-ROM、或另一台计算机)载入到RAM中用于被处理器执行来进行编程(以及重新编程)。硬盘驱动控制器被耦合到硬盘,所述硬盘适于存储可执行的计算机程序,包括具体实现本发明的程序以及数据。I/O控制器被I/O总线耦合到I/O接口。I/O接口通过通信链路以模拟或数字形式接收和传输数据,例如,通过串行链路、局域网、无线链路、或并行链路。I/O总线还耦合了显示器和键盘。或者,分离的连接(分离的总线)可以被用于I/O接口、显示器和键盘。
网络20连接计算机4和6。网络20是任何形式或介质的数字数据通信,例如,通信网络。通信网络20的例子包括局域网(“LAN”)和广域网(“WAN”),例如,因特网。
计算机4执行前端应用程序12的指令。应用程序12表示商务软件体系结构2的前端构件。在计算机6上运行的服务管理器16是在前端应用程序12和一组后端服务供应商26之间的服务层。服务管理器16给前端应用程序12提供服务接口,以启动与在计算机6上运行的后端服务供应商26集的间接交互。这个服务接口允许对于前端应用程序12和后端服务供应商26集的软件开发的部分分离。
计算机6包括数据存储设备22,其存储后端数据库24,而后端数据库24包含能够被后端服务供应商26集使用的数据。计算机6还包括数据存储设备8,其包含信息储存库18,其定义和描述了由后端服务供应商26集提供的服务。储存库18中的元数据根据元模型来进行组织。
一般,元模型是作为用来描述特定领域(domain)的词汇(vocabulary)的“概念(concept)”的集合。典型的,元模型根据严格规则集(rule set)来建立,所述严格规则集在大多数情况下是从实体关系属性或面向对象的建模导出的。前端应用程序12可以经由服务管理器16访问(以及根据该严格规则集来解释)储存库18的内容。这些服务支持应用程序12的功能,并且除了修改所存储的数据以外还包括检索和读取数据。服务供应商26能够访问或修改在后端数据库24中存储的数据,以便向前端应用程序12提供服务。当接收到来自前端应用程序12的请求时,为了提供服务,后端服务供应商26集或者访问或修改在后端数据库24中存储的数据,或者计算新的数据。
储存库18定义用于请求由后端服务供应商26集提供的服务的句法,在语义上描述所述服务。前端应用程序12执行时,前端应用程序12可以使用来自储存库18的这种句法和语义说明(通过服务管理器16访问)来确定什么服务前端应用程序12能够使用以满足其需要。用于存储的或计算的后端数据的这种句法和语义说明可以被称为“元数据”。这种存储的或计算的后端数据概念上使用面向对象的术语按照商务对象(business object)来组织,其中每个商务对象是类别或数据实体类型的一个实例。在一个例子中,一个类别的商务对象参考(refer to)关系数据库表,其中表中的每行数据表示一个特定商务对象的数据。在这个例子中,表中的每个字段表示商务对象类别的一个属性。在另一个例子中,存在一种类别的商务对象,其部分地参考关系数据库表,这样表中的一些字段表示商务对象的属性,而其它字段在请求时计算。
在商务软件体系结构2中,提供给前端应用程序12的服务焦点在于(focus on)在于数据(即,以数据为中心(data-centric)),所以储存库18中的这些服务的描述也是以数据为中心的。因此,储存库18中的元数据围绕着对这些商务对象的类别的表现来构建。这种元数据包括方面(aspects)、或这些商务对象类别表现的描述、以及对这些方面的可能操作的描述,诸如选择、插入、更新、删除、按照关系选择、以及更新服务供应商26提供的字段。这些方面的每个描述包括数据属性,以及可以请求的、由服务供应商26集对这些方面的实例执行的动作(actions)。
数据的分类、数据类别之间的关系、访问数据的预建查询(pre-builtqueries)、以及其它由后端服务供应商26集提供的数据的描述都由储存库18来表现。这种由后端服务供应商26集提供的数据(例如,存储在后端数据库24中)的表现或元数据描述了后端数据库24中的不同的抽象类型或类别的数据,以及这些同步数据类别如何相互关联。对象是这些不同抽象类型的实例。元数据是关于数据而不是数据内容的信息。元数据还定义了可以对数据库24中的数据执行的一组预建查询。
储存库18中的语义说明能够使前端应用程序12确定从服务管理器16请求哪些服务。这些服务通常采用请求数据的形式来显示。前端应用程序12读取储存库18中的元数据,并且能够灵活地请求以元数据所指定的不同方式组织的数据。例如,具有两个不同储存库18的两个服务管理器16处理确定公司A和B的书价的服务。对于A和B,书价用具有不同数据字段的不同方面来表现。前端应用程序12读取A的储存库18,以获得关于对来自A的服务供应商26的特定书籍的数据描述(包括价格)。前端应用程序12读取B的储存器18,以获得关于对来自B的服务供应商26的特定书籍的数据描述(包括价格)。前端应用程序12能够请求和显示来自A的服务供应商26的信息,并且该信息是与来自B的服务供应商26的信息不同的方式组织的,以展示书价信息给用户。
对于请求储存库18中的语义说明所描述的服务,服务管理器16给后端商务对象的服务提供了规范接口。这种规范接口包括一组对商务对象的标准操作。这样的对商务对象的标准操作包括选择、插入、更新、删除、按照关系选择、以及更新字段。这些标准操作是为了容易理解和使用。这些标准操作的使用通过储存库18的元模型的严格规则集来理解。而且,储存库18还包括对操作使用的副作用的有记录的建模(documented modeling)。存储商务对象的操作模型的副作用受到执行所述方法的影响。例如,“删除”通常对与被删除对象有关的其它存储的商务对象有副作用。其它标准操作执行更多特殊任务,并支持在前端应用程序12和服务管理器16之间的交易功能(例如,锁定操作)。
服务管理器16提供的规范接口还包括为特定类别的商务对象定义的特殊动作,以及针对商务对象类别群集定义的查询。所述群集被作为元数据中的服务模块(以下将更具体地描述)建模。这些动作和查询也被定义在储存库18的元数据中。
在执行期间,前端应用程序12发出服务请求给服务管理器16,服务管理器16检查所述请求与储存库18中元数据的一致性,然后服务管理器16根据储存库数据库18中的元数据将所述请求传给后端服务供应商26。由于后端服务供应商26和数据库24符合储存库18中的元数据的定义和描述,后端服务供应商26集以及数据库24中的数据的实施方式独立于应用12。数据库24可以是关系数据库。然而,数据库24可以被修改以使用除关系数据库以外的不同形式的数据组织(data organization),并且如果后端服务供应商26和数据库24仍然符合储存库18中的元数据,则前端应用程序12就不需要被修改。一个这样的不同模式的数据库24的数据结构可以是面向对象的数据库。
前端应用程序12提供显示在监视器10上的用户界面。前端应用程序12提供应用代码以显示和集合从后端服务供应商26集接收的数据。前端应用程序12经由服务管理器16产生请求给后端服务供应商26集,用于除了更多的特殊操作以外的标准操作,诸如选择、插入、更新、删除、和执行,。前端应用程序12是以交互为中心的,焦点在于集合后端服务供应商26的数据以及将交互(interactive)步骤组合为屏幕和联合企业的屏幕元素(syndicated screenelements)的流程。
前端应用程序12包含面向用户界面(UI)的应用的屏幕流程(screen-flow)逻辑,并且前端应用程序12将UI绑定到储存库18的元数据。前端应用程序12可以通过储存库18中的元数据的服务描述被后端服务供应商26间接绑定到特定后端服务集。前端应用程序12还可以由各种普通的以交互为中心的前端层(front-end layers)来形成,这些前端层只通过配置被服务管理器16绑定到到高度标准化的服务层,所述服务管理器16担当到后端服务供应商26的中介。
在一些实施方式中,服务管理器代理14为前端应用程序12给出了对由服务管理器16提供的服务接口的缓冲的访问。服务管理器代理14是计算机4上的服务器,其作为在前端应用程序12和服务管理器16之间的中介,以便商务软件体系结构2能够保证安全性、管理控制、和高速缓存服务。服务管理器16提供队列功能,这被前端应用程序12用来将若干服务请求或命令(导致服务方法)捆扎(bundle)为单一的服务方法队列,以便节省往返周期(round trip)。服务管理器代理14允许前端应用程序12和服务管理器16分开在不同的计算机4和6上。而且,服务管理器代理14的使用可以允许服务管理器16和后端服务供应商26集分布在多台计算机上。
在一个例子中,服务管理器代理14利用SOAP(简单对象访问协议,Simple ObjectAccess Protocol)通过网络20与服务管理器16进行通信。SOAP是一种用于使运行在一种类型的操作系统(诸如可从华盛顿州雷蒙德的微软公司得到的WindowsXP操作系统)中的程序与相同或其它类型的操作系统(诸如Linux)中的程序进行通信的方式,其利用了万维网的超文本传输协议(HTTP)和可扩展标记语言(XML)作为信息交换的机制。由于安装了网络协议,并且它们可以被所有主要操作系统平台使用,HTTP和XML就为针对网络中运行在不同操作系统上的程序如何进行相互通信的问题提供了一个解决方案。SOAP准确地规定了如何编码HTTP消息头和XML文件,以便在一台计算机中的程序能够调用(call)和传送信息给另一台计算机中的程序。SOAP还规定了被调用的程序如何返回一个响应。
如图3所示,服务管理器16为前端应用程序12提供了一个接口(由储存库18中的元数据定义),其隐藏了来自后端服务供应商26集的相应后端服务供应商和数据库24中的数据的特性。前端应用程序12利用这个接口从后端数据库24检索数据以显示在图形用户界面(GUI)28中用于与用户交互。
服务管理器16通过接收和执行来自前端应用程序12的对后端服务供应商26的请求来为前端应用程序12提供所述接口。在每次服务管理器16接收到请求之后,服务管理器16将该请求委派给服务供应商30、32、34、40、42、44和46。服务供应商30是软件类别储存库服务供应商的一个实例。服务供应商32、34、40、42、44和46表示软件类别的实例,诸如查询服务供应商类别(32)、方面(aspect)服务供应商类别(34)、交易服务供应商类别(40)、锁定服务供应商类别(42)、动作服务供应商类别(44)、和查询关系服务供应商类别(46)。服务供应商32、34、40、42、44和46的软件类别可被实施成由ABAP类别库维护的ABAP全局类别(global class),所述类别库使用可从德国Walldorf的SAP公司得到的ABAP开发环境。它们也可以由在任何其它平台上的任何其它编程语言来实现,例如,Linux平台的Java或Windows平台的C#。
储存库服务供应商30处理请求以取得(get)或修改来自储存库18的元数据。查询服务供应商32处理来自前端应用程序12的、对于后端数据库24中的数据的查询。方面服务供应商34处理访问和修改数据、根据关系导航、以及调用动作。方面服务供应商34具有对应可以从服务管理者16请求的方面的标准操作的标准方法集。这些标准操作包括选择、插入、更新、删除、按照关系选择、以及更新字段。交易服务供应商40允许商务逻辑(businesslogic)作用在前端应用程序12和服务供应商26之间的交易的不同状态。锁定服务供应商42使能后端数据库24中的数据类型的并行访问的分离。动作服务供应商44使能对方面的动作的执行。查询关系服务供应商46是关系的目标方面的接口。在一些例子中,服务管理器16可以具有用于表现服务的储存库18中的不同元素的多个不同的服务供应商实例32、34、40、42、44和46。当接收到对于由储存库18中的元素所表示的服务的请求时,服务管理器16可以在储存库18中元素的元数据中查找服务供应商的名称(例如,32、34、40、42、44和46)。例如,描述储存库18中的方面的元数据定义了哪个方面服务供应商34被指派来处理用于所述方面的服务。服务管理器16使用元数据中的这个信息将请求从前端应用程序12指向适当的方面服务供应商34。类似地,描述储存库18中的查询的元数据定义了哪个查询服务供应商32被指派来处理用于所述查询的服务。
服务管理器16提供的接口向前端应用程序12提供请求或命令。如前所述,标准命令的选择、插入、更新、删除、按照关系选择、以及更新字段是对于储存库18中方面的标准操作。这些标准操作由方面服务供应商34提供,并对应一些前端应用程序12可用的请求或命令。“选择”命令提供了一种能力,以便如果知道了由方面服务供应商34提供的数据类型(例如,存储在数据库24中)的实例的标识符(或关键字),前端应用程序12可以选择并读取这些实例的属性。“插入”命令允许前端应用程序12添加方面服务供应商34提供的数据类型(例如,存储器数据库24中)的新的实例。“按照关系选择”命令提供了一种能力,以便如果知道数据类型,前端应用程序12可以如储存库18中所定义的、找出与这个数据类型有关的其它数据类型。“更新”命令提供了一种能力,以便修改由方面服务供应商34提供的数据类型(例如,存储在后端数据库24中)的实例。“删除”命令提供了一种功能,以便删除由方面服务供应商34提供的一种或多种数据类型(例如,存储在后端数据库24中)的一个或多个选择的实例。
“执行”动作命令提供了一种功能,以便对由方面服务供应商34提供的一种或多种数据类型(例如,存储在数据库24中)的一个或多个实例执行语义定义的动作。或者所述方面服务供应商34,或者所述动作服务供应商44执行所述执行动作命令。“查询(query)”命令提供一种能力,以便搜索和找到感兴趣的特定数据。查询命令是一种方法,具有固定的搜索参数集以及具有定义的结构的结果集合。查询是针对特定服务模块、或储存库18的元数据中的方面群集来定义的。查询服务供应商32执行查询命令。
储存库18中的元数据被分类为数据类型或类别。表现储存库18中的数据类型分类的元模型类别的名称具有后缀“描述符”,以表达它们属于所述元模型,以及将它们与服务管理器16使用的运行时间类别相区分。储存库18的元数据类别的描述符以及它们的类别关系在图4中使用统一建模语言(UML)类图50来说明。
比较元数据与由关系数据库术语所描述的数据,储存库18中的方面可以表现完全或部分地存储在后端数据库24中的类别或实体类型,并且方面描述符56除了关于实体类型的其它信息以外还包括实体类型的属性。储存库18中的元数据还可以包括关系描述符84,其将可以在数据库24中实施的方面之间的关系定义为利用关系数据库中的外键码的关系。元数据还可以包括服务模块描述符54,其表示方面集合的服务模块和具有预先确定的查询用于访问数据库24中的数据。
储存库18中定义的服务模块是用于特定应用领域或产业的商务软件体系结构的应用集的构建块(例如前端应用程序12)。服务模块对实施和商务逻辑进行封装并用一种统一的规范方法来提供对数据和功能性的访问。用于储存库18中的服务模块的例子是“商务伙伴”、“雇员”、“销售订单”或“商务活动”。服务模块描述54描述存储库18中的元数据的数据模型中的服务模块以及如何通过来自应用程序12的查询来访问服务模块。
在储存库18中,每个定义的查询都是一个入口点,以经由服务管理器16搜索由服务供应商26提供的数据类型实例(由方面来表示)。“关键字(key)”是服务供应商26提供的数据类型的实例的标识符。“动作(action)”是关于方面的一个或多个实例的特殊方法。“结构(structure)”是表现方面的数据的属性的集合。“关系”是源和目标方面的对象之间的关系。服务模块组与服务模块相关联,并且是方面、关系、和查询的集合。方面组与方面相关联,并且是关系、方面动作、和字段描述符86的集合。储存库18中的元数据还包括对每个包括在可用后端(例如,后端数据库24)中的方面、查询、关键字、动作、结构、关系、服务模块组、以及方面组的文字描述。所以,储存库18中的元数据的组织可以用那些数据类型(例如,方面、查询、关键字、动作、结构、关系、服务模块组、以及方面组)来描述。
方面、查询、关键字、以及动作的属性的数据模型是基于结构描述符74的。在一个例子中,每个方面具有一个结构描述符74,其定义了方面的数据属性。结构描述符74参考储存库18中的数据字典。数据字典是为了程序员以及其他需要参考数据字典的人的利益,对于数据模型中数据对象或项目的描述的收集。结构描述符74可以用XML模式,或者储存库18中的一个或多个数据库表来定义。
在一个例子中,定义在储存库18中的结构描述符74包括数据库表中的扁平(flat)结构。扁平结构为一序列属性名称和简单数值类型的字段描述符86对,所述简单数值类型诸如实型、整型、字符串、以及布尔(Boolean)。例如,定义二维点的结构描述符74可以为列表{X,real,Y,real},其中X和Y是具有实数值的属性名称。
在储存库18的另一个例子中,结构描述符74可以包括其它结构描述符74的嵌套和收集。当使用定义较小方面的子结构(sub-structure)的关键字不再有意义时,其它结构描述符74或子结构的嵌套使得产生较大的方面是有用的。
对于前端应用程序12通过服务管理器16访问来自服务供应商26的数据(例如,存储在后端数据库24中的数据),商务对象类别的实例被由服务模块中唯一的关键字来识别,例如订单的数量或产品的ID。为了为服务模块中的不同方面区分不同的关键字类型,关键字描述符64定义了不同类型的关键字。关键字描述符64与可以包括多于一个数据属性的结构描述符74相关联。在一个例子中,每个关键字具有一个字符串属性。服务模块可以与不同方面的不同关键字描述符64相关联,例如,一个订单关键字可以具有另一个关键字描述符64作为订单项目关键字。
服务模块描述符54包括对方面描述符56的收集。方面描述符56指的是一个结构描述符74和一个关键字描述符64。结构描述符74包括相应关键字描述符64的所有关键字属性。关键字描述符64是特殊的方面描述符56。关键字的关键字描述符64属性参考自身为自引用。在简单销售订单服务模块中的方面描述符56的例子可以包括:订单、订单细节、发货地址、收费地址、以及诸如OrderId和订单项目关键字的关键字方面的描述符的订单项目。服务模块描述符54规定支持的方面描述符56的收集。多个服务模块描述符54可以与相同的方面描述符56相关联。
方面描述符56相互相关,其由关系描述符84来规定。关系描述符84有一个源方面描述符56和一个目标方面描述符56。从这个意义上来讲,关系描述符84被定向。关系描述符84还具有可选基数(cardinality)(例如,1...n)和范畴(category)。例如,支持的范畴为父辈-子辈或子辈-父辈。
关系描述符84定义在源方面A和目标方面B之间的关系,其意味着能够从方面A的实例遍历到方面B的实例。例如,给出方面A和B被在后端数据库24中实施为关系数据库表,其意味着从对应方面A的表中的一个或多个字段指向对应方面B的表中的主关键字(primary key)。关系描述符84定义了来自源方面A和目标方面B的父辈-子辈关系,这意味着方面B依赖于方面A的存在。例如,给出方面A和B被在后端数据库24中实施为关系数据库表,这意味着对应方面B的表中的主关键字是从对应方面A的表中导出的。关系描述符84被提出来描述从相同服务模块中的一个方面到另一个的内部导航,例如,在销售订单服务模块中从订单到发货地址(基数1...1)或到订单项目(基数1...n)。关系描述符84独立于服务模块,并且能够被不同服务模块重新使用。对于内部导航或在后端数据库24中从一个数据类型到另一个的遍历(traversal),源方面描述符56的可见的(可用的)关系描述符由服务模块描述符54来定义,其具有一个支持的关系描述符84的列表。对于那些具有目标方面描述符56的关系描述符84可以允许导航,并且所述目标方面描述符56也由服务模块描述符54支持。
用于访问以及用于作用于后端数据库24中的数据类型的操作在操作描述符70中描述。结构描述符74定义了操作描述符70的输入参数。这个结构描述符70还包括使能海量操作和过滤操作的输入关键字描述符64。海量操作(mass operation)是由前端应用程序12指定的、对后端数据库24中的数据类型的多个实例的操作。过滤操作利用由输入关键字描述符定义的关键字对例如查询的操作的结果进行过滤。用于操作描述符70的输入参数是可选的。
这里有三种类型的操作描述符70,即查询描述符104、方面动作描述符92、和动作描述符96。前述命令查询和执行动作由操作描述符70定义。
查询描述符104描述了允许对服务模块中的方面的实例进行搜索的查询方法。查询描述符104包括输入参数、输入关键字描述符64、和结果方面描述符56。输入参数是定义了查询的搜索参数结构的结构描述符74。输入关键字描述符64定义了哪些关键字可以被用于过滤。例如,执行由具有过滤关键字的查询描述符104定义的查询,得到满足第一输入的标准的关键字列表。这个关键字的列表被输入关键字描述符64的过滤关键字集过滤,以便返回一个关键字列表的一个子集。查询描述符104的结果方面描述符56规定了查询结果的类型,其可以是与服务模块相关联的任何方面描述符56。
每个服务模块描述符54具有一组支持的查询描述符104。服务模块描述符54不能使用定义在其它服务模块描述符54中的查询描述符104,因为查询描述符104属于一个服务模块描述符。
方面以动作的形式提供附加的操作(在选择、插入、更新、删除、按照关系选择、以及更新字段的标准操作以外),其用方面动作描述符92来描述。方面动作描述符92是关于方面的特殊操作描述符70。方面描述符56可以具有一组支持的方面动作描述符92。方面描述符96的输入参数定义了动作的参数结构。输入关键字描述符64规定了哪个关键字用于海量操作,例如,电子邮件动作可以具有作为输入的表示多个电子邮件的关键字的列表。
动作描述符96能够定义多个动作的动作,如打印、电子邮件、传真、批准、清除、剪切、复制、粘贴和取消。但是更多的只能够用于一个或少数方面的方面特定的动作。动作描述符96被引入以强制执行(enforce)重新使用。每个方面动作描述符92都与动作描述符96相关联,其中定义了名称和意义(meaning)(原文描述,textual description)。
动作描述符96规定了动作的名称和意义(原文描述)。它们不规定参数,并且不用于描述操作的多形态行为(polymorphic behavior)。它们可以被用于分类(taxonomies)。
服务模块组描述符58可以与方面描述符56、关系描述符84、和查询描述符104相关联。方面组描述符78可以与关系描述符84、方面动作描述符92、和字段描述符86相关联。
图50包括在服务模块描述符54和方面描述符56之间的零或多对零或多的关系52,因为多个方面的实例可以与多个服务模块的实例相关联。服务模块组描述符58具有对方面描述符56的零或多对零或多的指向关系60,因为方面可以集合(grouped together in)在服务模块组中。服务模块组描述符58还具有与服务模块描述符54的零或多对一的复合集合关系62,因为服务模块组可以被集合在服务模块中。作为方面描述符56的特殊化的关键字描述符64具有与方面描述符56的继承关系66。关键字描述符64也具有与方面描述符56的一对零或多的关系68,因为每个方面都具有与该方面相关联的关键字,以唯一地识别所述方面的实例。操作描述符70具有与关键字描述符64指向的零或多对零或多的关系72,因为操作可以包括输入关键字。方面描述符56具有与结构描述符74的零或多对一的关系76,因为每个方面描述符56都具有定义其属性的结构描述符74。方面组描述符78具有与方面描述符56的零或多对一的复合集合(composite aggregation)关系80,因为方面可以是方面组的集合。方面组描述符78还具有与关系描述符84指向的零或多对零或多关系82,因为方面组还具有关系。结构描述符74具有与字段描述符86的一对零或一对多的所有权关系90,因为结构可以使用许多数据字段来定义其自身。方面组描述符78还具有与字段描述符86的零或多对零或多关系88。
方面动作描述符92具有与方面描述符56的零或多对一的集合关系100,因为方面可以提供能够对方面执行的动作。方面动作描述符92具有与其上级类别操作描述符70的继承关系102。查询描述符104也具有与其上级类别操作描述符70的继承关系106。服务模块描述符54具有与查询描述符104的一对零或一对多关系108。因为服务模块可以包括零或多个查询。服务模块组描述符58具有与查询描述符104的零或多对零或多的指向关系110,因为查询还可以集合在服务模块组中。
操作描述符70具有与结构描述符74的零或多对零或一关系112,因为每个操作包括结构形式的输入参数。查询描述符104具有与方面描述符56的零或多对零或一关系114,因为查询包括结果(resulting)方面。关系描述符84具有与方面描述符56的零或多对一的关系116和118,因为关系具有源和目标方面。
为了说明定义储存库18中的元数据的组织的这些描述符,下面例子使用了一组固定的关系数据库表。其它持续机制(例如,XML)也可以被使用。关系数据库表被定义在表1-6中,其中表1-6中的每一行定义了关系数据库表的一个字段或列。储存库18的主数据类型是方面。描述方面的数据库表是表1,SCOL_ASPECT和表2,SCOL_ASP_ACTION。表1包括方面的性质描述。表1,SCOL_ASPECT的关键字字段是ASPECT_NAME字段,因为方面的名称对于方面是唯一的。ASPECT_CATEGORY字段指示方面是非关键字(non-key)方面还是关键字方面。STRUCTURE字段指示方面的数据属性的数据结构名称。通过将关键字的名称放在KEY_ASPECT字段将关键字与方面相关联。SERVICE_PROVIDER字段定义了方面的方面服务供应商34。TRANSAC_PROVIDER字段定义了方面的交易服务供应商40。LOCKING_PROVIDER字段定义了方面的锁定服务供应商42。储存器18还可以具有相应的用于方面描述的表。
表1,SCOL_ASPECT定义
字段名称 | 关键字 | 描述 |
ASPECT_NAME | X | 方面的名称 |
ASPECT_CATEGORY | 方面类型:方面或关键字方面 | |
STRUCTURE | 相应方面数据结构 | |
KEY_ASPECT | 相应关键字方面 | |
SERVICE_PROVIDER | 相应方面服务供应商类别的名称 | |
TRANSAC_PROVIDER | 相应交易供应商类别的名称 | |
LOCKING_PROVIDER | 相应锁定供应商类别的名称 |
方面可以提供能够对方面执行的动作。动作的描述存储在表2,SCOL_ASP_ACTION中。动作被用方面名称和动作名称来唯一地表示,因此ASPECT_NAME和ACTION_NAME字段是SCOL_ASP_ACTION表的关键字字段。字段PARAM_STRUCTURE指的是保存动作的输入数据参数的数据结构。字段INPUT_KEY_ASPECT指的是定义了关键字类型的关键字方面的名称,所述关键字类型用于指派在动作时储存库18中的哪些数据类型实例被作用。字段PROVIDER_CLASS指的是动作服务供应商的名称,其从实施在ASPECT_NAME字段命名的方面的服务供应商提供动作。
表2,SCOL_ASP_ACTION定义
字段名称 | 关键字 | 描述 |
ASPECT_NAME | X | 方面的名称 |
ACTION_NAME | X | 动作的名称 |
PARAM_STRUCTURE | 输入参数的相应数据结构 | |
INPUT_KEY_ASPECT | 输入方面的关键字方面的名称 | |
PROVIDER_CLASS | 动作服务供应商类别的名称 |
方面可以互相相关。方面之间的关系的描述被存储在表3,SCOL_RELATION中。关系用其名称来唯一地定义,所以关系表的关键字是规定在字段RELATION_NAME中的关系名称。对于每个关系,字段SOURCE_ASPECT定义了指向关系的源的方面,字段TARGET_ASPECT定义了指向关系的目标的方面,字段TARGET_PROVIDER定义了目标方面的查询关系服务供应商,字段REL_PARAM_TYPE定义了关系的类型(父辈-子辈或者子辈-父辈),而字段REL_PARAMETER定义了关系的基数。储存库18还具有用于关系的描述的相应的表。
表3,SCOL_RELATION定义
字段名称 | 关键字 | 描述 |
RELATION_NAME | X | 关系的名称 |
SOURCE_ASPECT | 关系的源方面的名称 | |
TARGET_ASPECT | 关系的目标方面的名称 | |
TARGET_PROVIDER | 查询关系服务供应商类别的名称 | |
REL_PARAM_TYPE | 关系的类型 | |
REL_PARAMETER | 关系的参数 |
服务模块的属性(properties)被存储在表4,SCOL_SVC_MODULE中。每个服务模块用其名称来唯一地定义,所以SVC_MODULE_NAME字段是SCOL_SVC_MODULE表的关键字字段。对于每个服务模块,字段TRANSAC_PROVIDER规定了服务模块的交易供应商40的名称。储存库18还具有用于服务模块的描述的相应的表。
表4,SCOL_SVC_MODULE定义
字段名称 | 关键字 | 描述 |
SVC_MODULE_NAME | X | 服务模块的名称 |
TRANSAC_PROVIDER | 相应的交易服务供应商类别的名称 |
每个服务模块都与可以在服务模块中使用的方面相关联。可以在每个服务模块中使用的方面的名称被存储在表5,SCOL_ASPECT_USE中。由于每个方面服务模块的使用(usage)是唯一地由服务模块的名称和方面的名称来描述的,因此字段SVC_MODULE_NAME和ASPECT_NAME是SCOL_ASPECT_USE表的关键字。
表5,SCOL_ASPECT_USE定义
字段名称 | 关键字 | 描述 |
SVC_MODULE_NAME | X | 服务模块的名称 |
ASPECT_NAME | X | 方面的名称 |
服务模块可以提供查询来检索数据。服务模块查询的描述被存储在下面表6的SCOL_QUERY表中。数据库表的结构被定义在表6中。由于每个查询都由服务模块和查询名称来唯一地定义,所以字段SVC_MODUE_NAME和QUERY_NAME是SCOL_QUERY表的关键字段。其它字段包括规定了定义由查询返回的数据类型的方面名称的RESULT_ASPECT,和规定了包含查询的输入参数的数据结构的PARAM_STRUCTURE。例如,对与服务模块相关联的特定方面(例如,规定在RESUT_ASPECT中)进行的查询包括与特定方面的实例属性相匹配的输入参数,并且所述匹配的实例被作为参考那些实例的关键字的数据集而返回。字段INPUT_KEY_ASPECT被用于定义描述可以被用作查询的过滤(filter)关键字的关键字方面。PROVIDER_CLASS规定了与每个查询相关联的查询服务供应商32的名称。储存库18还具有用于查询的描述的相应的表。
表6,SCOL_QUERY定义
字段名称 | 关键字 | 描述 |
SVC_MODULE_NAME | X | 服务模块的名称 |
SOURCE_ASPECT | X | 查询的名称 |
RESULT_ASPECT | 查询的结果方面的名称 | |
PARAM_STRUCTURE | 输入参数的相应数据结构 | |
INPUT_KEY_ASPECT | 输入方面的关键字方面的名称 | |
PROVIDER_CLASS | 相应查询供应商类别的名称 |
如前所述,体系结构38包括六个服务供应商类别(即,交易40、查询32、方面34、动作44、查询关系46、和锁定42),用于处理来自前端应用程序12的请求,而不是从储存库18请求元数据,而这是由储存库服务供应商类别30处理的。为了在前端应用程序12请求时提供服务,服务管理器16直接调用服务供应商类别的实例。这些服务供应商的实例可以位于如服务管理器16的同一计算机(例如,6),或位于不同的计算机。
锁定服务供应商42可以被用于实施普通锁定管理器,其用于单个方面或一组方面。每个锁定服务供应商42需要被登记一个方面。锁定服务供应商42的名称被设置在SCOL_ASPECT表中每个方面的LOCKING_PROVIDER字段。锁定服务供应商类别具有可以被服务管理器16调用的两种方法。这些方法是LOCK和UNLOCK。LOCK将表示要被锁定的商务对象的关键字的集合、表示商务对象的类别的方面的名称、以及锁定模式作为输入。取决于目标系统的锁定能力可以有各种锁定模式。锁定模式可以有“E”、“S”或“SP”。“E”是指排他的锁定,或者只有一个客户能够获得该锁定。“S”是指共享锁定,任何客户都能够锁定,并且不能由针对一个客户的排他性锁定。“SP”是指与“S”相同,但是能够随后升级到排他锁定。
LOCK方法输出指示请求是否被拒绝的布尔值,并输出一个返回代码。UNLOCK将表示要被解锁的商务对象的关键字的集合,以及表示要被解锁的商务对象的类别的方面的名称作为输入。UNLOCK方法也输出指示请求是否被拒绝的布尔值,并输出一个返回代码。如果交易缓冲器已经处在“肮脏(dirty)”状态则拒绝对UNLOCK的调用,即自从上一个CLEANUP调用之后已经发出了任何更新、插入、删除操作或者没有被标记为COL_AFFECTS_NOTHING的动作。如果交易服务供应商类别的CLEANUP方法(下面描述)被以原因“END”调用,则去除所有的锁定。
交易是一序列信息交换和相关工作(诸如数据库更新),其被作为为了满足从前端应用程序12到服务管理器16的请求的目的、以及保证后端数据库24的完整性的单元来对待。对于要完成的交易以及将要对数据库24进行的永久改变,交易必须被完整地完成。在交易成功之前,完成交易的所有的步骤,而数据库实际上被改变来反映所有被请求的变化。如果在交易成功完成之前发生了什么事情,对后端数据库24的任何改变都必须被记录(keep trackof)以便可以撤销所述改变。
为了处理交易,交易服务供应商40接收对服务管理器16、另一个非交易服务供应商(例如,32、34、44、46)以及前端应用程序12(或者在某些情况下服务管理器代理14)之间的交易的各种状态的通知。这些通知是交易服务供应商40的方法BEFORE_SAVE、CLEANUP和SAVE,它们在交易期间被服务管理器16调用。
服务管理器16调用交易服务供应商40的方法BEFORE_SAVE来检查交易缓冲器是否能被保存。这允许检查非交易服务供应商的内部状态是否准备好被保存。如果不能保存交易缓冲器,则方法BEFORE_SAVE返回假(false),然后交易结束被中断。因此,BEFORE_SAVE方法具有BOOLEAN返回参数。BEFORE_SAVE将布尔作为输入参数REJECTED。交易服务供应商16通过将REJECTED参数设置为非初始值(non-initial value),即设置为“真”,来防止随后的保存和提交操作。方法BEFORE_SAVE在由前端应用程序12的SAVE方法触发的服务管理器16的序列操作中被调用。
SAVE方法最后触发应用来将交易缓冲器保存到数据库24。通过调用SAVE,非交易服务供应商的所有内部状态都被永久保留,或者通过直接更新,或者通过创建对更新任务的适当调用。如果体系结构38中的所有服务供应商都接收到SAVE请求,则服务管理器16提交所述交易。
CLEANUP方法告知所有非交易服务供应商释放它们所有的交易缓冲器和基于队列的(enqueue-based)锁定。调用CLEANUP方法通知体系结构38中的所有服务供应商都需要清除它们的内部状态。CLEANUP将REASON字符串作为输入参数。REASON字段指示清除操作的原因。这或者可以是由于SAVE操作的“COMMIT”,或者可以是由于系统自动关闭交易的交易“END”。这并不保证在故障情况下清除被调用。
动作服务供应商44被服务管理器16调用以执行用于方面的动作。动作服务供应商44的名称被设置在SCOL_ASP_ACTION表的PROVIDER_CLASS字段对应动作的一行。动作服务供应商44具有一个方法EXECUTE。EXECUTE方法将方面名称(ASPECT)、指定动作作用于哪个方面的实例的一组关键字(INKEYS)、普通输入参数(INPARAM)、要被执行的动作的名称(ACTION)、作用于关系的动作的一组关键字(RELATION_INKEY)、以及关系的名称(RELATION)作为输入参数。EXECUTE方法作为输出参数返回改变的或新创建的对象(OUTRECORDS),其已经被动作改变。OUTRECORDS参数返回的对象被传输到应用程序12。
方面服务供应商34被服务管理器16调用以提供读取和修改一个或多个方面的内容的功能。如前所述,方面用其名称(该名称在储存库中为全局唯一)、相关联的数据结构、相关联的关键字(即标识符)结构、一组实施的动作、一组输出(outgoing)的关系、以及一组输入(incoming)的关系来描述。方面服务供应商34具有方法EXECUTE、SELECT、INSERT、UPDATE、DELETE、SELECT_BY_RELATION、以及UPDATE_FIELDS。
方法EXECUTE被从动作服务供应商44导出,并且允许执行动作。EXECUTE将要对其执行动作的方面的名称(ASPECT)、要对其执行动作的对象的关键字(INKEYS)、动作的参数(INPARAM)、动作的名称(ACTION)作为输入参数。返回的参数包括修改或者创建的方面行(aspect rows)(OUTRECORDS)、指示对方法的请求是否被拒绝的布尔标志(REJECTED)、以及返回代码(RETURN_CODES)。
方法SELECT读取与给定方面的输入关键字相关联的方面数据。SELECT将编码在相关联的关键字结构中以描述要读取的方面行的关键字列表(INKEYS)和方面的名称(ASPECT)作为输入参数。SELECT将编码在方面数据结构中的结果(OUTRECORDS)、表示对方法的请求是否被拒绝的布尔标志(REJECTED)、以及返回代码(RETURN_CODES)作为输出参数。
方法INSERT将新的数据插入到方面。INSERT包括含有要插入的记录的表作为输入参数,如果方面被设计为用于按行(row wise)写入操作(INRECORDS)。该方法可以允许插入的记录根据方面描述(例如,参数ExternalKeys=真或假(true or false))也定义关键字字段。输入参数还包括方面的名称(ASPECT)、用于作用于关系的动作的一组关键字(RELATION_INKEY)、以及关系的名称(RELATION)。方法INSERT返回表示插入的记录的一组记录(OUTRECORDS),以及它们的关键字和其它可能的方面服务供应商34希望对所插入的记录进行的修改。例如,一个修改可以填入用于所述记录集计算的字段。OUTRECORDS行的次序必须对应于INRECORDS行的次序,其它输出参数包括指示对SELECT方法的请求是否被拒绝的布尔标志(REJECTED)以及返回代码(RETURN_CODES)。
UPDATE方法或者按记录(record wise)或者按字段(field wise)更新现有方面的实例。UPDATE方法的输入参数包括含有要更新的实例关键字的表(INRECORDS),如果方面被设计为按行进行写入操作。输入参数还包括方面的名称(ASPECT)。UPDATE方法返回的参数包括更新的纪录(OUTRECORDS)以及它们的关键字和其它可能的服务供应商想要进行的修改。OUTRECORDS行的次序可以对应于INRECORDS行的次序。其它输出参数包括指示对SELECT方法的请求是否被拒绝的布尔标志(REJECTED)以及返回代码(RETURN_CODES)。
DELETE方法删除后端(例如,后端数据库24)中的方面的行或实例。DELETE方法的输入参数被编码在相关联的关键字结构中用于描述要被删除的方面行的关键字列表(INKEYS),和方面的名称(ASPECT)。DELETE方法返回的参数包括指示对DELETE方法的请求是否被拒绝的布尔标志(REJECTED)以及返回代码(RETURN_CODES)。
SELECT_BY_RELATION方法取决于关系参数描述返回或者依照关系的属性或另一个方面,其中源方面具有指向那个其它方面的关系。SELECT_BY_RELATION的输入参数是所按照(follow)的关系的名称(ASPECT)、源方面的记录(INRECORDS)、源方面的名称(ASPECT)和描述用于分页(paging)的查询的各种选项的结构(OPTIONS)等。SELECT_BY_RELATION返回的输出参数包括编码在目标方面数据结构中的结果(OUTRECORDS)、表示OUTRECORDS参数的哪行属于哪个INRECORDS行的索引表(INDEX)、结果描述(DESCRIPTION)、指示对SELECT_BY_RELATION方法的请求是否被拒绝的布尔标志(REJECTED)、以及返回代码(RETURN_CODES)。
UPDATE_FIELDS方法更新方面的实例的字段。输入参数包括编码在相关联的关键字结构中以描述要更新的方面的实例的关键字列表(INRECORDS)。输入参数还包括含有一对字段名称和要在一组记录中更新的相应值的表(INFIELDS),如果方面被设计为按字段进行写入操作。如果多于一个方面的实例要被更新,附加的字段索引INKEY指向相关联的关键字记录。输入参数还包括方面的名称(ASPECT)。UPDATE_FIELDS返回的参数包括创建或改变的方法的实例(OUTRECORDS)以及它们的关键字和其它可能的由方面服务供应商34执行的修改。各个OUTRECORDS行的索引必须要与INFIELDS表中的行索引相关联。其它返回的参数包括指示对UPDATE_FIELD方法的请求是否被拒绝的布尔标志(REJECTED)以及返回代码(RETURN_CODES)。
查询服务供应商32执行查询。储存库18中的查询通过字段QUERY_NAME中的查询名称、字段PARAM_STRUCTURE中的相关联的参数结构、字段RESULT_ASPECT中的相关联的结果方面、以及可选的字段INPUT_KEY_ASPECT中具有唯一的数据结构的相关联的方面关键字而描述在表SCOL_QUERY中。查询服务供应商32具有一个EXECUTE方法,执行对一个或多个方面的查询。输入参数包括查询名称(QUERY)、含有查询参数的数据结构(INPARAM)、以及可选的含有应当用来限制查询的方面行的关键字的表类型参数(INKEYS)。INKEYS可以但不是必须包括由EXECUTE方法返回的OUTRECORDS的关键字。INKEYS可以是任何关键字方面结构。哪种关键字结构与查询相关联被规定在储存库18中表SCOL_QUERY的字段INPUT_KEY_ASPECT中。可选的,其它可以被规定的输入参数包括描述查询(例如,用于分页)的各种选项的结构(OPTIONS)和SELECTIONS。
EXECUTE方法返回的参数包括查询描述(DESCRIPTION)、查询结果(OUTRECORDS)、以及指示对EXECUTE方法的请求是否被拒绝的布尔标志(REJECTED)。
EXECUTE方法返回由查询参数规定的结果。如果INKEYS表参数不是空的,则结果被限制为满足查询参数的对象。INKEYS和INPARAM两者都限制查询,但是被以不同的方式使用。例如,查询可以被定义为返回还未被发送的订单的列表。在这样一个例子中,结构INPARAM可以规定只有姓氏从A到D的客户的订单才被返回。INKEYS是所有还没有被发送的订单的表。OUTRECORDS含有所有来自还没有被发送的相关客户(在这种情况下为姓氏为A到D的客户)的订单。在一个例子中,OUTRECORDS查询的结果是一个不连接的(disconnected)方面,也就是所述方面总是只读的。对这个方面不可以进一步执行后端操作。在这个例子中,接收的关键字可以被用作选择使用方面服务供应商34及其例如SELECT方法的其它方面行的参数。
查询关系服务供应商46对于作为关系目标的方面在服务供应商(例如,方面服务供应商34)中实施一个程序(routine)。查询关系服务供应商46的方法被从源方面的方面服务供应商34间接地调用,如果关系被标记为SOURCE_KEYS或ATTRIBUTES。
查询关系服务供应商46具有SELECT_TARGET方法。方法SELECT_TARGET具有以下输入参数。输入参数包括源方面的名称(SOURCE_ASPECT)。可选地,该方法还包括定义了到目标方面的SELECT方法的代理接口(TARGET)的输入参数。规定TARGET参数允许在不直接知道目标方面的方面服务供应商34的情况下调用目标方面的方面服务供应商34的SELECT方法。这使得查询关系服务供应商46被添加到服务模块,而不需要知道目标方面的方面服务供应商34。
SELECT_TARGET方法的另一个输入参数是关系(RELATION)。另一个输入参数是描述关系的字段(INPARAMS)的表。为了允许海量选择,INPARAMS是个每行都描述了单一选择的表。INDEX参数被用于将INPARAMS结构的各行与OUTRECORDS行相关联。另一个可选的输入参数是描述查询(例如,用于分页)的各种选项的结构(OPTIONS)。
SELECT_TARGET方法返回参数,包括以目标方面的结构编码的结果(OUTRECORDS)、查询结果描述(DESCRIPTION)、以及到目标方面SELECT方法的代理接口。其它输出参数包括描述INPARAMS记录和OUTRECORDS参数之间的关系的索引(INDEX)、指示对SELECT_TARGET方法的请求是否被拒绝的布尔标志(REJECTED)和返回代码(RETURN_CODES)。
服务供应商32、34、40、42、44和46如上所述使能下列用于体系结构38的交易模式。执行方面服务供应商34的方法SELECT,从后端数据库24读取或从存储在后端的交易缓冲器读取。方面服务供应商34以一致(consistent)方式合并来自数据库及其交易缓冲器的两个源的数据,以致合并数据反映了迄今为止在这个交易中的更新。接下来,执行方面服务供应商34的UPDATE、INSERT、MODIFY、或DELETE方法建立交易缓冲器。在实际改变交易缓冲器中的数据前,服务管理器16必须获得对数据的交易锁定并在锁定的保护下读取数据。如前所述,可以用排他、共享、以及共享升级锁定模式来使用锁定服务供应商42。锁定必须伴随选择在锁定保护下的锁定的功能数据。应用可以通过提供有时戳的或者有版本的数据,并在发生冲突的情况下在前端合并实际和修改的数据来支持最佳的(optimistic)锁定。
交易服务供应商40的BEFORE_SAVE方法使得所有参与的服务供应商都宣布了它们是否准备好保存交易缓冲器。交易服务供应商40的SAVE方法最后触发服务管理器16来保存交易缓冲器到后端数据库24。
交易服务供应商40的CLEANUP方法通知所有服务供应商(例如,方面服务供应商34)释放所有它们的交易缓冲器和基于队列的锁定。如果CLEANUP被以原因“END”调用,则所有的锁定都必须被释放。如果原因被设为“COMMIT”,则各个服务供应商可以选择保留其锁定。方面服务供应商34不得自己内部调用COMMIT_WORK或者ROLLBACK_WORK。服务管理器16通过如果方面服务供应商34试图提交交易就自动中断交易来强制执行这点。
支持的锁定方法和锁定策略如下。使用策略S,许多参与者能获得共享的锁定。如果对一个对象获得的共享的锁定,则不能获得排他锁定或SP锁定。共享锁定只能被用于在读取操作期间达成对较大数据集的一致看法(consistent view)。使用策略E,只能有单个参与者获得锁定。使用策略SP(共享升级),许多参与者能够获得锁定。如果存在SP锁定,排他锁定只能够被已经具有对对象的SP锁定的参与者获得。只有一个参与者能够将锁定升级为排他锁定。没有其它在升级之前获得锁定的参与者能够升级到排他,即使第一个参与者释放了其锁定。
例子
体系结构38(图3)实施创建新的客户、经由GUI 28接收一个或多个产品的客户订单以及提交订单给商务处理的简单的任务。为了支持这个例子,后端数据库24可以使用根据上述表1-6中的定义设计的关系数据库来实施,以定义客户、地址、产品类型、货篮(basket)、每个订单产品在货篮中的位置、以及每个订单的列表。在表7-12中,关键字字段标题被标有一个星号。客户表7定义了客户,并且每个客户被唯一地用CustomerId字段来识别。客户表7还包括名称(NAME)字段和外键码字段AddressId,其将地址表中的地址链接到客户。
表7,客户
CustomerId* | 名称 | AddressId |
1 | John Smith | 1 |
2 | David Klein | 2 |
地址表8定义了地址,包括城镇和街道。AddressId本身是地址的一个有效的唯一关键字,而地址和客户之间的联系通过客户表7来定义(AddressId字段)。
表8,地址
AddressId* | 城镇 | 街道 |
1 | Athens | Main Street |
2 | Louisville | Willow Avenue |
表9定义了产品,包括名称和关键字ProductId。
表9,产品
ProductId* | 名称 |
1 | Saw |
2 | Hammer |
3 | Wrench |
4 | Screwdriver |
表10定义了购物篮,包括客户和关键字BasketId。
表10,货篮
BasketId* | CustomerId |
1 | 2 |
2 | 1 |
表11定义了订单在货篮中的位置和具有的产品。位置依赖于货篮和订单的存在,因此位置的主关键字就是PositionId、BasketId和OrderId的组合。
表11,位置
PositionId* | BasketId* | OrderId* | ProductId |
1 | 1 | 3 | 2 |
2 | 1 | 2 | 3 |
3 | 2 | 1 | 4 |
表12定义了具有客户的订单,并指示每个订单是否以主关键字OrderId来提交。
表12,订单
OrderId* | CustomerId | 提交 |
1 | 1 | 假 |
2 | 2 | 假 |
3 | 2 | 假 |
如图5所示,处理150使用这些表7-12来定义这个简单任务所需要的对后端数据库22的数据库操作。处理150包括前端应用程序12接收客户名称(152)。处理150包括商务软件应用查询具有客户表(表7)的数据库NAME字段中的名称(154)。处理150包括检查客户名称与客户表(表7)中的一行是否相匹配(156)。如果没有匹配,处理150包括商务软件应用获得客户地址(158)、在具有新的AddressId和地址的地址表(表8)中插入新的行(160)、在具有新的CustomerId和AddressId的客户表(表7)中插入新的行(162)。如果存在匹配,处理150包括商务软件获得含有客户的订单的产品名称(164)。处理150包括商务软件在产品表中查询产品名称(表9)(166)。
处理150包括检查产品名称与产品表(表9)中的行是否相匹配(168)。如果存在匹配,则处理150包括商务软件在具有客户的CustomerId的订单表(表12)中插入新的订单以及设定提交字段为“假”。否则,处理150返回到获得订单的产品名称(164)。处理150包括商务软件在具有客户的CustomerId的货篮表(表10)中插入新的货篮。
处理150包括商务软件在具有CustomerId、BasketId、和ProductId的位置表(表11)中插入新的位置(174)。处理150包括商务软件接收请求以提交订单(176)。处理150包括商务软件以客户的CustomerId查询订单表(表12)(178),而这个查询返回匹配客户的CustomerId的订单。处理150包括在订单表(表12)中选择匹配客户的CustomerId的订单(180)的商务软件。处理150包括商务软件将订单表(表12)中选择的行的提交的字段设置为“真”(182)。处理150包括通过商务软件在客户表7中查询AddressId以及然后在地址表8中查询匹配的AddressId,来从地址表8中取得用于订单发送的客户地址(184)。
表13-19示出储存库18的一个实施中的表,所述储存库18表示由表7-12说明的示例数据库的元数据。表13-19按照上述表1-6的定义,所以表1-6的行中的定义与表13-19的列或字段相对应。与表7-12的情况一样,表13-19的关键字字段也被标注了星号。
表13按照SCOL_ASPECT表(定义在表1中)中的定义,定义了方面A_Customer、A_Address、A_Product、A_Basket、A_Position、和A_OrderHeader。每个方面具有为每个实例定义唯一的关键字的相应关键字方面。例如,方面A_Customer具有关键字方面Customer_Key。这个元数据储存库18中的关键字方面可以对应后端数据库24中的关系数据库表的关键字。例如,客户表(表7)的关键字是CustomerId字段。STRUCTURE字段中的行对应下面表19中的数据字典。例如,表19可以定义Customer_Structure,以便具有指示字符串的CHAR类型的NAME字段。SERVICE_PROVIDER字段的行对应处理方面的服务的特定方面服务供应商。在表13中,所有方面被指派给S_provider方面服务供应商(例如,参考图3的34)。TRANSAC_PROVIDER字段的行对应处理方面的交易的特定交易服务供应商40。在表13中,所有方面被指派给T_provider交易服务供应商(例如,参考图3的40)。LOCKING_PROVIDER字段中的行对应处理方面的锁定的特定锁定服务供应商。在表13中,所有方面被指派给L_provider锁定服务供应商(例如,参考图3的42)。
表13,示例的SCOL_ASPECT表
ASPECT_NAME* | ASPECT_CATEGORY | 结构 | KEY_ASPECT | SERVICE_PROVIDER | TRANSAC_PROVIDER | LOCKING_PROVIDER |
A_Customer | 方面 | Customer_Structure | Customer_Key | S_provider | T_provider | L_provider |
Customer_Key | 关键字方面 | Customer_Key_Table | Customer_Key | S_provider | T_provider | L_provider |
A_Address | 方面 | Address_Structure | Address_Key | S_provider | T_provider | L_provider |
Address_Key | 关键字方面 | Address_Key_Table | Address_Key | S_provider | T_provider | L_provider |
A_Product | 方面 | Product_Structure | Product_Key | S_provider | T_provider | L_provider |
Product_Key | 关键字方面 | Product_Key_Table | Product_Key | S_provider | T_provider | L_provider |
A_Basket | 方面 | Basket_Structure | Basket_Key | S_provider | T_provider | L_provider |
Basket_Key | 关键字方面 | Basket_Key_Table | Basket_Key | S_provider | T_provider | L_provider |
A_Position | 方面 | Position_Structure | Position_Key | S_provider | T_provider | L_provider |
Position_Key | 关键字方面 | Position_Key_Table | Position_Key | S_provider | T_provider | L_provider |
A_OrderHeader | 方面 | OrderHeader_Structur | OrderHeader_Key | S_provider | T_provider | L_provider |
OrderHeader_Key | 关键字方面 | OrderHeader_Key_Table | OrderHeader_Key | S_provider | T_provider | L_provider |
表14按照SCOL_ASP_ASPECT表(定义在表2中)中的定义,来定义方面A_OrderHeader的动作提交。字段INPUT_KEY_ASPECT用规定A_OrderHeader的哪个实例应当被动作作用来规定应用14发送的关键字方面。动作提交将提交的后端数据库24的那些实例的字段改变为真(True)。对这个动作提交不需要额外的参数,所以表14中的PARAM_STRUCTURE字段为空白。字段PROVIDER_CLASS规定指派给每个动作的方面服务供应商34(参考图3)。在表14中,动作提交被指派给方面服务供应商S_provider(例如,参考图3的34)。
表14,示例的SCOL_ASP_ACTION表
ASPECT_NAME* | ACTION_NAME* | PARAM_STRUCTURE | INPUT_KEY_ASPECT | PROVIDER_CLASS |
A_OrderHeader | 提交 | OrderHeader_Key | S_provider |
表15按照SCOL_RELATION表(定义在表3中)中的定义,来定义在表13中定义的方面之间的关系。这些关系反映在由示例表7-12说明的后端数据库24中的数据表之间的关系。方面之间的这些关系也说明在图6中,对于方面A_Customer 202、方面A_Address 204、方面A_Product 206、方面A_Basket 208、方面A_Position 210、以及方面A_OrderHeader 112。这些关系包括R_Customer_To_Address 212、R_Basket_To_Customer 214、R_OrderHeader_To_Customer 216、R_Position_To_Product 218、R_Position_To_OrderHeader 220、以及R_Position_To_Basket 222。
表15,示例的SCOL_RELATION表
RELATION_NAME* | SOURCE_ASPECT | TARGET_ASPECT | TARGET_PROVIDER | REL_PARAM_TYPE | REL_PARAMETER |
R_Customer_To_Address | A_Customer | A_Address | S_provider | Parent-Child | |
R_Basket_To_Customer | A_Basket | A_Customer | S_provider | ||
R_OrderHeader_To_Customer | A_OrderHeader | A_Customer | S_provider | ||
R_Position_To_Product | A_Position | A_Product | S_provider | ||
R_Position_To_OrderHeader | A_Position | A_OrderHeader | S_provider | Child-Parent | |
R_Position_To_Basket | A_Position | A_Basket | S_provider | Child-Parent |
表16按照SCOL_SVC_MODULE表(定义在表4中)的定义,来定义用于在表7-12中给出的后端数据库24的示例定义的示例服务模块。表16定义了服务模块S_Customer、S_Product、S_Basket、以及S_Order。字段TRANSAC_PROVIDER为每个服务模块规定交易服务供应商40(参考图3)。在表16中,交易服务供应商T_provider(例如,参考图3的40)被指派给服务模块。
表16,示例的SCOL_SVC_MODULE表
SVC_MODULENAME* | TRANSAC_PROVIDER |
S_Customer | T_provider |
S_Product | T_provider |
S_Basket | T_provider |
S_Order | T_provider |
表17按照SCOL_ASPECT_USE表(定义在表5中)中的定义,来将服务模块(由表16提供)与方面(由表13提供)相关联。
表17,示例的PECT_USESCOL_ASP表
SVC_MODULE_NAME* | ASPECT_NAME* |
S_Customer | A_Customer |
S_Customer | A_Address |
S_Product | A_Product |
S_Basket | A_Basket |
S_Basket | A_Position |
S_Order | A_OrderHeader |
S_Order | A_Position |
表18按照SCOL_QUERY表(定义在表6中)中的定义,来定义指派给便利图5的商务处理150的查询。例如,与S_Customer服务模块相关联的QueryByName查询采用Customer_Structure作为查询的输入,以及一组定义哪些关键字可以被用于过滤的客户关键字(Customer_Key)。字段PROVIDER_CLASS规定哪个查询服务供应商32(参考图3)与每个服务模块相关联。在表18中,查询服务供应商Q_provider(例如,32)与每个服务模块相关联。
表18,示例的SCOL_QUERY表
SVC_MODULE_NAME* | QUERY_NAME* | RESULT_ASPECT | PARAM_STRUCTURE | INPUT_KEY_ASPECT | PROVIDER_CLASS |
S_Customer | QueryByName | Customer_Key | Customer_Structure | Customer_Key | Q_provider |
S_Product | QueryByName | Product_Key | Product_Strucrure | Product_Key | Q_provider |
S_Basket | QueryByCustomer | Basket_Key | Customer_Key_Table | Customer_Key | Q_provider |
S_OrderHeader | QueryByCustomer | OrderHeader_Key | Customer_Key_Table | Customer_Key | Q_provider |
表19定义了在表13-18中定义的储存库18的实施的数据字典。每行定义了具有名称和多个数据项目和它们的类型的结构。例如,结构Customer_Structure具有一个指示字符串的CHAR类型的标题为“NAME(名称)”的数据项目。Customer_Key_Table结构定义了每个客户的CustomerId关键字,并且也是CHAR类型。
表19,示例的SCOL_STRUCT表
STRUCT_NAME* | 数据1 | 类型1 | 数据2 | 类型2 |
Customer_Structure | 名称 | char | ||
Customer_Key_Table | CustomerId | char | ||
Address_Structure | 城镇 | char | 街道 | char |
Address_Key_Table | AddressId | char | ||
Product_Structure | 名称 | char | ProductId | char |
Product_Key_Table | ProductId | char | ||
Basket_Structure | ||||
Basket_Key_Table | BasketId | char | ||
Position_Structure | ||||
Position_Key_Table | PositionId | char | ||
OrderHeader_Structure | 提交的 | char | ||
OrderHeader_Key_Table | OrderId | char |
上述处理150的数据库操作被如下定义在储存库18的这个实施中。包括在处理150中的客户数据库表(表7)的查询(154)由与表18中的方面服务模块S_Customer相关联的QueryByName查询在元数据储存库18中来描述。由于前端应用程序12已经获得客户名称,并且服务模块S_Customer含有具有客户名称的方面,因此选择与方面服务模块S_Customer相关联的QueryByName查询。例如,前端应用程序12可以向服务管理器16提交与服务模块S_Customer相关联的查询QueryByName NAME=“John Smith”,而不规定Customer_Key的过滤。服务管理器16检查储存库18以保证定义了查询。然后,服务管理器16提交查询给在数据库24中查询客户数据库表(表7)的Q_provider(例如,32),并且被发送回前端应用程序12的输出是含有CurtomerId={1}的记录集。
分别用元数据储存库18中对方面A_Aspect和A_Customer的标准插入操作(前述)来描述包括在处理150中的、在地址数据表(表8)上的插入(160)和包括在处理150中的、在客户数据库表(表7)上的插入(162)。
用与定义在表18中的服务模块S_Product相关联的QueryByName查询描述包括在处理150中的、在产品数据库表(表9)中对产品名称的查询(166)。例如,应用12可以向服务管理器16提交与服务模块S_Product相关联的查询QueryByName NAME=“Wrench”,而不规定Product_Key的过滤。服务管理器16检查储存库18以保证定义了查询。然后,服务管理器16提交查询给查询数据库24的Q_provider(例如,32),并且发送回应用12的输出是含有ProductId={3}的记录集。
分别用对方面A_OrderHeader、A_Basket、和A_Position的插入操作定义包括在处理150中的插入(170、172和174)。
用与定义在图18中的服务模块S_Order相关联的QueryByCustomer查询描述包括在处理150中的对订单数据库表(表12)按照客户的查询(178)。例如,前端应用程序12可以提交与服务模块S_Order相关联的查询QueryByCustomer Customer_Key(CustomerId)={2},而不过滤OrderHeader_Key。服务管理器16检查储存库18以保证定义了查询。然后,服务管理器16提交查询给查询数据库24的Q_provider(例如,32),并且被发送回应用12的输出是含有OrderHeader_Key={2,3}的记录集。
用储存库18中对方面A_OrderHeader的执行提交动作(定义在表14中)定义包括在处理150中的选择对订单数据库表(表12)的订单操作(180)和将选择的订单的提交的字段设置为真(182)。例如,前端应用程序12可以以OrderHeader-Key={2,3}将对方面A_OrderHeader的提交动作发送给服务管理器16。然后,服务管理器16发送提交操作给S_provider(例如,34),S_provider对于所选择的对应OrderId={2,3}的行将订单数据库表(表12)中提交的字段改变为“真”。
用对A_Customer方面的标准按照关系选择动作定义包括在处理150中的从地址数据库表(表8)取得客户地址(184)。例如,前端应用程序12将对规定关系R_Customer_To_Addres和Customer_Key={2}的A_Customer方面的按照关系选择动作发送给服务管理器16。服务管理器16检查对储存库18的请求,并将请求传递给服务供应商S_provider(例如,34),其查询匹配CustomerId={2}的外键码AddressId,并导航到地址表8。S_provider(例如,34)经由服务管理器16将含有{Louisville,Willow Avenue}的记录集从地址数据库表(表8)返回到应用12。
上述技术可以在数字电子电路或计算机硬件、固件、软件以及它们的组合中实施。该技术还可以作为计算机程序产品实施,即有形地具体化在信息载体中的计算机程序,例如在机器可读的存储设备或传播信号中,并且由例如可编程处理器、计算机、或多台计算机的数据处理装置执行或控制这些数据处理装置的操作,。计算机程序可以以各种编程语言的形式来编写,包括编译语言或解释语言,并且它也可以以各种形式来配备(deploy),包括作为独立程序或模块、构件、子程序、或其它适于用在计算环境中的单元。计算机程序可以被配备来在一台计算机上或在一个地点或分布在多个地点而通过通信网络相互连接的多台计算机上执行。
所述技术的方法步骤可以由一个或多个可编程处理器来执行,所述可编程处理器运行计算机程序并通过对输入数据进行操作和产生输出来执行本发明的功能。方法步骤可以由专用逻辑电路来执行,并且本发明的装置也可以被实施为该专用逻辑电路,例如,FPGA(场可编程门阵列)或ASIC(专用集成电路)。所述方法步骤还可以用除上述次序以外的次序来执行。
适于执行计算机程序的处理器包括例如通用和专用微处理器、以及任何种类的数字计算机的任意一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的主要元件是执行指令的处理器和存储指令和数据的一个或多个存储器。通常,计算机还将包括或操作地耦合到一个或多个用于存储数据的海量存储设备,以便从其接收数据或向其传输数据,例如,磁盘、磁光盘、或光盘。适于具体化计算机程序指令和数据的信息载体包括各种形式的非易失性存储器,包括:例如半导体存储器设备,例如EPROM、EEPROM和闪速存储器设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以补充有专用逻辑电路或结合在专用逻辑电路中。
本发明可以实施在一种计算系统中,其包括后端构件,例如数据服务器,或者包括中间件构件,例如应用服务器,或者包括前端构件,例如具有图形用户界面或网络浏览器的客户计算机,通过其用户能够与本发明的实施来交互,或者任何这样的后端、中间件、或前端构件的组合。
本发明已经通过特定的实施例进行了描述。其它的实施例也在所附权利要求书的保护范围之内。
Claims (28)
1.一种方法,包括:
在储存库中表示来自服务器的服务,所述服务包括使用一组对集合中的数据元素的操作来与一个或多个数据元素的集合交互,所述储存库包括集合的描述和每个集合的共同属性,所述储存库根据元模型来组织;
使软件实体请求表示在储存库中的服务,所述服务表示对来自多个集合的第一集合中的一个或多个数据元素的第一操作;以及
执行对第一集合中的一个或多个数据元素的第一操作。
2.如权利要求1所述的方法,其中所述储存库还包括对来自多个集合的一个集合的数据元素的特殊动作的描述。
3.如权利要求2所述的方法,其中所述特殊动作的描述包括:
特殊动作的名称;
特殊动作的输入数据的数据结构的名称;
数据元素的集合的名称。
4.如前述权利要求之一所述的方法,其中该组操作对应服务供应商类别的方法。
5.如权利要求4所述的方法,其中该组操作包括选择、删除、按照关系选择、以及更新操作。
6.如前述权利要求之一所述的方法,其中所述储存库还包括在数据元素的集合对之间的关系的描述。
7.如前述权利要求之一所述的方法,其中所述第一集合具有与数据元素的第二集合的关系,所述关系的描述被存储在储存库中,并且所述关系使得软件实体通过指定第一集合的数据元素来请求检索第二集合的数据元素。
8.如前述权利要求之一所述的方法,其中所述储存库是数据库。
9.如前述权利要求之一所述的方法,其中执行第一操作包括从记忆装置读取第一集合的数据元素的一个或多个属性,并发送属性到软件实体。
10.如权利要求9所述的方法,其中执行第一操作还包括计算数据元素的集合的一个或多个属性,并发送属性到软件实体。
11.如前述权利要求之一所述的方法,其中集合的描述和集合的共同属性包括:
集合的名称;和
定义属性的数据结构的描述。
12.如前述权利要求之一所述的方法,其中所述第一操作是查询,并且执行第一操作还包括在第一集合内搜索单个数据元素,并返回表示所述单个数据元素的关键字。
13.如权利要求12所述的方法,其中所述储存库包括查询的定义,包括:
查询的搜索参数结构;和
定义用于从数据集合中过滤一个或多个数据的关键字的输入名称。
14.如前述权利要求之一所述的方法,还包括:
使得软件实体请求表示在储存库中的服务,所述服务表示对来自多个集合的第二集合中的一个或多个数据元素的第一操作;以及
执行对第二集合中的一个或多个数据元素的第一操作。
15.一种系统,包括:
第一计算机,配置来执行客户程序;
第二计算机,配置来执行服务器程序;
网络,链接第一和第二计算机,以致服务器程序被配置来执行以下操作:
在储存库中表示来自服务器程序的服务,所述服务包括使用一组对集合中的数据元素的操作来与一个或多个数据元素的集合交互,所述储存库包括集合的描述和每个集合的共同属性,所述储存库根据元模型来组织;
使得客户程序请求表示在储存库中的服务,所述服务表示对来自多个集合的第一集合中的一个或多个数据元素的第一操作;以及
执行对第一集合中的一个或多个数据元素的第一操作。
16.如权利要求15所述的系统,其中所述储存库还包括对来自多个集合的一个集合的数据元素的特殊动作的描述。
17.如权利要求16所述的系统,其中特殊动作的描述包括:
特殊动作的名称;
特殊动作的输入数据的数据结构的名称;
数据元素的集合的名称。
18.如权利要求15、16或17所述的系统,其中该组操作对应服务供应商类别的方法。
19.如权利要求18所述的系统,其中该组操作包括选择、删除、按照关系选择、以及更新操作。
20.如权利要求15、16、17、18或19所述的系统,其中所述储存库还包括在数据元素的集合对之间的关系的描述。
21.如权利要求15、16、17、18、19或20所述的系统,其中第一集合具有与数据元素的第二集合的关系,所述关系的描述被存储在储存库中,并且所述关系使得客户程序通过指定第一集合的数据元素来请求检索第二集合的数据元素。
22.如权利要求15、16、17、18、19、20或21所述的系统,其中所述储存库是数据库。
23.如权利要求15、16、17、18、19、20、21或22所述的系统,其中执行第一操作包括从记忆装置读取数据元素的第一集合的一个或多个属性,并发送属性到客户程序。
24.如权利要求23所述的系统,其中执行第一操作还包括计算数据元素集合的一个或多个属性,并发送属性到软件实体。
25.如前述权利要求15到24之一所述的系统,其中集合的描述和集合的共同属性包括:
集合的名称;和
定义属性的数据结构的描述。
26.如前述权利要求15到25之一所述的系统,其中第一操作是查询,并且执行第一操作还包括在第一集合内搜索单个数据元素,并返回表示所述单个数据元素的关键字。
27.如权利要求26所述的系统,其中所述储存库包括查询的定义,包括:
查询的搜索参数结构;和
定义用于从数据集合中过滤一个或多个数据的关键字的输入名称。
28.如前述权利要求15到27之一所述的系统,还包括:
使得客户程序请求表示在储存库中的服务,所述服务表示对来自多个集合的第二集合中的一个或多个数据元素的第一操作;以及
执行对第二集合中的一个或多个数据元素的第一操作。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US48957303P | 2003-07-22 | 2003-07-22 | |
US60/489,573 | 2003-07-22 | ||
US10/747,020 | 2003-12-23 | ||
US10/747,020 US7533103B2 (en) | 2003-07-22 | 2003-12-23 | Self-describing business objects |
PCT/EP2004/007379 WO2005015436A2 (en) | 2003-07-22 | 2004-07-06 | Self describing business objects |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1826599A true CN1826599A (zh) | 2006-08-30 |
CN1826599B CN1826599B (zh) | 2010-04-28 |
Family
ID=37003325
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800211346A Expired - Fee Related CN1826599B (zh) | 2003-07-22 | 2004-07-06 | 数据处理方法及系统 |
CNB200480021137XA Expired - Lifetime CN100432997C (zh) | 2003-07-22 | 2004-07-06 | 一种用于通过应用服务器提供服务的方法和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200480021137XA Expired - Lifetime CN100432997C (zh) | 2003-07-22 | 2004-07-06 | 一种用于通过应用服务器提供服务的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7890540B2 (zh) |
CN (2) | CN1826599B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108701257A (zh) * | 2016-08-22 | 2018-10-23 | 甲骨文国际公司 | 用于实时可视模拟内的动态、增量推荐的系统和方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7849219B2 (en) * | 2004-07-30 | 2010-12-07 | Idx Investment Corporation | Communication system and method for real-time internet-based network connectivity to multiple heterogeneous backend systems |
EP1693765B1 (en) * | 2005-02-16 | 2014-07-09 | Sap Ag | A data processing system and method |
US8015039B2 (en) * | 2006-12-14 | 2011-09-06 | Sap Ag | Enterprise verification and certification framework |
US8112434B2 (en) * | 2007-07-09 | 2012-02-07 | International Business Machines Corporation | Performance of an enterprise service bus by decomposing a query result from the service registry |
US8607197B2 (en) * | 2007-08-28 | 2013-12-10 | International Business Machines Corporation | Displaying HTTP session entry and exit points |
US8032858B2 (en) * | 2007-08-28 | 2011-10-04 | International Business Machines Corporation | Method and system for navigationally displaying HTTP session entry and exit points |
EP2071452A1 (en) * | 2007-12-07 | 2009-06-17 | Alcatel Lucent | Device and method for automatically building applications from specifications and from off-the-shelf components selected by semantic analysis |
CN101923461A (zh) * | 2009-06-12 | 2010-12-22 | 徐晓松 | 一种数据处理方法及其系统 |
US8768887B2 (en) * | 2009-12-16 | 2014-07-01 | Sap Ag | Generating and binding notes to business objects |
US8463846B2 (en) * | 2010-05-06 | 2013-06-11 | Cdnetworks Co., Ltd. | File bundling for cache servers of content delivery networks |
US8612927B2 (en) * | 2011-07-05 | 2013-12-17 | Sap Ag | Bulk access to metadata in a service-oriented business framework |
US11016946B1 (en) * | 2015-03-31 | 2021-05-25 | EMC IP Holding Company LLC | Method and apparatus for processing object metadata |
WO2019196721A1 (en) * | 2018-04-11 | 2019-10-17 | Beijing Didi Infinity Technology And Development Co., Ltd. | Methods and apparatuses for processing data requests and data protection |
US10459766B1 (en) | 2018-08-20 | 2019-10-29 | Bank Of America Corporation | System for optimizing resource prioritization based on services efficiency |
CN110245921A (zh) * | 2019-06-20 | 2019-09-17 | 普元信息技术股份有限公司 | 大数据治理中基于元数据实现数据服务上下游链路追溯功能的方法 |
US20220051322A1 (en) * | 2020-08-17 | 2022-02-17 | Bonaire Software Solutions, Llc | System and method for creating and managing a data attribute condition trigger matrix |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696961A (en) * | 1996-05-22 | 1997-12-09 | Wang Laboratories, Inc. | Multiple database access server for application programs |
US6292827B1 (en) * | 1997-06-20 | 2001-09-18 | Shore Technologies (1999) Inc. | Information transfer systems and method with dynamic distribution of data, control and management of information |
US6266666B1 (en) * | 1997-09-08 | 2001-07-24 | Sybase, Inc. | Component transaction server for developing and deploying transaction- intensive business applications |
US6212524B1 (en) * | 1998-05-06 | 2001-04-03 | E.Piphany, Inc. | Method and apparatus for creating and populating a datamart |
US6424358B1 (en) * | 1998-12-03 | 2002-07-23 | Lockheed Martin Corporation | Method and system for importing database information |
US6341287B1 (en) * | 1998-12-18 | 2002-01-22 | Alternative Systems, Inc. | Integrated change management unit |
US7007029B1 (en) * | 1999-01-15 | 2006-02-28 | Metaedge Corporation | System for visualizing information in a data warehousing environment |
US6601233B1 (en) * | 1999-07-30 | 2003-07-29 | Accenture Llp | Business components framework |
CA2281331A1 (en) * | 1999-09-03 | 2001-03-03 | Cognos Incorporated | Database management system |
US6571232B1 (en) * | 1999-11-01 | 2003-05-27 | Sun Microsystems, Inc. | System and method for browsing database schema information |
JP4982651B2 (ja) * | 2000-02-04 | 2012-07-25 | リアルネットワークス・インコーポレイテッド | 分散型メディアネットワーク及びメタデータサーバを含んだシステム |
WO2001067309A2 (en) * | 2000-03-03 | 2001-09-13 | Radiant Logic, Inc. | System and method for providing access to databases via directories and other hierarchical structures and interfaces |
US7266821B2 (en) * | 2000-04-27 | 2007-09-04 | Hyperion Solutions Corporation | Method and apparatus for processing jobs on an enterprise-wide computer system |
US6658426B1 (en) * | 2000-10-31 | 2003-12-02 | Opsware | Object-oriented database abstraction and statement generation |
US6978461B2 (en) * | 2001-02-28 | 2005-12-20 | Sun Microsystems, Inc. | System and method for accessing functionality of a backend system from an application server |
KR20040020933A (ko) * | 2001-06-22 | 2004-03-09 | 노사 오모이구이 | 지식 검색, 관리, 전달 및 프리젠테이션을 위한 시스템 및방법 |
US7315847B2 (en) * | 2001-11-06 | 2008-01-01 | International Business Machines Corporation | Method and system for providing access to a database |
US7062502B1 (en) * | 2001-12-28 | 2006-06-13 | Kesler John N | Automated generation of dynamic data entry user interface for relational database management systems |
US7051038B1 (en) * | 2002-06-28 | 2006-05-23 | Microsoft Corporation | Method and system for a reporting information services architecture |
US20040187140A1 (en) * | 2003-03-21 | 2004-09-23 | Werner Aigner | Application framework |
US20050034064A1 (en) * | 2003-07-25 | 2005-02-10 | Activeviews, Inc. | Method and system for creating and following drill links |
US7720887B2 (en) * | 2004-12-30 | 2010-05-18 | Microsoft Corporation | Database navigation |
-
2004
- 2004-05-11 US US10/842,958 patent/US7890540B2/en active Active
- 2004-07-06 CN CN2004800211346A patent/CN1826599B/zh not_active Expired - Fee Related
- 2004-07-06 CN CNB200480021137XA patent/CN100432997C/zh not_active Expired - Lifetime
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108701257A (zh) * | 2016-08-22 | 2018-10-23 | 甲骨文国际公司 | 用于实时可视模拟内的动态、增量推荐的系统和方法 |
US11347482B2 (en) | 2016-08-22 | 2022-05-31 | Oracle International Corporation | System and method for dynamic lineage tracking, reconstruction, and lifecycle management |
US11526338B2 (en) | 2016-08-22 | 2022-12-13 | Oracle International Corporation | System and method for inferencing of data transformations through pattern decomposition |
US11537369B2 (en) | 2016-08-22 | 2022-12-27 | Oracle International Corporation | System and method for dynamic, incremental recommendations within real-time visual simulation |
US11537371B2 (en) | 2016-08-22 | 2022-12-27 | Oracle International Corporation | System and method for metadata-driven external interface generation of application programming interfaces |
Also Published As
Publication number | Publication date |
---|---|
CN1836231A (zh) | 2006-09-20 |
CN1826599B (zh) | 2010-04-28 |
US20050021563A1 (en) | 2005-01-27 |
US7890540B2 (en) | 2011-02-15 |
CN100432997C (zh) | 2008-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7487512B2 (en) | Publish-subscribe event notifications | |
US8032890B2 (en) | Resources managing in isolated plurality of applications context using data slots to access application global data and specification of resources lifetime to access resources | |
JP4594306B2 (ja) | 自己記述型ビジネスオブジェクト | |
US8180845B2 (en) | Remote debugging of software | |
JP4571636B2 (ja) | サービス指向ビジネスフレームワークのサービス管理 | |
CN1826599A (zh) | 自述商务对象 | |
US8260779B2 (en) | Systems, methods, and apparatus for automated mapping and integrated workflow of a controlled medical vocabulary | |
US8176083B2 (en) | Generic data object mapping agent | |
US8630986B2 (en) | Extending the functionality of enterprise services | |
CN102682052A (zh) | 过滤数据存储上的查询数据 | |
US8122062B2 (en) | Meta model for an enterprise service architecture | |
US7860902B2 (en) | Side-effect modeling | |
Cohen-Boulakia et al. | Distilling structure in Taverna scientific workflows: a refactoring approach | |
EP1646978A1 (en) | Declarative configuration and customizing concepts in a service-oriented business framework | |
US20190102426A1 (en) | Method and system for efficient processing of polymorphic table functions | |
Medjahed et al. | WebBIS: An infrastructure for agile integration of web services | |
Happel et al. | Documenting Service-Oriented Architectures with Ontobrowse Semantic Wiki. | |
Happel et al. | Ontology-enabled documentation of service-oriented architectures with ontobrowse semantic Wiki | |
CN1713107A (zh) | 关于项存储的反病毒 | |
Moretti | Analysis and prototype of a metamodeling environment for engineering grid services. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100428 |
|
CF01 | Termination of patent right due to non-payment of annual fee |