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电路板的时候确定钻孔的位置、尺寸等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)