一种反射式面向对象仿真引擎的制作方法

文档序号:6485751阅读:286来源:国知局
一种反射式面向对象仿真引擎的制作方法
【专利摘要】本发明提供一种反射式面向对象仿真引擎,包括门户层、内核服务层和支撑层,其中,门户层提供连接应用层的各种仿真应用的接口和服务,该接口包括基于面向对象接口、MVC的接口和面向方面的接口;内核服务层构建在反射式对象语义模型上,提供组件管理、对象管理、事件管理和调度管理服务;支撑层通过底层中间件桥接器与服务层中包括管理服务的仿真框架连接,用于实现底层的支撑服务与核心服务的桥接,以使核心服务与底层设施隔离。
【专利说明】一种反射式面向对象仿真引擎
【技术领域】
[0001]本发明涉及计算机交互仿真技术,更具体地,涉及一种反射式面向对象仿真引擎。【背景技术】
[0002]计算领域的反射(Reflection)于1982年被B.Smith从人工智能领域引入,为了与人工智能领域的反射相区别,计算领域的反射被称为计算性反射(ComputationalReflection)。
[0003]计算性反射首先被程序语言的设计领域所采用,在面向对象语言方面取得的成绩最为突出。典型的如OpenC++、MetaJava和Java的反射式版本等就是基于反射的面向对象语言。近年来,反射机制也被应用于操作系统和中间件系统,并被认为是下一代中间件的关键技术之一。
[0004]原理上,计算领域的反射是指软件实体按照描述和操作实体所面临的问题域相同的方式,来描述和操作实体自身的能力。系统自述与因果关联是反射系统的两个重要特征和机制,这些机制使得反射系统在运行时其状态和行为是为自己可观和可控的,这个特性为系统不需要重新编译就实现结构和行为的进化提供了可能。
[0005]所谓因果关联,是指对反射系统自描述的改变能够立即反映到系统底层的实际状态和行为,反之亦然。换句话说,及底层的状态或者行为与上层的描述具有一致性和相互关联性。
[0006]1995年,美国国防部提出建模与仿真计划的公共技术框架之一 HLA,已经成为高层的体系结构和实现分布交互仿真系统互操作的工业标准。其中,HLA/提供了仿真系统的基本框架和接口规范,采用基于HLA体系结构,旨在提高系统的伸缩性和灵活性,促进模型的可重用和互操作。HLA/RTI通过订阅/发布关系的描述并实现仿真成员的交互,隐藏了通信的细节;在时间管理服务的支持下能方便地保证仿真成员在时间逻辑上的一致性。但是HLA/RTI以成员作为系统集成和复用的基本单元粒度太粗;仅支持对成员间接口进行建模;HLA/RTI提供的服务质量和能力在动态性、安全性等方面需要改善和拓展;HLA/RTI编程接口不够友好。

【发明内容】

[0007]为克服上述缺陷,将反射技术引入到分布交互仿真领域,基于反射的思想和技术开发面向对象的仿真弓I擎。
[0008]根据本发明的一个方面,提出了一种反射式面向对象仿真引擎,包括门户层、内核服务层和支撑层,其中,门户层提供连接应用层的各种仿真应用的接口和服务,该接口包括基于面向对象接口、MVC的接口和面向方面的接口 ;内核服务层构建在反射式对象语义模型上,提供组件管理、对象管理、事件管理和调度管理服务;支撑层通过底层中间件桥接器与服务层中包括管理服务的仿真框架连接,用于实现底层的支撑服务与核心服务的桥接,以使核心服务与底层设施隔离。[0009]本发明通过将反射技术引入使得仿真引擎具有支持动态模型表达、动态重配置、可运行时进化等高级特性;通过提供元编程机制,截取器等扩展机制,本引擎具有可扩展性好、适应性强、易用性好的优点,基于本发明的仿真系统更加便于开发和维护。
[0010]本申请主要涉及分布式交互仿真领域的软件开发,典型的应用场合是大规模武器装备作战仿真、复杂产品虚拟样机工程、基于计算机的模拟训练器研制。本发明也可推广作为其它分布/并行计算的平台,同时也可以应用到娱乐行业,如网络游戏开发。
【专利附图】

