一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于动态代理的模型驱动实现的动态交互系统和方法与流程

2022-02-22 09:57:37 来源:中国专利 TAG:


1.本发明涉及一种基于动态代理的模型驱动实现的动态交互系统和方法,属于计算机信息处理技术领域。


背景技术:

2.在计算机领域,软件系统间的交互技术已经取得快速地发展,并且由静态交互系统逐渐发展到动态交互系统。
3.由于不同软件系统的组件数量较多、内部处理逻辑复杂以及实现语言的限制,导致在各个系统之间耦合更加严重,系统出现大量冗余代码和复杂的处理逻辑,增加了系统的维护难度。
4.如何在克服以上问题的基础上,设计出更合理的动态交互系统和方法,是本领域技术人员急需要解决的技术问题。


技术实现要素:

5.目的:为了克服现有软件系统技术中存在的不足,本发明提供一种基于动态代理的模型驱动实现的动态交互系统和方法。
6.技术方案:为解决上述技术问题,本发明采用的技术方案为:第一方面,一种基于动态代理的模型驱动实现的动态交互系统,包括:事件接收单元、组件逻辑控制单元、组件管理单元、组件动态代理生成单元、组件实例容器单元,组件元数据单元。
7.事件接收单元,捕获组件的触发请求,根据组件的触发请求获取组件编码索引、组件接口方法。
8.组件元数据单元,存储多个组件的元数据信息、组件实例名称与组件编码索引。所述元数据信息包括:组件之间的调用逻辑关系、组件接口方法和组件接口参数。
9.组件逻辑控制单元,根据组件编码索引从组件元数据单元中获取元数据信息,根据组件接口方法获取对应的组件之间的调用逻辑关系和组件接口参数。
10.件实例容器单元,在系统启动时,对组件进行实例化,以组件编码索引作为实例的索引名,以组件实例名称作为索引值建立索引。
11.组件管理单元,根据组件编码索引从组件元数据单元获取该组件的组件实例名称,根据组件接口方法从组件逻辑控制单元获取该组件的组件之间的调用逻辑关系,再根据组件之间的调用逻辑关系从组件实例容器单元中获取相关联的实例,根据相关联的实例对组件实例名称对应的组件实例的进行初始化,得到初始化后的组件实例。
12.组件动态代理生成单元,根据初始化后的组件实例、组件接口方法生成组件的动态代理对象,根据组件接口方法对应的组件接口参数执行动态代理对象返回调用结果。
13.作为优选方案,组件编码索引采用唯一编码值,通过组件编码索引获取组件实例名称,对应组件的元数据信息。
14.第二方面,一种基于动态代理的模型驱动实现的动态交互方法,包括如下步骤:接受事件触发请求对应的组件编码索引、组件接口方法。
15.根据组件编码索引获取组件实例名称,根据组件接口方法获取对应的组件之间的调用逻辑关系和组件接口参数;根据组件之间的调用逻辑关系获取组件有逻辑关系的实例,根据组件有逻辑关系的实例对组件实例名称对应的组件实例进行初始化,得到初始化后的组件实例。
16.根据初始化后的组件实例和组件接口方法生成组件的动态代理对象。
17.根据组件接口方法对应的组件接口参数,执行组件的动态代理对象并返回调用结果。
18.作为优选方案,所述实例均在系统启动时,将系统中所有的组件进行实例化,并且以组件编码索引为索引名,组件实例名称为索引值对所有的组件实例建立索引。
19.作为优选方案,所述有逻辑关系的实例组件数量至少是一个。
20.作为优选方案,所述组件接口方法为不少于一个组件所共同具有的方法。
21.有益效果:本发明提供的一种基于动态代理的模型驱动实现的动态交互系统和方法,无需使用硬编码的方式与其他系统进行交互,而是通过组件管理单元按照组件元数据的唯一编码,查询在组件实例容器中已经实例化的组件并按照业务逻辑创建一个组件的动态代理,将对组件之间的交互通过动态代理来实现,实现了与各个系统之间的解耦,极大的简化系统的复杂度,使得系统更加灵活可用,并且对代码进行复用,避免了大量重复的代理,减轻维护人员的负担和维护复杂度。
附图说明
22.图1为组件管理容器结构示意图。
23.图2为基于动态代理的模型驱动实现的动态交互方法流程示意图。
24.图3为组件调用过程示意图。
25.图4为本实施例动态交互示意图。
具体实施方式
26.下面结合具体实施例对本发明作更进一步的说明。
27.实施例1:如图1所示,本实例所述的基于动态代理的模型驱动实现的动态交互系统,包括:事件接收单元、组件逻辑控制单元、组件管理单元、组件动态代理生成单元、组件实例容器单元,组件元数据单元。
28.(1)事件接收单元,捕获组件的触发请求,根据组件的触发请求获取组件编码索引、组件接口方法。
29.(2)组件元数据单元,存储多个组件的元数据信息、组件实例名称与组件编码索引。所述元数据信息包括:组件之间的调用逻辑关系、组件接口方法和组件接口参数。
30.其中,组件编码索引是以组件唯一编码值作为索引值,组件实例名称为索引值,可以通过组件唯一编码值获取到唯一的组件实例名称,通过组件唯一编码值获取到组件的元数据信息。
31.(3)组件逻辑控制单元,根据组件编码索引从组件元数据单元中获取元数据信息,根据组件接口方法获取对应的组件之间的调用逻辑关系和组件接口参数。
32.(4)组件实例容器单元,在系统启动时,对组件进行实例化,以组件编码索引作为实例的索引名,以组件实例名称作为索引值建立索引。
33.(5)组件管理单元,根据组件编码索引从组件元数据单元获取该组件的组件实例名称,根据组件接口方法从组件逻辑控制单元获取该组件的组件之间的调用逻辑关系,再根据组件之间的调用逻辑关系从组件实例容器单元中获取相关联的实例,根据相关联的实例对组件实例名称对应的组件实例的进行初始化,得到初始化后的组件实例。
34.(6)组件动态代理生成单元,根据初始化后的组件实例、组件接口方法生成组件的动态代理对象,根据组件接口方法对应的组件接口参数执行动态代理对象返回调用结果。
35.如图2所示,本实施例中基于动态代理的模型驱动实现的动态交互方法,包括如下步骤:s1,组件实例容器单元在系统启动时实例化系统中所有的组件,并且以组件编码索引为索引名,组件实例名称为索引值对所有的组件实例建立索引。
36.s2,事件接收单元接受事件触发请求对应的组件编码索引、组件接口方法。
37.s3,组件管理单元从根据步骤s2中获取的组件编码索引从组件实例容器单元获取组件实例名称;根据组件接口方法从组件逻辑控制单元中获取组件接口方法对应的组件之间的调用逻辑关系和组件接口参数;根据组件之间的调用逻辑关系获取组件有逻辑关系的实例,其中,与所述组件有逻辑关系的实例数量为一个或者多个。根据组件有逻辑关系的实例对组件实例名称对应的实例进行初始化,得到初始化后的组件实例。
38.s4,动态代理生成单元根据步骤s3中获取的初始化后的组件实例和组件接口方法生成组件的动态代理对象,其中,组件接口方法为动态代理方法内部执行的逻辑。组件接口方法为不少于一个组件所共同具有的行为,与现有系统中所有的组件都要向外暴露一个相同的组件接口方法不同之处在于,在本发明中,系统只有一个相同的组件接口方法对外提供服务,对其他组件进行该组件接口方法的调用,都由本动态代理对象提供服务。
39.s5,根据s4中生成的动态代理对象,并根据组件逻辑控制单元中获取组件接口方法对应的组件接口参数,执行动态代理对象并返回调用结果,如图3所示。
40.实施例2:在实际应用中,电力系统的一次设备与二次设备的管理系统中,各个运维单位下的设备种类很多,可能是几百或者上千种,设备的数量更是几十万甚至上百万级别。对于这样一个种类多,数量大的设备的管理系统,设备之间的交互的现有实现方法是十分复杂与繁琐的。一个设备具有的行为,对于其他设备来说,其基本功能也是相同的,例如,电力系统中的设备都会具有一个新增和退役的行为。如果对这样一个行为个性基本相同,但是种类较多的设备管理系统,为每个设备都生成一个对应的组件和组件的方法并且对外提供服务,系统将会变成十分的复杂与冗余。根据本文提出的方法,可以如下实施,如图4所示:1、系统启动时,组件实例容器单元生成所有组件的实例,例如低压变电站,建立组件唯一编码值0001为索引名、以低压变电站实例为索引值建立索引。
41.2、事件接收单元接收触发请求对应的组件编码索引0001、以及对应的组件接口方法,例如低压变电站对应名称为save方法。
42.3、组件管理单元根据步骤2中获取的组件编码索引0001,从组件容器实例单元中获取0001对应的组件低压变电站实例,根据save方法获取对应的组件之间的调用逻辑关系,通过组件之间的调用逻辑关系获取低压变电站相关的组件实例,例如电压等级、运维单位、起始开关等相关的组件实例,根据电压等级、运维单位、起始开关等相关组件实例对组件低压变电站实例进行初始化。
43.4、组件动态代理生成单元根据步骤3中获取初始化后的低压变电站实例和save方法,生成低压变电站的动态代理单元。
44.其中,save方法为大部分电力设备所共同具有的保存行为,与现有系统中所有的组件向外暴露一个save方法不同,在本发明中,系统只有一个save方法对外提供服务,对其他组件接口进行save方法的调用,都由低压变电站的动态代理对象提供服务。
45.5、根据事件接收单元的请求的save方法获取对应的组件接口参数,根据组件接口参数执行步骤4中生成的低压变电站动态代理对象中save方法并返回调用结果。
46.以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献