当前位置: 首页 > 后端技术 > Java

SpringBoot集成了drools

时间:2023-04-01 20:44:40 Java

1。背景在上一篇文章中,我们学习了drools的一些基本语法。在这篇文章中,我们实现了drools在SpringBoot中的集成。2.需求我们需要确定用户是否可以在drools中玩游戏。规则一:如果用户的年龄>=18,则可以进行游戏。规则二:如果用户年龄<18岁,则不能进行游戏。3、实现3.1引入jar包org.droolsdrools-bompom7??.69.0.Finalimportorg.springframework.bootspring-boot-dependencies2.6。7导入pomorg.springframework.bootspring-boot-starter-webdrools-编译器org.droolsdrools-mvelorg.projectlomboklombok1.18.22这里导入drools和springbootjar包3.2写drools配置类@Configurationpublic类DroolsConfig{@BeanpublicKieContainerkieContainer(){KieServiceskieServices=KieServices.get();返回kieServices.getKieClasspathContainer();}}3.3这里写Person对象可以简单理解为drools中的Fact对象。Fact对象被插入到drools的工作内存中。@Data@AllArgsConstructorpublicclassPerson{私有字符串名称;私人整数年龄;//可以玩游戏,这个字段的值是drools引擎计算出来的privateBooleancanPlayGame;}canPlayGame:这个字段的值是drools引擎计算出来的。3.4编写drl文件包rulesimportcom.huan.drools.fact.Person//用户可以玩游戏规则"rule_person_can_play_game"when$person:Person(age>=18)then$person.setCanPlayGame(true);System.out.println("触发规则:"+drools.getRule().getName());end//用户不能玩游戏规则"rule_person_Can't_play_game"when$person:Person(age<18)then$person.setCanPlayGame(false);System.out.println("触发规则:"+drools.getRule().getName());end上面写了2条规则,根据年龄判断,计算用户是否可以玩游戏canPlayGame。3.5编写kmodule.xml文件kmodule.xml的路径位于src/main/resources/META-INF目录下。3.6编写Controller触发规则@RestControllerpublicclassPersonController{privatefinalKieContainerkieContainer;publicPersonController(KieContainerkieContainer){this.kieContainer=kieContainer;}/***调用drools规则判断用户是否可以玩游戏*/@GetMapping("canPlayGame")publicPersoncanPlayGame(Personperson){KieSessionkieSession=kieContainer.newKieSession("ksession");尝试{kieSession.insert(person);kieSession.fireAllRules();}最后{kieSession.dispose();}返回人;}}3.7测试3.7.1用户年龄>=18?curlhttp://localhost:8081/canPlayGame\?name\=huan\&age\=20{"name":"huan","age":20,"canPlayGame":true}可以看出在drools中计算的canPlayGame值为`true3.7.2用户年龄<18岁?curlhttp://localhost:8081/canPlayGame\?name\=huan\&age\=16{"name":"huan","age":20,"canPlayGame":false}可以看出在drools中计算canPlayGame值为false4,完整代码https://gitee.com/huan1993/spring-cloud-parent/tree/master/drools/drools-integrated-springboot