一种基于规则推理技术的动态解析方法
文献发布时间:2024-04-18 19:52:40
技术领域
本发明属于人工智能领域,具体涉及一种基于规则推理技术的动态解析方法。
背景技术
规则推理引擎也叫产生式系统,是由基于规则的专家系统发展而来。基于规则的专家系统是人工智能领域中专家系统的一个分支,它模拟人类的推理方式,使用试探性的方法进行推理,并使用人类能理解的术语解释和证明它的推理结论。基于规则的专家系统,使用的知识包括事实和规则。事实是用来表示已知的数据或信息,规则即产生式规则,用来表示系统推理的有关知识。
Drools是基于正向推理的规则引擎。正向推理是数据驱动的,facts(事实)被传递到工作空间中,在那里有一个或多个规则与这些事实匹配,并由Agenda(议程)安排执行,从一个事实开始,传递事实,最后得出结论。但存在资源加载匹配时间长且不够灵活的问题。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是如何提供一种基于规则推理技术的动态解析方法,以解决资源加载匹配时间长且不够灵活的问题。
(二)技术方案
为了解决上述技术问题,本发明提出一种基于规则推理技术的动态解析方法,该方法包括如下步骤:
S11、利用map数组将定义的实体类与接口中输入的json可变长参数放入map数组中形成映射,解析器对map数组中的每个entry进行遍历,遍历过程中对接收到的json可变长参数对象进行解析,查找并加载指定的类并转换成object对象,传入到映射器中;
S12、映射器中需要输入的参数包括指定的类名称、要执行的类方法、参数个数以及要触发的具体object对象;映射器会查找并加载指定的类和对应的类方法,再利用反射机制将参数传入并调用执行对应的类方法,并返回得到的结果存入result数组,此过程即为规则触发;
S13、接收器对result数组内容和result数组长度进行判断,若result数组不为空且result数组长度等于映射器中的参数个数,则将result数组逐一输出;否则输出匹配失败提示字样。
如权利要求1所述的基于规则推理技术的动态解析方法,其特征在于,json可变长参数中输入对应的规则分类名称,后台会存入可变长数组map中,通过解析器遍历该数组map,利用mybatisPlus中的LambdaQueryWrapper.eq方法查找到与输入参数中的规则分类名称一致的匹配项,获取到该规则分类对应的编码id,添加到对象数组中,供drools引擎获取。
一种基于规则推理技术的动态解析方法,该方法包括如下步骤:
S21、在规则执行接口中输入json可变长参数,包括:要进行匹配推理的事实数据和规则匹配范围;
S22、利用map数组将定义的实体类与规则执行接口中输入的json可变长参数放入形成映射,对map数组中的每个entry进行遍历,对接收到的json可变长参数对象进行解析,查找并加载指定的类并转换成object对象,传入到映射器中;
S23、映射器中需要输入的参数包括:指定的类、要执行的类方法、参数个数以及要触发的具体object对象;映射器会查找并加载指定的类和对应的类方法,再利用反射机制将参数传入并调用执行对应的类方法,并返回得到的结果存入result数组,此过程即为规则触发;
S24、接收器对result数组内容和result数组长度进行判断,若result数组不为空且result数组长度等于映射器中的参数个数,则将result数组逐一输出;否则输出匹配失败提示字样。
(三)有益效果
本发明提出一种基于规则推理技术的动态解析方法,本发明与现有技术相比的优点在于:
本发明实现了对可变长参数的动态解析,并可指定规则匹配范围,可灵活输入事实数据;统一输出模式,无需每种结果单独写一个输出类;当规则达到一定规模时,可有效减少规则匹配时间。
附图说明
图1为本发明的规则动态解析推理流程图。
具体实施方式
为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明的目的在于实现基于规则推理技术的动态解析方法,在原有的drools规则引擎机制下,加入了解析器、映射器和接收器,实现了调用接口时输入可变长参数事实数据,解析器对输入的事实数据进行动态解析,传入映射器映射到事实对应的执行方法,执行后的结果通过接收器进行结果输出,完成规则推理的整个匹配过程。参数中可选择性指定规则匹配范围,可有效缩短规则匹配时间,实现动态解析匹配。
本发明提供基于规则推理技术的动态解析方法,包括:
drools引擎对外提供规则执行接口,调用者可输入json格式的事实数据,不限参数个数,同时可指定规则匹配范围,即规则分类。通过解析器对可变长参数进行动态解析,将json转换成java类,进行规则触发,再利用映射器将每个参数映射到其对应的执行方法,得到的推理结果传给接收器进行前端界面显示或后台显示。具体的方法步骤如下:
S11、利用map数组将定义的实体类与接口中输入的json可变长参数放入map数组中形成映射,解析器对map数组中的每个entry进行遍历,遍历过程中对接收到的json可变长参数对象进行解析,查找并加载指定的类并转换成object对象,传入到映射器中;
S12、映射器中需要输入的参数包括指定的类名称、要执行的类方法、参数个数以及要触发的具体object对象;映射器会查找并加载指定的类和对应的类方法,再利用反射机制将参数传入并调用执行对应的类方法,并返回得到的结果存入result数组,此过程即为规则触发;
S13、接收器对result数组内容和result数组长度进行判断,若result数组不为空且result数组长度等于映射器中的参数个数,则将result数组逐一输出;否则输出匹配失败提示字样。
在接口json可变长参数中输入对应的规则分类名称,后台会存入可变长数组map中,通过解析器遍历该map数组,利用mybatisPlus中的LambdaQueryWrapper.eq方法查找到与输入参数中的规则分类名称一致的匹配项,获取到该规则分类对应的编码id,添加到对象数组中,供drools引擎获取,drools引擎中的kiebase使用。
该json可变长参数为可选参数,如不指定范围则默认加载全部规则库文件。
实施例1:
本发明为一种基于规则推理技术的动态解析方法。
如图1,本发明的规则动态解析推理流程为:
S21、在规则执行接口中输入json可变长参数,包括:要进行匹配推理的事实数据和规则匹配范围;其中规则匹配范围是可选参数,若不指定则默认加载整个规则库文件;
S22、利用map数组将定义的实体类与规则执行接口中输入的json可变长参数放入形成映射,对map数组中的每个entry进行遍历,对接收到的json可变长参数对象进行解析,查找并加载指定的类并转换成object对象,传入到映射器中;
S23、映射器中需要输入的参数包括:指定的类、要执行的类方法、参数个数以及要触发的具体object对象;映射器会查找并加载指定的类和对应的类方法,再利用反射机制将参数传入并调用执行对应的类方法,并返回得到的结果存入result数组,此过程即为规则触发;
S24、接收器对result数组内容和result数组长度进行判断,若result数组不为空且result数组长度等于映射器中的参数个数,则将result数组逐一输出;否则输出匹配失败提示字样。
指定规则匹配范围,即在规则执行接口中输入对应的规则分类名称,后台会存入可变长数组中,通过解析器遍历该对象数组,利用mybatisPlus中的LambdaQueryWrapper.eq方法查找到匹配项,获取到该规则分类对应的编码,添加到对象数组中,供drools引擎获取,drools引擎中的kiebase使用。
本发明适用于规则推理技术领域,在具备规则引擎的基础上,支持在规则执行接口中输入可变长的事实数据,还可限定规则的匹配范围,使规则引擎执行更加灵活,有效缩短规则匹配时间,实现规则引擎对参数的动态解析。
本发明与现有技术相比的优点在于:
本发明实现了对可变长参数的动态解析,并可指定规则匹配范围,可灵活输入事实数据;统一输出模式,无需每种结果单独写一个输出类;当规则达到一定规模时,可有效减少规则匹配时间。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
- 一种Excel表格批注信息的整理方法、装置及设备
- 一种将CAD表格数据导入EXCEL表格的方法
- 一种基于Excel表格的CAD批量生成参数化表格的方法