CN1912830A - 定义面向对象模型的操作接口的方法 - Google Patents
定义面向对象模型的操作接口的方法 Download PDFInfo
- Publication number
- CN1912830A CN1912830A CN 200610109986 CN200610109986A CN1912830A CN 1912830 A CN1912830 A CN 1912830A CN 200610109986 CN200610109986 CN 200610109986 CN 200610109986 A CN200610109986 A CN 200610109986A CN 1912830 A CN1912830 A CN 1912830A
- Authority
- CN
- China
- Prior art keywords
- xsd
- interface
- name
- behavior
- transaction
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种定义面向对象模型的操作接口的方法,该方法主要包括:将面向对象模型中的对象行为和对象定义分离,并分别建立相应的行为集合和对象集合;以所述行为集合和对象集合为参数定义一个静态的事务接口,并根据实际业务场景需要选择并组合所述静态的事务接口中的各种行为和对象,动态地构造满足所述实际业务场景需要的具体事务接口。利用本发明所述方法,可以降低面向对象软件或软件组件间操作接口的复杂性,降低面向对象软件***的维护工作量。
Description
技术领域
本发明涉及计算机应用领域,尤其涉及一种定义面向对象模型的操作接口的方法。
背景技术
面向对象建模技术的引入和面向对象语言的功能的逐步增强和完善,使软件的开发周期、开发成本大大减少,使软件***组件可重用、可扩展、可维护的能力大大提升。此外,ASN.1(抽象语法标记)标准的引入及其配套中间件对面向对象数据格式良好的表示、编码映射、传输和解码映射能力,使人们可以用面向对象的思维方法来定义软件***组件或分布式软件***之间的通讯接口,使面向对象的思维方法从软件***组件内部延伸到整个软件***中。
随着XML(可扩展标记语言)语言及XML Scheme(XML方案)的不断成熟,可以用XML Scheme来描述接口的语法和语义,XML Scheme是可以直接映射为其他面向对象编程语言(如C++、Java)的数据结构定义的,从而弥补了Asn.1在接口扩展性方面的不足,为面向对象的接口定义注入了更鲜活的血液。
面向对象软件的设计通常要经过建立管理模型、定义对管理模型的操作接口及实现操作接口三个步骤,本发明只讨论建立管理模型和定义对管理模型的操作接口两个步骤。
面向对象建模的基础是对象抽象,即从现实世界的问题描述出发构筑现实世界的对象模型,确定对象的静态结构、对象功能及对象之间的相互作用。比如,一个学生选课***的管理模型可用图1所示的实体关系图来表示。
管理模型的操作接口主要用于软件组件或软件***间的访问调用。以学生选课***为例,通过操作接口在软件组件之间进行访问的示意图如图2所示,通过操作接口在软件***之间进行访问的示意图如图3所示。
现有技术中一种定义面向对象模型的操作接口的方法为:针对对象模型中的单个实体或实体之间的关联关系分别定义相应的Fine-Grained(细颗粒)接口。即针对管理模型中每类对象的每种行为都定义一个Fine-Grained消息接口。以上述学生选课***为例,需要分别针对学校实体、针对系实体和针对学生实体的每种行为都定义一些操作接口。以上述学生选课***为例,针对学校实体需要定义创建系操作的请求与响应接口、删除系操作的请求与响应接口、创建学生操作的请求与响应接口和修改学校属性操作的请求与响应接口等操作接口。每个接口的具体描述如下:
1:创建系操作的请求与响应接口。
<xsd:element name="createDepartmentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="extended attribute"type="xsd:any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="createDepartmentResponse">
<xsd:com plexType>
<xsd:sequence>
<xsd:element name="result"type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
2:删除系操作的请求与响应接口。
<xsd:element name="deleteDepartmentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name"type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="deleteDepartmentResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="result"type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
3:创建学生操作的请求与响应接口。
<xsd:element name="createStudentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="age"type="xsd:integer"/>
<xsd:element name="sex"type="xsd:string"/>
<xsd:element name="extended attribute"type="xsd:any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
4、修改学校属性操作的请求与响应接口。
<xsd:element name="modifySchoolRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="location"type="xsd:string"/>
<xsd:element name="extended attribute"type="xsd:any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
针对学校实体还可以定义其他操作接口。
针对系实体需要定义创建课程操作的请求与响应接口、修改系属性操作的请求与响应接口、关联学生到系操作的请求与响应接口和解除学生到系关联关系操作的请求与响应接口等操作接口。每个接口的具体描述如下:
1、创建课程操作的请求与响应接口。
<xsd:element name="createCourseRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="creditHour"type="xsd:integer"/>
<xsd:element name="extended attribute"type="xsd:any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
2、修改系属性操作的请求与响应接口。
<xsd:element name="modifyDepartmentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="location"type="xsd:string"/>
<xsd:element name="extended attribute"type="xsd:any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
3、关联学生到系操作的请求与响应接口。
<xsd:element name="associateStudentToDepartmentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="departmentName"type="xsd:string"/>
<xsd:element name="studentName"type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
4、解除学生到系关联关系操作的请求与响应接口。
<xsd:element name="deassociateStudentToDepartmentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="departmentName"type="xsd:string"/>
<xsd:element name="studentName"type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
针对系实体还可以定义其他操作接口。
针对学生实体需要定义修改学生属性操作的请求与响应接口、学生选修课程操作的请求与响应接口和学生放弃选修课程操作的请求与响应接口等操作接口。每个接口的具体描述如下:
1、修改学生属性操作的请求与响应接口。
<xsd:element name="modifyStudentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="age"type="xsd:integer"/>
<xsd:element name="sex"type="xsd:string"/>
<xsd:element name="extended attribute"type="xsd:any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
2、学生选修课程操作的请求与响应接口。
<xsd:element name="associateCourseToStudentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="studentName"type="xsd:string"/>
<xsd:element name="courseName"type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
3、学生放弃选修课程操作的请求与响应接口。
<xsd:element name="deassociateCourseToStudentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="studentName"type="xsd:string"/>
<xsd:element name="courseName"type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
针对学生实体还可以定义其他操作接口。
上述现有技术的定义面向对象模型的操作接口的方法的缺点为:
1、针对管理模型中每类对象的每种行为都要定义一个消息接口,接口繁多复杂,导致软件***的维护极其困难。
2、无法灵活支持复杂的事物逻辑。例如,当某一事务需要对管理模型上多个对象进行操作时,如果不为该事务定义新的接口而使用现有的接口,往往需要通信双方交互多次才能完成,且其中任何一次交互执行失败都需要双方增加额外的交互对前面执行成功的操作进行回滚。
以上述学生选课***为例,某学校计算机系开设了数据结构、编译原理两门学位课,该学校有规定如果某学生选择某系则必须修该系的学位课,否则不允许该学生选择该系。假设张三要加入该校的计算机系,按照学校规定他必须修数据结构、编译原理两门学位课。
按照上述现有的接口定义配置张三加入计算机系这条业务的过程为:先调用associateStudentToDepartmentRequest接口将张三隶属到计算机系下,执行成功后再调用associateCourseToStudentRequest接口让张三选择数据结构、编译原理两门学位课。假设让张三选择数据结构、编译原理两门学位课的操作associateCourseToStudentRequest因某些原因执行失败了,则请求方必须要调用deassociateStudentToDepartmentRequest接口将张三从计算机系中去处,否则***状态就不一致了。
3、当由于业务功能增强需要在管理模型中增加新的对象角色例如教授时,则必须修改接口文件为该角色的每种行为增加一个消息接口,软件接口可扩展能力很低。
比如,当需要在上述学生选课***中增加教授实体时,则需要针对教授实体定义如下的接口:
1、修改教授属性操作的请求与响应接口
<xsd:element name="modifyProfessorRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="age"type="xsd:integer"/>
<xsd:element name="sex"type="xsd:string"/>
<xsd:element name="extended attribute"type="xsd:any"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
2、教授选择研究生操作的请求与响应接口
<xsd:element name="associateStudentToProfessorRequest">
<xsd:complexType>
<xsd:seq uence>
<xsd:element name="professorName"type="xsd:string"/>
<xsd:element name="studentName"type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种定义面向对象模型的操作接口的方法,从而可以降低面向对象软件或软件组件间操作接口的复杂性,降低面向对象软件***的维护工作量。
本发明的目的是通过以下技术方案实现的:
一种定义面向对象模型的操作接口的方法,包括步骤:
A、将面向对象模型中的对象行为和对象定义分离,并分别建立相应的行为集合和对象集合;
B、以所述行为集合和对象集合为参数定义一个静态的事务接口,并根据实际业务场景需要选择并组合所述静态的事务接口中的各种行为和对象,动态地构造满足所述实际业务场景需要的具体事务接口。
所述的步骤A具体包括:
将面向对象模型中对象类的与接口操作直接相关的属性组成对象类定义,将面向对象模型中所有对象类定义合并在一起组成静态的对象集合;
将面向对象模型中对象类的与接口操作直接相关的行为组成对象类行为,将面向对象模型中所有对象类行为合并在一起组成静态的行为集合。
所述的对象集合中可动态选择和组合的对象个数为0个或多个;所述的行为集合中可动态选择和组合的行为个数为0个或多个。
所述的步骤B具体包括:
B1、以所述行为集合和对象集合的元素为参数类型定义一个静态的粗颗粒的事务接口,在该事务接口中定义控制事务处理方式的参数;
B2、根据实际业务场景需要选择并组合所述事务接口中的各种行为和对象,并选择相应的控制事务处理方式的参数,根据该行为和对象以及控制事务处理方式的参数来动态地构造满足所述实际业务场景需要的具体接口。
所述的控制事务处理方式包括:原子atomic方式和最佳效果bestEffort方式,其中,
atomic的事务处理方式要求接口执行方在处理通过该接口请求的事务过程中,所有事务操作中只要有一个操作执行不成功,则前面已经执行的所有操作都将进行回滚,并返回失败结果给接口调用方;
bestEffort的事务处理方式要求接口执行方在处理通过该接口请求的事务过程中,当该事务操作中存在执行不成功的操作时,只要该执行不成功的操作不影响该事务的后续操作的处理,则继续执行该事务的后续操作,并返回成功或部分处理失败的结果给接口调用方。
所述的步骤B2具体包括:
针对某个实际业务场景,在所述静态的事务接口中选择一个或多个行为和对象的组合来构造满足该业务场景需要的具体接口。
所述的行为集合、对象集合和静态的事务接口通过可扩展标记语言方案XML Scheme或C++或Java来描述。
由上述本发明提供的技术方案可以看出,本发明通过将对象行为和对象定义分离,针对一个管理模型只定义和维护一个静态的Coarse-Grained(粗颗粒)的事务接口,在业务实现时根据不同的业务场景需要灵活动态地选择Action和Objects来组合成满足该场景下业务需求的特定事务接口,从而可以以不变的接口定义来满足复杂多变的接口需要,大大降低了面向对象软件或软件组件间操作接口的复杂性、降低了维护工作量。
利用本发明当软件特性发生变更时不需要变更操作接口,只需要在实现层面调整Action和Objects的组合来适应所变更的软件特性,大大提升了面向对象软件***的接口和软件的扩展能力。
利用本发明定义和维护的一个静态的接口可以动态地描述复杂多变的事务语义、表达复杂的业务逻辑。
利用本发明定义和维护的一个静态的接口,完成一次业务配置双方只需执行一次交互且事务执行失败时执行方可自行回滚,无需请求方进行干涉。
附图说明
图1为本发明所述学生选课***的管理模型的实体关系示意图;
图2为本发明所述学生选课***中,通过操作接口在软件组件之间进行访问的示意图;
图3为本发明所述学生选课***中,通过操作接口在软件***之间进行访问的示意图;
图4为本发明所述方法的实施例的具体处理流程图。
具体实施方式
本发明提供了一种定义面向对象模型的操作接口的方法,本发明的核心为:将对象行为和对象定义分离,只定义和维护一个静态的Coarse-Grained(粗颗粒)的事务接口。
下面结合附图来详细描述本发明所述方法,本发明所述方法的实施例的具体处理流程如图4所示,包括如下步骤:
步骤4-1、将对象行为和对象定义分离,并分别建立相应的行为集合和对象集合。
本发明在定义一个面向对象管理模型的操作接口时,将该面向对象管理模型中的对象行为和对象定义进行分离。即将该面向对象管理模型中的每类对象的所有行为和该类对象的定义进行分离。
然后,将该面向对象管理模型中的所有对象的所有行为合并在一起,组成行为集合。将该面向对象管理模型中的所有对象的定义合并在一起,组成定义集合。
以上述学生选课***为例,可以将管理模型中各个对象类与接口操作直接相关的属性分别收集起来并整理成对象类定义,管理模型中各个对象类的非强制要求出现的属性都可作为可选属性,同时忽略与接口操作不相关的内部属性。由此可得到如下的对象类的定义:
学校(假设由学校名称name、地址位置location及其他属性extendedattribute简单组成):
<xsd:complexType name="School_T">
<xsd:all>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="location"type="xsd:string"minOccurs=0/>
<xsd:element name="extended attribute"type="xsd:any"minOccurs=0/>
</xsd:all>
</xsd:complexType>
学生(假设由名称name、年龄age、性别sex及其他属性extendedattribute简单组成):
<xsd:complexType name="Student_T">
<xsd:all>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="age"type="xsd:integer"minOccurs=0/>
<xsd:element name="sex"type="xsd:string"minOccurs=0/>
<xsd:element name="extended attribute"type="xsd:any"minOccurs=0/>
</xsd:all>
</xsd:complexType>
系(假设由名称name及其他属性extended attribute简单组成):<xsd:complexType name="Department_T">
<xsd:all>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="extended attribute"type="xsd:any"minOccurs=0/>
</xsd:all>
</xsd:complexType>
课程(假设由名称name、学时creditHour及其他属性extended attribute简单组成):
<xsd:complexType name="Course_T">
<xsd:all>
<xsd:element name="name"type="xsd:string"/>
<xsd:element name="creditHour" type="xsd:integer"minOccurs=0/>
<xsd:element name="extended attribute"type="xsd:any"minOccurs=0/>
</xsd:all>
</xsd:complexType>
以上述对象类的实例为参数可以定义如下的对象集合MngObjects,MngObjects中的对象支持0~无数个:<xsd:element name="MngObjects">
<xsd:complexType>
<xsd:all>
<xsd:element name="school" type="School_T"maxOccurs="unbounded"minOccurs="0"/>
<xsd:element name="student" type="Student_T"maxOccurs="unbounded"minOccurs="0"/>
<xsd:element name="department" type="Department_T"maxOccurs="unbounded" minOccurs="0"/>
<xsd:element name="course" type="Course_T"maxOccurs="unbounded" minOccurs="0"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
然后,分析并统计上述管理模型中所有对象类与操作接口直接相关的行为,对于对象类的内部行为不需要搜集,将搜集到的行为整理成行为集合。上述学生选课管理模型中学校、学生、系和课程四个对象类与操作接口直接相关的行为集合可定义为:
<xsd:simpleType name="Action_T">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="create"/>
<xsd:enumeration value="modify"/>
<xsd:enumeration value="delete"/>
<xsd:enumeration value="associate"/>
<xsd:enumeration value="deassociate"/>
</xsd:restriction>
</xsd:simpleType>
步骤4-2、以行为集合和对象集合为参数类型定义一个静态的事务接口,并根据业务场景实际需要选择组合该事务接口中的各种行为和对象。
在分别建立了上述行为集合和对象集合后,然后,以上述行为集合和对象集合为参数类型定义一个静态的Coarse-Grained的事务接口。该静态的Coarse-Grained的事务接口是上述对象管理模型中的唯一的一个接口,可以对应上述对象管理模型中的每类对象的所有行为和该类对象的定义。
在需要根据实际业务场景来构造具体的事务接口时,根据该实际业务场景需要来选择、组合上述静态的Coarse-Grained的事务接口中的各种行为和对象,动态地构造满足该实际业务场景需要的具体事务接口。
因此,在实际应用中,上述静态的Coarse-Grained的事务接口中的行为和对象在软件实现时可以根据不同的实际业务场景来灵活地组合。从而可以满足各种特定场景下各种特定业务需求,进而达到以不变的接口定义来满足复杂多变的接口需要。
下面以上述学生选课***为例来描述上述静态的事务接口。首先可以以上述行为Action集合和对象集合MngObjects的元素为参数定义如下的接口集合actionObjects集合:<xsd:element name="actionObjects">
<xsd:complexType>
<xsd:all>
<xsd:element name="act"type="Action_T"/>
<xsd:element name="objects"ref="MngObjects"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
上述actionObjects集合表明objects集合中的对象可以按顺序执行act行为。act行为中可以包括上述的create、modify、delete、associate和deassociate等操作。
然后,可以以上述MngObjects集合的元素为参数定义如下的静态事务请求接口和静态事务响应接口。
静态事务请求接口transactionRequest可以定义为:
<xsd:element name="transactionRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transactionName"type="xsd:string"/>
<xsd:element name="transactionMethod">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="atomic"/>
<xsd:enumeration value="bestEffort"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element maxOccurs="unbounded"minOccurs="1"ref="actionObjects"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
上述transactionRequest中的参数transactionName用于指定某场景下调用该接口所完成事务的名称。
上述transactionRequest中的参数transactionMethod用于指明接口调用方要求接口执行方是以atomic(原子)的方式还是以bestEffort(最佳效果)方式执行该接口请求。
atomic方式要求接口中描述的事务中的所有操作要么全部都成功执行、要么全部都不执行,即只要所有操作中有一个操作执行不成功,则前面已经执行的所有操作都将进行回滚,并返回失败结果给接口调用方。
bestEffort的事务处理方式要求接口执行方在处理通过该接口请求的事务过程中,当该事务操作中存在执行不成功的操作时,只要该执行不成功的操作不影响该事务的后续操作的处理,则继续执行该事务的后续操作,并返回成功或部分处理失败的结果给接口调用方。
上述transactionRequest中的参数actionObjects用于在实现时根据实际业务场景需要选择上述MngObjects集合中相应的objects和Action_T集合中相应的a ction组合来描述接口。在一个事务请求接口中actionObjects可以有多个,以支持某一事务要求对不同objects执行不同的action。
静态事务响应接口transactionResponse用于描述相应transactionRequest的执行结果,可以定义为:
<xsd:element name="transactionResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="transactionResult"type=”xsd:string”/>
<xsd:element name="actionObjectsResult"type=”xsd:string”maxOccurs="unbounded"minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
上述transactionResponse中的transactionResult参数用于描述请求事务的执行结果(成功、失败或其他具体描述)。
上述transactionResponse中的actionObjectsResult参数用于具体描述请求事务中各个actionObjects的执行情况,具体定义可以根据业务需要来进行。
以上述学生选课***为例,本发明还提供了上述transactionRequest接口的具体实施例。
实施例1:A大学创建计算机系,计算机系开设数据结构、编译原理两门学位课。
针对上述实施例1的实际业务场景,需要在上述行为集合″Action_T″中选择一个行为操作“create”;同时在上述对象类定义中选择相应的对象:系<″Department>、课程<course>,并确定对象系、课程的一些基本属性。同时确定上述实施例1的实际业务场景的事务接口的事务处理方式为bestEffort。
然后,根据上述选择的行为操作和对象,利用上述transactionRequest接口来动态地构造满足上述实施例1的实际业务场景需要的具体事务接口。该具体事务接口可以具体描述为:
<transactionRequest>
<transactionName>创建计算机系和其课程</transactionName>
<transactionMethod>bestEffort</transactionMethod>
<actionObjects>
<act>create</act>
<objects>
<department>
<name>A大学.计算机系</name>
<extended attribute>其它与计算机系相关的属性</extendedattribute>
</department>
<course>
<name>A大学.计算机系.数据结构</name>
<creditHour>85</creditHour>
<extended attribute>其他与数据机构课程相关的属性</extendedattribute>
</course>
<course>
<name>A大学.计算机系.编译原理</name>
<creditHour>100</creditHour>
<extended attribute>其他与编译原理课程相关的属性</extendedattribute>
</course>
</objects>
</actionObjects>
</transactionRequest>
实施例2:张三要加入A校的计算机系,按照上述实施例1中的规定他必须修数据结构、编译原理两门学位课。
针对上述实施例2的实际业务场景,需要在上述行为集合″Action_T″中选择一个行为操作“associate”;同时在上述对象类定义中选择相应的对象:系<″Department>、学生<student>、课程<course>,并确定对象系、学生、课程的一些基本属性。同时确定上述实施例2的实际业务场景的事务接口的事务处理方式为atomic。
然后,对上述选择的行为操作和对象进行组合,利用上述transactionRequest接口来动态地构造满足上述实施例2的实际业务场景需要的具体事务接口。该具体事务接口可以具体描述为:
<transactionRequest>
<transactionName>张三加入计算机系并选择课程</transactionName>
<transactionMethod>atomic</transactionMethod>
<actionObjects>
<act>associate</act>
<objects>
<department>
<name>A大学.计算机系</name>
</department>
<student>
<name>A大学.张三</name>
</student>
</objects>
</actionObjects>
<actionObjects>
<act>associate</act>
<objects>
<student>
<name>A大学.张三</name>
</student>
<course>
<name>A大学.计算机系.数据结构</name>
</cousrse>
<course>
<name>A大学.计算机系.编译原理</name>
</course>
</objects>
</actionObjects>
</transactionRequest>
在上述实施例2的实际业务场景对应的具体事务接口中,针对张三加入计算机系和张三选择课程两个具体行为,使用了两次行为操作associate,进一步说明了本发明提出的上述transactionRequest接口的灵活性。
上述本发明所述方法中使用的XML Scheme可以与其他语言如C++、Java描述的类型定义相互转换,所以,上述本发明所述方法的处理流程也适用于用其他语言如C++、Java等来描述的接口定义方法。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (7)
1、一种定义面向对象模型的操作接口的方法,其特征在于,包括步骤:
A、将面向对象模型中的对象行为和对象定义分离,并分别建立相应的行为集合和对象集合;
B、以所述行为集合和对象集合为参数定义一个静态的事务接口,并根据实际业务场景需要选择并组合所述静态的事务接口中的各种行为和对象,动态地构造满足所述实际业务场景需要的具体事务接口。
2、根据权利要求1所述的方法,其特征在于,所述的步骤A具体包括:
将面向对象模型中对象类的与接口操作直接相关的属性组成对象类定义,将面向对象模型中所有对象类定义合并在一起组成静态的对象集合;
将面向对象模型中对象类的与接口操作直接相关的行为组成对象类行为,将面向对象模型中所有对象类行为合并在一起组成静态的行为集合。
3、根据权利要求2所述的方法,其特征在于,所述的对象集合中可动态选择和组合的对象个数为0个或多个;所述的行为集合中可动态选择和组合的行为个数为0个或多个。
4、根据权利要求1、2或3所述的方法,其特征在于,所述的步骤B具体包括:
B1、以所述行为集合和对象集合的元素为参数类型定义一个静态的粗颗粒的事务接口,在该事务接口中定义控制事务处理方式的参数;
B2、根据实际业务场景需要选择并组合所述事务接口中的各种行为和对象,并选择相应的控制事务处理方式的参数,根据该行为和对象以及控制事务处理方式的参数来动态地构造满足所述实际业务场景需要的具体接口。
5、根据权利要求4所述的方法,其特征在于,所述的控制事务处理方式包括:原子atomic方式和最佳效果bestEffort方式,其中,
atomic的事务处理方式要求接口执行方在处理通过该接口请求的事务过程中,所有事务操作中只要有一个操作执行不成功,则前面已经执行的所有操作都将进行回滚,并返回失败结果给接口调用方;
bestEffort的事务处理方式要求接口执行方在处理通过该接口请求的事务过程中,当该事务操作中存在执行不成功的操作时,只要该执行不成功的操作不影响该事务的后续操作的处理,则继续执行该事务的后续操作,并返回成功或部分处理失败的结果给接口调用方。
6、根据权利要求4所述的方法,其特征在于,所述的步骤B2具体包括:
针对某个实际业务场景,在所述静态的事务接口中选择一个或多个行为和对象的组合来构造满足该业务场景需要的具体接口。
7、根据权利要求1所述的方法,其特征在于,所述的行为集合、对象集合和静态的事务接口通过可扩展标记语言方案XML Scheme或C++或Java来描述。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101099861A CN100410877C (zh) | 2006-08-25 | 2006-08-25 | 定义面向对象模型的操作接口的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006101099861A CN100410877C (zh) | 2006-08-25 | 2006-08-25 | 定义面向对象模型的操作接口的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1912830A true CN1912830A (zh) | 2007-02-14 |
CN100410877C CN100410877C (zh) | 2008-08-13 |
Family
ID=37721773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101099861A Active CN100410877C (zh) | 2006-08-25 | 2006-08-25 | 定义面向对象模型的操作接口的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100410877C (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013087008A1 (zh) * | 2011-12-14 | 2013-06-20 | ***股份有限公司 | 基于分层结构的应用模型生成装置及方法 |
CN105094846A (zh) * | 2015-08-21 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 数据处理方法、***及其事件驱动模型建立方法和*** |
CN109710235A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种基于Java智能合约业务逻辑的事务实现***及方法 |
CN112394927A (zh) * | 2020-12-08 | 2021-02-23 | 上海数设科技有限公司 | 一种产品模型的增维形态和模型定义方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822587A (en) * | 1995-10-20 | 1998-10-13 | Design Intelligence, Inc. | Method and system for implementing software objects |
US6332210B1 (en) * | 1998-12-22 | 2001-12-18 | Litton Systems, Inc. | Method of creating and using system-independent software components |
EP1260911A1 (fr) * | 2001-04-27 | 2002-11-27 | Koninklijke Philips Electronics N.V. | Structure de données interne pour application destinée à s'interfacer avec une interface pour un document de type HTML ou XML |
CN1648860A (zh) * | 2005-03-02 | 2005-08-03 | 优网通国际资讯股份有限公司 | 用户接口在各种整合开发环境共用及转换的开发方法 |
-
2006
- 2006-08-25 CN CNB2006101099861A patent/CN100410877C/zh active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013087008A1 (zh) * | 2011-12-14 | 2013-06-20 | ***股份有限公司 | 基于分层结构的应用模型生成装置及方法 |
US9239720B2 (en) | 2011-12-14 | 2016-01-19 | China Unionpay Co., Ltd. | Device and method for generating application model based on layered structure |
CN105094846A (zh) * | 2015-08-21 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 数据处理方法、***及其事件驱动模型建立方法和*** |
CN109710235A (zh) * | 2018-12-29 | 2019-05-03 | 杭州趣链科技有限公司 | 一种基于Java智能合约业务逻辑的事务实现***及方法 |
CN109710235B (zh) * | 2018-12-29 | 2022-04-01 | 杭州趣链科技有限公司 | 一种基于Java智能合约业务逻辑的事务实现***及方法 |
CN112394927A (zh) * | 2020-12-08 | 2021-02-23 | 上海数设科技有限公司 | 一种产品模型的增维形态和模型定义方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100410877C (zh) | 2008-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1097795C (zh) | 结构式文件处理方法和装置 | |
CN1318163A (zh) | 可选择性定义对应用程序功能部件访问的***和方法 | |
CN1501285A (zh) | 排版***、排版程序和排版方法 | |
CN1522006A (zh) | 数字传送网上不同的数据帧接入和传送的***和方法 | |
CN1870523A (zh) | 网络设备配置***和方法 | |
CN1172239C (zh) | 执行移动对象的方法 | |
CN1290889A (zh) | 程序对象的串行化和解串行的版本适应 | |
CN1431800A (zh) | 内容自适应服务控制*** | |
CN101030138A (zh) | 应用构架 | |
CN1534504A (zh) | 利用单处理器操作***的并行处理***及并行处理程序 | |
CN1955956A (zh) | 基于bpel的图形与xml文档相互转换的方法 | |
CN1416276A (zh) | 中间数据接收装置、方法、程序和记录媒体以及发送装置、传输方法 | |
CN1776621A (zh) | 程序变换方法 | |
CN1889039A (zh) | 基于xml实现通用浏览器工具条的方法 | |
CN1662864A (zh) | 传送用于指定知识产权管理与保护工具的信息的方法 | |
CN1809829A (zh) | 数据库装置和作成方法、数据库检索装置及检索方法 | |
CN1799048A (zh) | 通用数据库模式 | |
CN1046360C (zh) | 说明用户接口的方法及运行多用户接口型计算机的编程*** | |
CN1912830A (zh) | 定义面向对象模型的操作接口的方法 | |
CN1545303A (zh) | 承载和控制相分离的通信网络中多方会议业务的实现方法 | |
CN1471026A (zh) | 排版***和排版程序以及排版方法 | |
CN1199198A (zh) | 调节规则生成方法和调节规则生成设备以及调节控制设备 | |
CN1237731A (zh) | 数据处理方法、记录介质及数据处理设备 | |
CN1968120A (zh) | 一种管理群组信息的方法和*** | |
CN1928904A (zh) | 一种具有丰富业务语义的工作流模型结构 |
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 |