4.9 KiB
1.项目概述:
军事沙盘游戏,是一个Spring Boot框架,若依开发平台前后端分离版, 主要为了服务别的服务调用我的接口,我自动生成火力配置,主要是做火力规则。
2.大致需求:
我现在需要根据入参的json(超级大,将近1.3M,2w多行)使用Drools(项目中rule模块已经引入依赖)系统完成规则的建立,并且每个drl文件中的注释要清楚,因为后续要加入WorBench让不懂开发的人员修改我的规则(暂时先不用)
并且要注意出传入的json如果过大需要注意OOM,并且注入Drools中的实体过多也有可能OOM,理解整个需求文档之后,设计怎么接收参数,插入Drools,保证不会出现OOM!因为传入的JSON总体来说有不少需要用到,但是有一些细致的参数可能又不需要匹配上!
2.1需求详细:
我需要根据传入的json匹配我的规则,然后再json中填写红方任务下的武器、武器参数、部署位置、航迹等位置的数据
2.1.1 允许出现蓝方武器,红方没有应对的武器的情况,证明红方武器不够
2.1.2 允许出现返回的红方任务中的部分json字段为空,原样返回,因为我的规则不需要把所有数据填上去(具体需要填那些我会在第三部分具体规则设计中写出来)
2.2 注意事项:
2.2.1 Json很大,需要使用流式解析,接收时拿到需要的数据,具体需要那些参数我会把Json参考文件(区域防御场景设计_2026-01-14 11_49_10_带注释)放到和本文件同级的位置,你自己取阅读,决定,只要匹配我下方的规则就行;
2.2.3 整个火力规则接口的里面需要用到的数据都是传入的json中的,没有数据库操作,包括输出的json也是传入的json,只是需要把json中红方的任务内容填上去(允许有规则匹配不上导致参数为空)
注释要求:
1.任何注释都不要在行尾进行注释,放在上方
2.实体类的属性注释和方法(函数)内部的注释要使用//,类注释和方法上的注释使用/* */
3.具体规则设计:
只需要在json中填写红方任务下的内容,具体的规则需要体现在Drools的drl文件中,必须添加注释,供业务人员修改规则
3.1 需要设计装备匹配的规则,主要有装备类型的匹配,比如蓝方有空中武器,需要根据航迹,经纬高,来决定我方使用何种武器(从json的红方装备拿,拿id填写到weaponId上就行,在weaponId附近有一个targetId要填写这个武器对应的是蓝方的什么武器,其他的参数需要你理解填写上去,不理解的不要乱填,所有数据都在传入的json中),还需要根据蓝方的数量做匹配,理论上应该>= 蓝方数量(允许出现小于,因为红方获取数量武器不够),还需要根据威胁等级字段名:threatLevel 取值范围(1-3来决定使用那些红方武器进行打击)
允许你根据传入json(蓝方已有条件和红方已有条件)设计其他匹配的规则,但是要标明注释,根据那些参数,怎么使用,修改
3.2 需要设计阵位的规则,根据蓝方的阵位部署,红方的武器需要部署在红方的防区和作战区,作战区域字段名:warTerritory ,防区类型字段名:airspaceType 3是防区的意思(注意必须是红方的防区或者作战区,作战区不分红蓝方)
3.3 需要设计航迹的规则,根据蓝方任务编队的航迹来决定我方任务的航迹,可以根据高度、速度、航向角、经纬高等参数设计规则,不管使用最短距离算法,还是绕后打击算法都可以(最好在Drools中提供规则,标明怎么使用,修改)
3.4 需要做任务类型的匹配,如果蓝方是干扰任务,红方需要根据红方的反干扰武器进行匹配,具体匹配可以同3.1的规则,但是任务类型不同
3.5 上述所有规则都需要贴合实际,并且规则中不需要考虑任务的开始结束时间
4.JSON辅助理解
本点是辅助你理解传入的JSON
4.1 Tasks下是蓝红方的所有任务,我需要根据蓝方的任务做红方的任务匹配,并且匹配红方任务下的武器装备
4.2 RefAttributeObject下是所有武器的参数,注意要区分这个武器是蓝方还是红方,attDefaultValue字段是这个武器的值,attExplain是值的单位
4.3 ScenarioBase和Options这两个我的整个规则系统中不需要关心,Environment这个字段里面是环境的配置,你自由决定内部参数参不参与规则
4.4 ForceSides用来区分红蓝方,Equipments是所有装备(注意区分红蓝方)
4.5 所有的武器装备,参数,任务,都没有形成直接的上下级结构,都是通过id来关联
4.6 taskName不用关心,Groups暂时不用关心(后续可能会需要)