规则引擎的设计思路与方法,并非是固定的。目前最先进的当然是采用人工智能技术。但是,面临的技术难点还很多,需要投入的经费和耗费的时间也不是一般的兵棋系统可以承担的。在某款联合战役层级的训练兵棋中,裁决引擎采用结构化设计思路,自顶向下层层递进。每一层的关系实现相辅相成,从而将复杂的业务关系拆分为一个个简单的功能,降低业务的复杂性。规则引擎整体的逻辑结构包括五层,自上至下分别是管理层、调度层、规则模型层、接口层和数据层,如图8.6所示。
图8.6 规则引擎逻辑结构设计示意
管理层主要负责裁决界面功能。当裁决服务获取了数据库的IP地址、Web服务的IP地址、推演进程的ID等有效的信息后,规则引擎即开始启动,进行有效信息的获取。管理层主要是为规则引擎和调度层服务之间提供一种通信机制。
调度层主要负责规则条件匹配并生成规则执行实例,在整个规则引擎及裁决服务中处于核心地位。调度层功能主要包括:调用环境配置信息、加载动态库、连接数据库并调用数据,查询参演者任务信息、查询规则状态、设置规则状态、设置参演者状态、加载规则模型、设置任务状态、保存参演者的历史状态、更新任务时间状态、通知Web服务管理。调度层不断检测可能发生的各种事件,通过规则的调度与匹配,完成有效处理过程。在兵棋裁决服务中,调度层处于中间层,规则模型层对调度层来说是被调用者,而管理层对调度层来说是调用者。(www.xing528.com)
规则模型层主要是为调度层提供服务,实现规则的业务逻辑处理。将规则模型层从调度层独立出来,目的是使规则模型层运行所引起的数据对象变化,不会影响调度层的逻辑,降低耦合性。当需要扩展兵棋系统所支持的作战行动时,首先需要的就是在规则模型层增加这些行动的规则与模型。
接口层主要为其他层提供访问数据接口功能。尤其需要注意的是,与其他的框架结构不同,接口层并不只是针对某一层的,而是需要为调度层、规则模型层、数据层提供访问接口。接口层功能主要包括:为调度层提供获取规则ID,获取时间更新、连接数据库等接口功能;为规则模型层提供任务状态接口、任务结果反馈接口、时间接口等功能;为数据层提供日志接口、字典表接口、裁决表接口等功能。将每一个接口层封装成一个函数,定义一套适合开发者的接口,便于编程人员对程序的维护,同时便于对接口的管理。当调度层和规则模型层以及数据层的业务逻辑需求发生变化时,在原有基础上更改接口,提供程序开发效率。如果需要新的接口功能,则将接口添加在接口层中,这样不会影响每一层的调用,可为每一层提供稳定的数据接口支持功能。
数据层主要是对数据字典的维护,数据访问和数据存储。为其他层提供数据业务的支持。数据层主要功能包括:任务表、字典表、裁决表、棋子属性表、日志表。任务表主要存储的是参演者的作战任务;字典表主要与棋子属性表进行关联;裁决表主要存储的是各种行动结果的概率表;日志表主要是存储的是参演者在进行推演时的状态信息。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。