CN105022626B - 基于模型驱动的利用反射机制进行动态交互的系统及方法 - Google Patents
基于模型驱动的利用反射机制进行动态交互的系统及方法 Download PDFInfo
- Publication number
- CN105022626B CN105022626B CN201510289029.0A CN201510289029A CN105022626B CN 105022626 B CN105022626 B CN 105022626B CN 201510289029 A CN201510289029 A CN 201510289029A CN 105022626 B CN105022626 B CN 105022626B
- Authority
- CN
- China
- Prior art keywords
- component
- assembly
- instance
- information
- assembly management
- 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.)
- Active
Links
Abstract
本发明公开了一种基于模型驱动的利用反射机制进行动态交互的系统及方法,涉及计算机信息技术领域。该系统包括一个组件管理容器和与所述组件管理容器关联的多个组件;每个所述组件的元数据信息和与其他组件之间的调用逻辑关系存储在所述组件管理容器中。该方法通过组件管理容器按照组件元数据信息进行查找和创建组件,把组件之间的直接交互通过组件管理容器调用,实现组件之间的交互。本发明组件构件之间的非侵入性和组件解耦等问题,大大降低了组件之间的依赖性和硬编码,减少了代码集成工作量。
Description
技术领域
本发明涉及计算机信息技术领域,尤其涉及一种基于模型驱动的利用反射机制进行动态交互的系统及方法。
背景技术
组件是对数据和方法的简单封装。在计算机技术领域,组件之间的交互技术已经发展了很多年。组件的交互技术已经从静态交互发展到动态交互,但是通常因为组件本身以及组件的实现方式和实现语言的不同而导致组件间的交互区别很大,而在现有客户端界面中,组件的调用和交互方式通常被固化在程序逻辑中,这又造成编写组件的代码非常繁琐,组件的重用性低且组件之间的依赖性高的问题。
发明内容
本发明的目的在于提供一种基于模型驱动的利用反射机制进行动态交互的系统及方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明所述基于模型驱动的利用反射机制进行动态交互的系统,所述系统包括:
一个组件管理容器和与所述组件管理容器关联的多个组件;
每个所述组件的元数据信息和与其他组件之间的调用逻辑关系存储在所述组件管理容器中;
所述组件管理容器负责产生每个组件的组件实例,并根据每个组件的调用逻辑关系查找和创建组件实例;在组件间交互逻辑和组件元数据信息描述的基础上,动态调用和组织与组件实例相关的组件中存储的方法。
优选地,所述组件管理容器包括:组件逻辑控制模块、组件管理中心、事件管理器、组件生成器、组件包装器;
组件逻辑控制模块,根据组件间交互逻辑和驱动模型,获取与发出事件触发请求的组件A有逻辑关系的组件实例;
组件管理中心,用于读取所述组件A的元数据信息和与所述组件A存在逻辑关系的组件信息;
事件管理器,用于接收所述组件A发出的事件触发请求并获取所述组件A中触发相应事件的参数信息;
所述参数信息包括:方法和参数;
组件生成器,根据组件元数据信息生成每个组件的组件实例;
组件包装器,用于包装与所述组件A有逻辑关系且产生所述事件触发请求所触发的事件类型的组件所产生的组件实例。
更优选地,所述驱动模型包括所有组件驱动唯一序列号表、组件元数据管理信息表和组件方法管理表,所述所有组件驱动唯一序列号表、所述组件元数据管理信息表和所述组件方法管理表通过组件的唯一序列号关联。
本发明所述基于模型驱动的利用反射机制进行动态的交互方法,该方法包括:
S1,事件管理器接收组件A发出的事件触发请求;
S2,在所述驱动模型的基础上,组件管理中心获取与所述组件A有逻辑关系且与所述事件触发请求触发的事件类型相对应的组件的信息;
S3,判断所述组件管理容器内部是否存储与所述组件相对应的组件实例,如果存在,则进入S4;如果不存在,则进入S5;
S4,组件生成器获取所述组件实例,组件包装器反射调用与所述组件实例相相关联的组件中存储的方法;
S5,组件生成器调用产生所述组件实例的方法,创建所述组件实例,组件包装器依据所述组件实例反射调用与所述组件实例相关联的组件中存储的方法。
优选地,在步骤S1之前还存在以下步骤:
组件管理容器中预先存储与所述组件管理容器连接的各个组件的描述信息和各个组件的逻辑关系信息,同时,组件管理容器中的组件逻辑控制模块依据组件逻辑关系信息和组件描述信息产生组件实例,并将所述组件实例存储在组件容器的存储单元中。
优选地,步骤S1具体按照下述方法实现:
A1,所述事件管理器捕获组件A发出的事件触发请求;
A2,从组件A中,获取与触发事件类型相关联的方法及参数;
A3,将所述事件触发请求触发的事件类型和获取的与触发事件类型相关联的方法及参数,发送给所述组件管理中心的事件管理器。
优选地,步骤S2具体按照下述方法实现:
B1,所述组件管理中心中的驱动模型依据组件A的元数据信息和组件A中与触发事件类型相关联的方法及参数,在元模型中读取与组件A有逻辑驱动关系的组件集合和/或组件方法集合;
B2,在所述组件集合和/或组件方法集合中,依据所述事件类型查找与产生所述事件类型相对应的组件;
B3,从元模型中读取所述组件的元数据信息;
优选地,步骤S2中,与所述事件触发请求触发的事件类型相对应的组件的数量为1个或多个。
本发明的有益效果是:
本发明提出了基于模型驱动的利用反射机制进行动态交互方法,它不需要显性硬编码组件之间的调用和交互,而是通过组件管理容器按照组件元数据信息进行查找和创建组件,把组件之间的直接交互通过组件管理容器调用来进行,这种实现方法简单,解决组件构件之间的非侵入性和组件解耦等问题,大大降低了组件之间的依赖性和硬编码,减少了代码集成工作量,在项目的具体实施中可得到了非常好的效果。
附图说明
图1是组件管理容器生成组件实例的原理示意图;
图2是组件管理容器的结构示意图;
图3是基于模型驱动的利用反射机制进行动态交互方法流程示意图;
图4是所有组件驱动唯一序列号表示意图;
图5是组件元数据管理信息表示意图;
图6是组件方法管理表示意图;
图7是现有组件调用技术中组件静态调用模型示意图;
图8是本发明组件调用模型示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
实施例
参照图1和图2,本实施例中所述基于模型驱动的利用反射机制进行动态交互的系统,所述系统包括:一个组件管理容器和与所述组件管理容器关联的多个组件;每个所述组件的元数据信息和与其他组件之间的调用逻辑关系存储在所述组件管理容器中;所述组件管理容器负责产生每个组件的组件实例,并根据每个组件的调用逻辑关系查找和创建组件实例;在组件间交互逻辑和组件元数据信息描述的基础上,动态调用和组织与组件实例相关的组件中存储的方法。关于组件管理容器更详细的说明如下:
所述组件管理容器包括:组件逻辑控制模块、组件管理中心、事件管理器、组件生成器、组件包装器;
(1)、组件逻辑控制模块,根据组件间交互逻辑和驱动模型,获取与发出事件触发请求的组件A有逻辑关系的组件实例;所述驱动模型包括所有组件驱动唯一序列号表、组件元数据管理信息表和组件方法管理表,所述所有组件驱动唯一序列号表、所述组件元数据管理信息表和所述组件方法管理表通过组件的唯一序列号关联;
其中,所述所有组件驱动唯一序列号表包括每个组件的唯一序列号、唯一驱动序列号、该组件可生成的组件实例ID、目标组件实例的ID、该组件的驱动方式和驱动事件的类型,参照图4。
所述组件元数据管理信息表包括:每个组件的唯一序列号、组件名称、实现类型、运行环境、分类、开放语言、组件版本、开发者、开发日期、是否可视、组件的长宽高和组件地址,参照图5。
所述组件方法管理表包括:每个组件的唯一序列号、组件中存储的方法ID,方法的名称、对方法的描述、是否返回值及返回值的类型,参照图6。
(2)、组件管理中心,用于读取所述组件A的元数据信息和与所述组件A存在逻辑关系的组件信息。
(3)、事件管理器,用于接收所述组件A发出的事件触发请求并获取所述组件A中触发相应事件的参数信息;所述参数信息包括触发相应时间的方法和参数。
(4)、组件生成器,根据组件元数据信息生成每个组件的组件实例,在本实施例中一个组件对应一个组件实例,这使得组件管理中心可以快速的调用或查找组件。
(5)、组件包装器,用于包装与所述组件A有逻辑关系且产生所述事件触发请求所触发的事件类型的组件所产生的组件实例。
参照图3,本实施例中基于模型驱动的利用反射机制进行动态交互系统的交互方法,该方法包括:
S1,事件管理器接收组件A发出的事件触发请求,具体按照下述方法实现:
A1,所述事件管理器捕获组件A发出的事件触发请求;
A2,从组件A中,获取与触发事件类型相关联的方法及参数;
A3,将所述事件触发请求触发的事件类型和获取的与触发事件类型相关联的方法及参数,发送给所述组件管理中心的事件管理器;
S2,在所述驱动模型的基础上,组件管理中心获取与所述组件A有逻辑关系且与所述事件触发请求触发的事件类型相对应的组件的信息;其中,与所述事件触发请求触发的事件类型相对应的组件的数量为1个或多个。
S3,判断所述组件管理容器内部是否存储与所述组件相对应的组件实例,如果存在,则进入S4;如果不存在,则进入S5;
S4,组件生成器获取所述组件实例,组件包装器反射调用与所述组件实例相相关联的组件中存储的方法;
S5,组件生成器调用产生所述组件实例的方法,创建所述组件实例,组件包装器依据所述组件实例反射调用与所述组件实例相关联的组件中存储的方法。
本实施例中,在步骤S1之前还存在以下步骤:组件管理容器中预先存储与所述组件管理容器连接的各个组件的描述信息和各个组件的逻辑关系信息,同时,组件管理容器中的组件逻辑控制模块依据组件逻辑关系信息和组件描述信息产生组件实例,并将所述组件实例存储在组件容器的存储单元中。
本实施例中,步骤S2具体按照下述方法实现:
B1,所述组件管理中心中的驱动模型依据组件A的元数据信息和组件A中与触发事件类型相关联的方法及参数,在元模型中读取与组件A有逻辑驱动关系的组件集合和/或组件方法集合;
B2,在所述组件集合和/或组件方法集合中,依据所述事件类型查找与产生所述事件类型相对应的组件;
B3,从元模型中读取所述组件的元数据信息;
图7是现有组件调用技术中静态组件调用的交互示意图,这种组件交互方法组件之间的耦合性很强,图8是本发明所述基于模型驱动的利用反射机制进行动态交互,只通过传递组件A中Fun_a方法名和需要调用的组件B的Fun_b的方法名,得到了同样的效果。本发明组件之间的交互同时被传递到容器层面统一进行管理,与现有的静态组件调用交互相比,降低了组件之间的硬编码和耦合性。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明提出了基于模型驱动的利用反射机制进行动态交互方法,它不需要显性硬编码组件之间的调用和交互,而是通过组件管理容器按照组件元数据信息进行查找和创建组件,把组件之间的直接交互通过组件管理容器调用来进行,这种实现方法简单,解决组件构件之间的非侵入性和组件解耦等问题,大大降低了组件之间的依赖性和硬编码,减少了代码集成工作量,在项目的具体实施中可得到了非常好的效果。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (2)
1.一种基于模型驱动的利用反射机制进行动态交互的系统,其特征在于,所述系统包括:
一个组件管理容器和与所述组件管理容器关联的多个组件;
每个所述组件的元数据信息和与其他组件之间的调用逻辑关系存储在所述组件管理容器中;
所述组件管理容器负责产生每个组件的组件实例,并根据每个组件的调用逻辑关系查找和创建组件实例;在组件间交互逻辑和组件元数据信息描述的基础上,动态调用和组织与组件实例相关的组件中存储的方法;
所述组件管理容器包括:组件逻辑控制模块、组件管理中心、事件管理器、组件生成器、组件包装器;
组件逻辑控制模块,根据组件间交互逻辑和驱动模型,获取与发出事件触发请求的组件A有逻辑关系的组件实例;
组件管理中心,用于读取所述组件A的元数据信息和与所述组件A存在逻辑关系的组件信息;
事件管理器,用于接收所述组件A发出的事件触发请求并获取所述组件A中触发相应事件的参数信息;
所述参数信息包括:方法和参数;
组件生成器,根据组件元数据信息生成每个组件的组件实例;
组件包装器,用于包装与所述组件A有逻辑关系且产生所述事件触发请求所触发的事件类型的组件所产生的组件实例;
所述驱动模型包括所有组件驱动唯一序列号表、组件元数据管理信息表和组件方法管理表,所述所有组件驱动唯一序列号表、所述组件元数据管理信息表和所述组件方法管理表通过组件的唯一序列号关联。
2.一种如权利要求1所述基于模型驱动的利用反射机制进行动态交互的系统的交互方法,其特征在于,该方法包括:
S1,事件管理器接收组件A发出的事件触发请求;
S2,在所述驱动模型的基础上,组件管理中心获取与所述组件A有逻辑关系且与所述事件触发请求触发的事件类型相对应的组件的信息;
S3,判断所述组件管理容器内部是否存储与所述组件相对应的组件实例,如果存在,则进入S4;如果不存在,则进入S5;
S4,组件生成器获取所述组件实例,组件包装器反射调用与所述组件实例相关联的组件中存储的方法;
S5,组件生成器调用产生所述组件实例的方法,创建所述组件实例,组件包装器依据所述组件实例反射调用与所述组件实例相关联的组件中存储的方法;在步骤S1之前还存在以下步骤:
组件管理容器中预先存储与所述组件管理容器连接的各个组件的描述信息和各个组件的逻辑关系信息,同时,组件管理容器中的组件逻辑控制模块依据组件逻辑关系信息和组件描述信息产生组件实例,并将所述组件实例存储在组件容器的存储单元中;
步骤S1具体按照下述方法实现:
A1,所述事件管理器捕获组件A发出的事件触发请求;
A2,从组件A中,获取与触发事件类型相关联的方法及参数;
A3,将所述事件触发请求触发的事件类型和获取的与触发事件类型相关联的方法及参数,发送给所述组件管理中心的事件管理器;
步骤S2具体按照下述方法实现:
B1,所述组件管理中心中的驱动模型依据组件A的元数据信息和组件A中与触发事件类型相关联的方法及参数,在元模型中读取与组件A有逻辑驱动关系的组件集合和/或组件方法集合;
B2,在所述组件集合和/或组件方法集合中,依据所述事件类型查找与产生所述事件类型相对应的组件;
B3,从元模型中读取所述组件的元数据信息;
步骤S2中,与所述事件触发请求触发的事件类型相对应的组件的数量为1个或多个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510289029.0A CN105022626B (zh) | 2015-05-29 | 2015-05-29 | 基于模型驱动的利用反射机制进行动态交互的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510289029.0A CN105022626B (zh) | 2015-05-29 | 2015-05-29 | 基于模型驱动的利用反射机制进行动态交互的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105022626A CN105022626A (zh) | 2015-11-04 |
CN105022626B true CN105022626B (zh) | 2018-08-03 |
Family
ID=54412617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510289029.0A Active CN105022626B (zh) | 2015-05-29 | 2015-05-29 | 基于模型驱动的利用反射机制进行动态交互的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105022626B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797845B (zh) * | 2016-09-07 | 2021-06-15 | 华为技术有限公司 | 用于访问容器的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101126979A (zh) * | 2007-06-08 | 2008-02-20 | 北京大学 | 应用服务器公共服务松耦合接入方法 |
CN101266542A (zh) * | 2008-02-01 | 2008-09-17 | 中国建设银行股份有限公司 | 一种在容器中装载组件的方法及装置 |
CN102360308A (zh) * | 2011-09-29 | 2012-02-22 | 用友软件股份有限公司 | 组件的分布式部署系统和方法 |
-
2015
- 2015-05-29 CN CN201510289029.0A patent/CN105022626B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101126979A (zh) * | 2007-06-08 | 2008-02-20 | 北京大学 | 应用服务器公共服务松耦合接入方法 |
CN101266542A (zh) * | 2008-02-01 | 2008-09-17 | 中国建设银行股份有限公司 | 一种在容器中装载组件的方法及装置 |
CN102360308A (zh) * | 2011-09-29 | 2012-02-22 | 用友软件股份有限公司 | 组件的分布式部署系统和方法 |
Non-Patent Citations (2)
Title |
---|
基于元数据引擎的IOC组件容器设计;边小凡;《计算机工程与设计》;20090616(第11期);第2718-2720页 * |
轻量级MTIoC容器的研究与设计;娄锋;《中国优秀硕士学位论文全文数据库》;20061215(第12期);第20-53页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105022626A (zh) | 2015-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mahbub et al. | A framework for requirents monitoring of service based systems | |
Sun et al. | Modeling and verifying hierarchical real-time systems using stateful timed CSP | |
CN100550010C (zh) | 用于将应用程序与基于项的存储平台接口的系统和方法 | |
US7873940B2 (en) | Providing packages for configuring software stacks | |
TWI724570B (zh) | 資料結構的讀取及更新方法、裝置、電子設備及儲存媒體 | |
Cerone et al. | Algebraic laws for weak consistency | |
CN106951371B (zh) | 一种基于依赖注入的安卓应用半自动化测试方法 | |
Song et al. | Instant and incremental QVT transformation for runtime models | |
CN104169902A (zh) | 同步本地和远程数据 | |
CN105955845A (zh) | 一种数据恢复方法及装置 | |
CN109684097A (zh) | 一种基于cmsp的json数据解析与存储方法 | |
US7933863B2 (en) | Database system and method for managing a database | |
CN105022626B (zh) | 基于模型驱动的利用反射机制进行动态交互的系统及方法 | |
CN106250165A (zh) | 应用程序组件管理方法及系统 | |
Del Vescovo | The modular structure of an ontology: Atomic Decomposition and its applications | |
Rouces et al. | Representing Specialized Events with FrameBase. | |
CN107704548A (zh) | 一种存储介质和对象数据的存储方法、装置及设备 | |
Breu et al. | Moveing forward: Towards an architecture and processes for a living models infrastructure | |
Hodges | Coding in Delphi | |
Ramsokul et al. | Aseha: A framework for modelling and verification ofweb services protocols | |
US9990274B2 (en) | Testing integrated business systems | |
Gupta | Java EE 6 Pocket Guide: A Quick Reference for Simplified Enterprise Java Development | |
Michiels et al. | A layered architecture sustaining model-driven and event-driven software development | |
Senthil et al. | An improved component model for component based software engineering | |
Hoff | C++ coding standard |
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 | ||
CP03 | Change of name, title or address |
Address after: No. 197-2, Jiyun Road, Karamay District, Karamay City, Xinjiang Uygur Autonomous Region 834000 Patentee after: HONGYOU SOFTWARE Co.,Ltd. Address before: 22 Changzheng Road, Karamay, Xinjiang Uygur Autonomous Region 834000 Patentee before: KARAMAY HONGYOU SOFTWARE Co.,Ltd. |
|
CP03 | Change of name, title or address |