【附图说明】
[0011]图1是反射式面向对象仿真引擎ROSE的层次结构图;
[0012]图2是ROSE王运彳丁流程不意图;
[0013]图3是ROSE的事件调度策略示意图;
[0014]图4是ROSE的面向对象接口示意图;
[0015]图5是ROSE的平台接口示意;
[0016]图6是ROSE的对象类结构与接口示意图;
[0017]图7是ROSE的对象体系示意图;
[0018]图8是ROSE对象在不同进程时交互示意图。
[0019]如图所示,为了能明确实现本发明的实施例的结构,在图中标注了特定的结构和器件,但这仅为示意需要,并非意图将本发明限定在该特定结构、器件和环境中,根据具体需要,本领域的普通技术人员可以将这些器件和环境进行调整或者修改,所进行的调整或者修改仍然包括在后附的权利要求的范围中。
【具体实施方式】
[0020]下面结合附图和具体实施例对本发明提供的一种反射式面向对象仿真引擎进行详细描述。
[0021]在以下的描述中,将描述本发明的多个不同的方面,然而,对于本领域内的普通技术人员而言,可以仅仅利用本发明的一些或者全部结构或者流程来实施本发明。为了解释的明确性而言,阐述了特定的数目、配置和顺序,但是很明显,在没有这些特定细节的情况下也可以实施本发明。在其他情况下,为了不混淆本发明,对于一些众所周知的特征将不再进行详细阐述。
[0022]总的来说,针对【背景技术】中提到的分布交互仿真HLA/RTI框架及规范的缺点和不足,本申请提供支持组件的建模、集成和复用,并且具有良好的动态性和友好的编程接口的仿真引擎。
[0023]其中,本引擎运行在HLA/RTI之上,是组件级模型的运行和求解环境,它为系统的集成和运行提供灵活多样的集成机制、柔性的架构和高级的支撑服务,同时隐藏底层通信中间件的差异。本引擎的基本功能可以概括为:模型组装、对象管理、模型调度、时间管理、事件分发、数据传输、运行日志。该仿真引擎在实现时采用了反射的方案和技术,因此也称为反射式面向对象仿真引擎(Reflective Object-oriented Simulation Engine, ROSE)。
[0024]图1示出ROSE所采用的层次化的结构,如图1所示。其中,反射式面向对象仿真引擎包括门户层、内核服务层和支撑层,门户层提供连接应用层的各种仿真应用的接口和服务,该接口包括基于MVC的接口和面向方面的接口。内核服务层构建在反射式对象语义模型上,提供组件管理、对象管理、事件管理和调度管理服务。支撑层通过底层中间件桥接器和服务层中包括管理服务的仿真框架连接,用于实现底层的支撑服务与核心服务的桥接,使核心服务与底层设施隔离开来。
[0025]具体地,顶层是门户层,可以为应用系统提供接口和服务。ROSE在门户层支持多接口。从实践来看,不同的用户偏好和不同仿真应用需求对接口要求不同的,比如,对于业务和逻辑比较复杂的仿真系统,适合于面向对象的接口 ;对于交互式的仿真系统,适合于基于MVC模式的接口 ;而对于基于仿真引擎的工具的开发(如数据收集工具),则更需要面向方面(AOP)的接口。多接口的技术实现方案是:首先以面向对象的形式严格定义仿真引擎的原子接口(基本接口),然后运行适配器模式对原子接口进行封装和转换,形成了基于MVC的接口和面向方面的接口。
[0026]ROSE的中间层是内核服务层,该层构建在反射式对象语义模型基础之上,主要提供组件管理、对象管理、事件管理和调度管理4大核心服务。组件管理包括组件的加载、组装、查找、更换等;对象管理提供分布环境下对象的创建、查找、删除与状态一致性维护等功能;事件管理为分布环境下的所有对象提供统一的交互机制和接口 ;调度管理则为仿真对象分配计算资源、调度实体对事件作出响应,同时,确保时间推进和任务调度过程中因果关系正确。
[0027]ROSE的底层是支撑层,主要功能是实现底层的支撑服务与核心服务的桥接,使核心服务与底层设施隔离开来,方便了其各自独立开发和演化。该层采用桥接器模式确定了其基本框架,并实现为满足ROSE规范的一个组件,因此,它可以和普通组件一样被动态加载和更换(ROSE还没有实现加载和更换过程的一致性维护,需要在应用程序中自已完成)。桥接器模式的采用使得仿真引擎非常方便地支持多种底层通信中间件或协议,同时运行于仿真引擎之上的模型则无需要作任何修改,为模型的复用提供了强有力的支持。
[0028]目前,ROSE 实现了基于 RTI (RunTime Infrastructure)、DDS (Data DistributionService)、TCP/IP、共享内存和MPI桥接器。当这些桥接器都不加载时,ROSE模拟一个空桥接器,使应用系统仍能正常运行,只是跨进程的服务无法提供了,从而可以为非网络化应用的开发提供了有力的支持。
[0029]多语言支持是仿真引擎在工程使用上另一个非常有用的特性,ROSE的接口模型与语言本身无关,这一特性为多语言接口提供了可能。由于ROSE采用C++开发,因此,其接口也是以C++为主,即是ROSE的“母语”,其它语言的接口通过语言间互操作技术进行实现。
[0030]ROSE的调度器
[0031]ROSE的调度管理主要是通过调度器类实现的,每个仿真引擎实例能且只能拥有一个调度器实例。用户创建对象实例必须显式加入到调度列表中才能被调度。
[0032]ROSE的调度器的调度策略是为HLA的保守时间推时设计的。需要调度的仿真对象需要重载基类的tick、simulation、output三个回调函数。其中tick的语义是预测下一仿真时刻仿真对象的状态,预测完毕后调用时间推进请求服务并处于等待状态,直到推进请求得到允许,这期间,仿真对象将可能收到TSO消息;而Simulation的语义是利用等待期间收到的外部TSO消息,执行当前的仿真运算,执行完毕业,当前时刻的仿真任务完成;output的语义是将当前仿真的结果进行输出。[0033]ROSE的调度方式是,首先将所有对象的tick函数扫描一次,确保所有对象提出时间推进请求后,以成员的身份向底层中间件HLA提出时间推进行请求;当推进请求得到允许后,将所有对象的simulation函数扫描一次,最后再将所有对象的output函数扫描一次。
[0034]在整个运行期,调度器可能会接收和处理各种事件,主要包括:在等待推进允许期间,会收到TSO消息;在任何时候,均有可能收到RO消息(多线程RTI);在tick-simulation-output三次扫描期间,ROSE均要检查异步事件的事件队列,如果发现异步事件存在,则利用事件系统的服务将所有异步事件调度一次。
[0035]此外,为了更好地利用高性能计算机的多核处理能力,ROSE除了管理上述主调度线程外,还管理用户创建的调度线程。仿真对象可以被加入到用户调度线程列表,用户调度线程在主调度线程的触发下执行仿真对象的回调。
[0036]ROSE的事件管理通过事件管理器来实现,事件管理器为进程内和进程内对象间的通信提供了统一的编程界面,事件模型是设计事件系统的核心。实际上,ROSE的事件系统也是基于反射的分布式事件系统,它在传统分布式事件系统基础上,通过对事件本身、对象对事件的响应能力和方 式、事件的传递通道进行自述,解决事件分发策略、事件的参数形式及其语义理解、事件的信息通道及通道属性(如可靠性)等特征的观察和调整问题。ROSE中的事件模型定义如下:
[0037]
class CEvt: public CItem{
intm_eventid;//事件号,作为关键字与对象事件响应函数对应 int m_sourceid;//发送事件的本地对象ID
int m—desobjid;//事件到达的本地对象ID,即该对象的响应函数响应事件然后返回;
//如果为0,则事件发送到m_desclsname属性描述的所有对象 char* m一desclsname;//事件到达的类名;不为0,则发送到该类的所有对象实例;
//如果为0,则由发送到所有支持此事件的对象
[0038]
double m—time;//事件发送时间
char* m—buffer;//事件参数缓存区,由收发双方约定其内容并确保指针的有效性 EvtOverCbFimmJim;//事件执行完后的回调函数,通常用于异步方式发送事件
}
[0039]其中,EvtOverCbFun的定义为 typedef void(*Evt0verCbFun) (CEvt*);
[0040]ROSE支持非常灵活的事件表示,事件传输和事件创建方法。当ROSE的事件管理器接收到外部对象的事件发送请求后,采用的调度策略如图3所示。
[0041]从图3可见,如果事件模型中指定了接收对象,即m_desob jid不为空,事件直接被发送到指定的对象,否则,根据m_de sob jid与类ID匹配对应的类,如果匹配成功,指定事件被发往所有由该类实例化的对象。如果既没有指定对象类,也没有指定对象,并且事件类型可以被识别,则事件向所有注册的对象广播。如果事件类型号或者对象或者对象类没有注册,则事件管理器将视此次事件发送为异常,将相关信息写入事件日志中,以便于分析或者调试时使用。
[0042]ROSE的门户层的多接口
[0043]现代仿真系统可分成模型和仿真平台两部分,模型与仿真平台间的接口是仿真系统设计和实现中至关重要的问题,接口不但定义了仿真平台提供的服务和机制,同时也规定了模型的集成方式、集成粒度(成员级或组件组),并由此决定了模型可复用性和互操作性。
[0044]因此,ROSE在设计过程中考虑到模型与仿真平台之间接口多样化的问题,为用户提供了多种编程模型,支持多种接口,如面向对象接口、面向方面接口、MVC接口等等。
[0045]反射式面向对象接口
[0046]反射式面向对象接口是ROSE的基本接口,其它的接口定义在其之上,如图4所示。这些基本接口定义了:1)组件如何利用底层平台的服务;2)组件如何被扩展;3)如何通过脚本语言控制平台或者将组件“粘合”起来。其中第I类和第2类接口以API的形式提供,分别称为平台接口和组件接口,第3类即接口称为控制接口,脚本语言采用可扩展的演化式仿真系统描述语言(extensible Evolution Simulation Language, XESL),基于该语言的脚本在引擎初始化时和重配置时被加载和执行。
[0047]平台API接口主要由ROSE的CEngine抽象类提供,该类封装了仿真引擎的组件管理、对象管理、事件管理和调度管理等功能服务,如图5所示。为CEngine抽象接口提供实现支撑模块的是对象管理器和事件管理器,这两个模块对外是不可见的。除了引擎的基本服务接口,ROSE作为反射式框架还提供了对类元对象的访问的元接口。
[0048]组件接口由ROSE对象模型结构组织起来,如图6a所示。其中CObj提供抽象定义,CItem提供基本的实现,CEvt实现了事件的封装,CLink、CNode、CEntity分别与连接、节点、实体等概念模型相对应。组件接口提供的功能服务如图6b右所示,组件接口也分为基本接口与元接口中,基本接口包括组件/对象的初始化、名字与ID服务、状态查询服务、回调服务等;而元接口则提供对对象自述信息的访问,包括对属性池、事件响应表、类结构浏览等。
[0049]面向方面接口
[0050]ROSE提供了面向方面的接口模型,支持面向方面的程序设计。面向方面的程序设计(Aspect-Oriented Programming, A0P)的基本思想是认为软件系统由一系列关注点组成,一个关注点就是一个特定的目的,关注点的模块化单元称为方面(Aspect)。
[0051]ROSE利用截取器(Interceptor)具有无状态和无依赖的特性,通过在事件系统注册事件截取器来实现面向方面的编程。ROSE基于截取器的编程模型主要由截取器、执行函数、事件等几个概念进行描述。
[0052]执行函数定义为一个全局函数,其原型为:
[0053]typedef B00L(*HookFun)(CEvtpEvent);
[0054]函数执行期间,所截取的事件被作为参数传入。执行完毕后,返回值为TRUE表示截取后事件调度器不再调度事件,返回值为FALSE表示事件不受继续调度。
[0055]截取器注册服务由ROSE引擎API提供,该服务正确调用后,截取器对象被创建,该对象描述了事件与执行函数的映射关系。截取器注册服务的原型定义为:[0056]B00L CEngine::RegisterHook(HookFun fun, int Evtid_start, intEvtid_len,char type);[0057]其中,参数fun为截取器函数,Evtid_start表示截取的起始事件号,Evtid_len表示截取的事件个数,即事件截取的范围为:Evtid_start_Evtid_start+Evtid_len, type=’ A’表示截取函数是在事件响应函数之后执行,type =’ B’表示在事件响应函数之前执行。
[0058]截取器卸载服务定义为:
[0059]BOOL UnRegisterHook(HookFun fun, char type);
[0060]此外,ROSE预定义了一些特殊的截住器函数,如状态变化的截取函数,对象管理器中对象数量变化变化的截取函数等等。
[0061]MVC 接口
[0062]ROSE除了提供面向对象和面向方面的编程接口外,还提供面向MVC接口的编程模型。MVC(Mode1-View-ContiOl)模式是一种非常经典的架构模式,该模式通过将系统中数据管理、数据显示和业务逻辑进行了独立设计,降低了大粒度模块的耦合性,特别适合于交互式系统的开发。
[0063]为了支持和适应MVC模式架构的应用系统,ROSE在反射式面向对象接口基础上提供了 MVC架构及其接口。ROSE的MVC框架中定义了数据容器DataOb j、观察者Observer、控制器Controller三个主对象,它们均从CItem类中派生。控制器提供Execute接口作为统一的回调入口,观察者Observer实现更新接口以获得数据,数据容器类通过Notify接口通知观察者数据更新情况,数据容器管理实体对象数据。
[0064]将反射(Refection)技术引入基于分布交互仿真的模型集成环境中,利用反射式系统具有自描述、能监测和调整 自身结构和行为的特点,将基于HLA的仿真系统的联邦成员中的对象类信息、属性信息、交互信息、时间推进策略以及数据发布订购关系在软件中进行自述,并实现自述模型与实际结构或状态的因果关联,应用系统运行时修改反射模型,则可以使与反射模型因果关联的实际结构或状态得到调整,从而解决了系统结构在运行时进行调整和优化的问题,并使该框架在体系结构上能最大程度的具有可复用性,从而有更广阔的应用范围。
[0065]ROSE最重要自述模型是类模型,如下所示:
[0066]
class ClsModel
{

int ClsID;//类模型的整数句柄
char ClsName[32];//类名

ClsModel *pBaseClsModel;//指向基类类元模型的指针
ObjectList ObjList;//收集实例化的基本对象的链表
ClsModelList DClsModels;//派生类类元模型的链表
CEventMAP Eventmap;//事件映射表
AttributeTable AtrTable;//属性表
CreateFun CreateObject;//创建对象的函数指针
ClassInitFun Classinit;//初始化函数指针

}
[0067]以上面介绍的类模型为基础,在运行时构建反映仿真模型层次关系和结构关系的反射模型体系,即:将系统中的模型和仿真对象按照设计时层次结构关系和生成关系进行的组织,使这些设计时的信息在运行时可见并可修改,从而使这些仿真模型成为仿真对象的生成系统。当修改仿真模型的自述信息后,即可使仿真对象的行为得到相应的修改,从而实现仿真对象模型的动态生成和动态表示,解决了仿真系统中的仿真模型动态表示和系统功能动态扩展的问题。
[0068]图7显示了反射式面向对象仿真引擎中元对象与基本对象由于因果关联和类间继承而形成的结构关系。在没有多重继承的情况下,反射式对象数据库在元层形成与继承关系相一致的树形结构,基类对应的元对象处于树的根结点,子类对应的元对象是根结点的子树,子树可以递归形成更多的子树。每个类元对象可以实例化多个基本对象,基本对象是类元对象的叶节点,但它位于基本层。
[0069]ROSE将应用系统中的仿真对象构造为一个在内存中的分布式对象数据系统,采用发布/订购机制进行数据传输,自动完成对象生命周期管理并维护分布式节点间的数据一致性,并通过一个树结构对每个分布节点中的对象进行组织。ROSE的对象分为元对象和基本对象。元对象在树的根节点上,基本对象在树的叶节点上。如图8所示,成员I订购了成员2的B对象,因此在成员I形成一个BI对象作为B对象的代理,成员I的C对象需要访问成员2的B对象时,只需访问成员I的BI对象即可。
[0070]引入了元编程机制,使得反射式系统的元数据可以由元程序提供,通过装载不同的元程序,系统的结构和行为能得到重新的调整。元程序是与自然语言相类似的描述性脚本,具有良好的可读性和易修改性,因此,这种机制的引入大大提高了系统的可扩展性和可复用性。
[0071]ROSE的主运行流程
[0072]如图2所示,ROSE的全局状态和行为可以通过全局管理器控制和管理,引擎启动后自动进行初始化,并在初始化期间加载和组装模型(包括动态创建模),进入运行期后,引擎将主要控制权周期性地交给调度器,同时引擎也响应外部接口传入的调用,并根据调用的不同分别将控制权转交对象管理器或事件管理器。
[0073]引擎启动期:主要通过调用引擎启动的服务(全局函数),设置相关的启动参数(如线程模式),全局管理器接收到启动引擎命令后,创建引擎实例,在内存组织相关的基本数据结构和创建基本的对象模型。
[0074]引擎初始化期:该阶段在启动结束后自动进入,主要完成模型文件解析、模型加载与组装、对象系统构建、HLA成员创建、声明订阅发布关系等工作。
[0075]引擎运行期:该阶段是仿真引擎的主要工作期,在初始化后自动进入,主要进行模型调度、对象管理、事件分发等工作。
[0076]引擎退出期:该阶段在引擎接收到退出请求后进入,主要完成资源释放、内存清理等工作。
[0077]最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其他的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。
【权利要求】
1.一种反射式面向对象仿真引擎,包括门户层、内核服务层和支撑层,其中,门户层提供连接应用层的各种仿真应用的接口和服务,该接口包括基于面向对象接口、MVC的接口和面向方面的接口 ;内核服务层构建在反射式对象语义模型上,提供组件管理、对象管理、事件管理和调度管理服务;支撑层通过底层中间件桥接器与服务层中包括管理服务的仿真框架连接,用于实现底层的支撑服务与核心服务的桥接,以使核心服务与底层设施隔离。
2.根据权利要求1所述的仿真引擎,其中,门户层支持多接口,提供面向对象的接口、基于MVC模式的接口和面向方面的接口 ;其中,该多接口这样实现:以面向对象的形式定义仿真引擎的基本接口,运行适配器模式对基本接口进行封装和转换,形成基于MVC的接口和面向方面的接口。
3.根据权利要求1所述的仿真引擎,其中,内核服务层中,组件管理包括组件的加载、组装、查找、更换;对象管理用于提供分布环境下对象的创建、查找、删除与状态一致性维护服务;事件管理用于为分布环境下所有对象提供统一的交互机制和接口 ;调度管理用于为仿真对象分配计算资源、调度实体对事件作出响应,以及确保时间推进和任务调度过程中因果关系正确。
4.根据权利要求1所述的仿真引擎,其中,支撑层采用桥接器模式确定基本框架,可被动态加载和更换,支持多种底层通信中间件或协议。
5.根据权利要求3所述的仿真引擎,其中,调度管理服务通过调度器类提供,每个所述仿真引擎实例能且只能拥有一个调度器实例,调度器用于在等待推进允许期间接收TSO消息;在tick-simulation-output三次扫描期间,检查异步事件的事件队列,在异步事件存在情况下利用事件系统的服务将所有异步事件调度一次。
6.根据权利要求3所述的仿真引擎,其中,事件管理服务通过事件管理器来实现,事件管理器用于为进程内和进程内对象间的通信提供了统一的编程界面。
7.根据权利要求2所述的仿真引擎,其中,面向对象接口是基本接口,用于定义: 平台接口,组件如何利用底层平台的服务; 组件接口,组件如何被扩展; 控制接口,如何通过脚本语言控制平台或者将组件粘合起来; 其中,组件接口也分为基本接口与元接口,基本接口包括组件/对象的初始化、名字与I D服务、状态查询服务、回调服务;元接口用于提供对对象自述信息的访问,包括对属性池、事件响应表、类结构浏览。
8.根据权利要求2所述的仿真引擎,其中,面向方面接口通过在事件系统注册事件截取器来实现;截取器注册服务由引擎API提供,通过调用截取器对象来描述事件与执行函数的映射关系; 其中,面向MVC接口通过数据管理、数据显示和业务逻辑的独立设计来实现;定义数据容器、观察者、控制器三个主对象,其中控制器提供Execute接口作为统一的回调入口,观察者用于实现更新接口以获得数据,数据容器类通过Notify接口通知观察者数据更新情况,数据容器管理实体对象数据。
9.根据权利要求2所述的仿真引擎,其中,所述仿真引擎将应用系统中的仿真对象构造为在内存中的分布式对象数据系统,采用发布/订购机制进行数据传输,自动完成对象生命周期管理并维护分布式节点间的数据一致性,并通过一个树结构对每个分布节点中的对象进行组织;通过元编程机制,使得反射式系统的元数据由元程序提供,通过装载不同的元程序,系统的结构和行为能得到重新的调整。
10.一种权利要求1-9的其中一个仿真引擎的运行方法,包括: 步骤1,通过全局管理器控制和管理仿真引擎的全局状态和行为,引擎启动后进行初始化,并在初始化期间加载和组装模型; 步骤2,进入运行期后,引擎将主要控制权周期性地交给调度器,同时引擎也响应外部接口传入的调用,并根据调用的不同分别将控制权转交对象管理器或事件管理器。
11.根据权利要求10的方法,进一步,包括: 引擎启动期,通过调用引擎启动的服务,设置相关的启动参数(,全局管理器接收到启动引擎命令后,创建引擎实例,在内存组织相关的基本数据结构和创建基本的对象模型;引擎初始化期,启动结束后,完成模型文件解析、模型加载与组装、对象系统构建、HLA成员创建、声明订阅发布关系工作; 引擎运行期,在初始化后,进行模型调度、对象管理、事件分发工作; 引擎退出期,引擎接收到退出请求`后,完成资源释放、内存清理工作。
【文档编号】G06F17/50GK103455647SQ201210180204
【公开日】2013年12月18日 申请日期:2012年6月4日 优先权日:2012年6月4日
【发明者】黄晓冬, 温玮, 方伟, 凌绪强 申请人:黄晓冬, 温玮, 方伟, 凌绪强
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1