规则引擎drools如何整合spring,drl文件一般放在什么地方

规则引擎drools如何整合spring,drl文件一般放在什么地方,第1张

这段drl规则文蠢悔雀件申明并引用了global变量

package com.acme.app.rules

import com.acme.app.form.applicationform

import com.acme.app.model.applicant

import com.acme.app.validation.errors

import com.acme.app.dao.applicantdao

global applicantdao applicantdao

rule "check applicant age"

when

$a : applicationform()

$errors : errors()

$applicant:applicant( age <18 ) from applicantdao.findapplicant($a.getapplicantid())

then

$errors.adderror( $a, "applicantid", "applicant age <18" )

end

下面这段前辩java代码是在初始化knowledgesession的过程中,把spring中的bean设置成global变量

statefulknowledgesession ksession = kbase.newstatefulknowledgesession()

ksession.setglobal("applicantdao", applicantdao)

spring中配置bean

<bean id="applicantdao"带早 class="com.acme.app.dao.impl.applicantdaoimpl"></bean>

</beans>

为了更好的在项目中使用Drools,

需要把Drools集成到Spring Boot,

下面介绍集成的方法,

并且开发简单的Demo和测试用例。

pom.xml工程信息:

引入spring-boot-starter-web作为Web工程,对外提供Rest服务,

引入spring-boot-starter-log4j2日志框架,打印测试匹配结果,

引入spring-boot-starter-test测试框架,开发Junt5测试用例:

通过kie-spring引入Drools相关的jar包,

其依赖的spring版本都排除掉,

以上一步的spring boot依赖为准。

启动类DroolsApplication.java:

*** 作的对象Person,

Person.java:

对外提供的Rest服务,

可以对Person对象进行规则匹配,

提供了两个接口,

单个和批量的 *** 作接口:

PersonRuleController.java:

在上面PersonRuleController中需要用到KieContainer,

这个必须在Spring中先初始化才能使用,

相关功能由DroolsAutoConfiguration.java提供:

在DroolsAutoConfiguration中指定了drl规则文件

所在目录rules/com/ai/prd/,

在src/main/resources/rules/com/ai/prd/目录下新建文件

ai-rules.drl:

规则1匹配名字为bob的人,并且调用工具类PersonRuleAction打印相关日志,

同时打印规则的名称和包路径到控制台。

规则2匹配年龄在25到65之间的打工人,

然后把匹配到的人直接打印到控制台。

PersonRuleAction.java在匹卜孙消配到相应规则时被调用,

此处仅实现日志打印的功能:

在src/main/resources目录下,

新建日志配置文件Log4j2.xml:

日志文件配置后,

PersonRuleAction类打印的日志

不仅会输出到log/rule_result.log,

也会输出到控制台。

针对上面PersonRuleController提供的Rest接口,

开发两个Junit5的测试用例,型知

在src/test/java/目录下

创建PersonRuleControllerTest.java:

PersonRuleControllerTest执行后,

控制台输出:

cannot be cast to org.drools.compiler.kie.builder.impl.InternalKieModule

大概率是rule规则文件有问题,

格式,中英文字符,语法等问题,

请确保规则文件正确。

可以安装相应插件打开规则文件,

请参考:

Drools的Eclipse_IDEA插件安装

Drools规则引擎 系列教程(一)SpringBoot整合 &快速集成上手

《Drools7.0.0.Final规凯袭则引擎教程》之Springboot集成

Drools创建Maven工程

1、扩展名为drl的文件,是一个数据文件,可以用引擎软件打开。

2、扩展名为drl的文件,是一个钻孔文件,可梁带以用CAM350导入打开。

钻孔文件指的是在生产PCB电路板的时候,有一部分元件要插在板子上,需要有过孔穿过电路板的雀笑几层或某一层,这个孔就是生产中的钻孔顷渣含。生成钻孔文件的目的是在生产PCB电路板的时候确定钻孔的位置、尺寸等。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/8221318.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存