在上面的逻辑结构下,规则引擎的具体技术实现方法和工具是多种多样的。在某款联合战役层级的训练兵棋中,尽量使用了各种比较成熟的技术工具。其规则引擎的技术架构如图8.7所示。
图8.7 规则引擎技术架构设计示意
裁决服务配置,即管理层,采用C++语言实现,通过C++技术捕获用户的裁决服务配置信息,并将参数传递给调度层。其目的主要是考虑底层语言的兼容问题和上下层的通信效率。C++与Lua是通过栈进行有效通信的,涉及获取Lua的变量值和调用Lua中的函数等信息。
调度层,通过Lua语言来实现,将编写的C++模块,注册到Lua解释器中,然后由Lua根据需要去调用。Lua自身比较轻量、体积小,启动速度快,很容易嵌入到其他语言中,具有可移植性强的特点。一方面获取上层提供的配置服务,并且与服务器端完成通信机制;另一方面通过下层提供的动态库,完成参演者任务的调度过程,以及状态的改变等功能。
接口层,利用动态库技术(DLL),使一个或多个应用程序、基于不同语言编写的程序功能可以共享一个DLL文件,实现资源的共享,大大精减了应用程序的执行代码,同时更为有效地利用内存资源。将各种接口封装起来,便于接口的更新维护。当调度层和规则模型层需要新的接口时,只需要将函数添加到动态库文件即可。(www.xing528.com)
规则模型层,采用扩展脚本方法,当业务(作战行动)逻辑有变化时,只需要添加新的业务功能,并不需要编辑非脚本部分。这样可以提高开发效率,同时达到业务逻辑与数据分离,提高规则模型层的处理效率。
裁决界面,QtGUI是一个多平台的C++图形用户界面应用程序框架。主要提供给应用程序开发者建立艺术级图形用户界面所需要的各种功能,获取数据并达到可视化效果。
QtSQL是连接动态库DLL与数据库的接口,QtSQL负责数据传递的功能。通过QtSQL接口,实现动态库对数据库数据的获取。
现代兵棋系统中,通常需要大量的数据作为支撑,因此需要采用关系型数据库,如MySQL或Oracle数据库等。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。