企业如何利用HarmonyOS开发工具提升小程序开发效率与合规性
1157
2022-10-03
SpringBoot集成drools的实现示例
目录1、背景2、需求3、实现3.1 引入jar包3.2 编写drools配置类3.3 编写Person对象3.4 编写drl文件3.5 编写kmodule.xml文件3.6 编写Controller触发规则3.7 测试4、完整代码
1、背景
在之前的文章中,我们学习了drools的一些基本语法,在这篇文章中,我们实现在SpringBoot中集成drools。
2、需求
我们需要在drools中判断用户是否可以玩游戏。
规则一:如果用户的年龄age>=18,则可以玩游戏。规则二:如果用户的年龄age<18,则不可以玩游戏。
3、实现
3.1 引入jar包
此处引入drools和springboot的jar包。
3.2 编写drools配置类
@Configuration
public class DroolsConfig {
@Bean
public KieContainer kieContainer() {
KieServices kieServices = KieServices.get();
return kieServices.getKieClasspathContainer();
}
}
3.3 编写Person对象
此处可以简单的理解为drools中的Fact对象。插入到drools中的工作内存后就是Fact对象。
@Data
@AllArgsConstructor
public class Person {
private String name;
private Integer age;
// 是否可以玩游戏,此字段的值,由 drools 引擎计算得出
private Boolean canPlayGame;
}
canPlayGame:此字段的值是由drools引擎计算得出的。
3.4 编写drl文件
package rules
import com.huan.drools.fact.Person
// 用户可以玩游戏
rule "rule_person_can_play_game"
when
$person: Person( age >= 18)
then
$person.setCanPlayGame(true);
System.out.println("触发规则:" + drools.getRule().getName());
end
// 用户不可以玩游戏
rule "rule_person_Can't_play_game"
when
$person: Person( age < 18)
then
$person.setCanPlayGame(false);
System.out.println("触发规则:" + drools.getRule().getName());
end
上方编写了2个规则,都是根据age来进行判断的,从而计算出用户是否可以玩游戏canPlayGame。
3.5 编写kmodule.xml文件
kmodule.xml的路径位于 src/main/resources/META-INF目录下。
3.6 编写Controller触发规则
@RestController
public class PersonController {
private final KieContainer kieContainer;
public PersonController(KieContainer kieContainer) {
this.kieContainer = kieContainer;
}
/**
* 调用drools rule判断用户是否可以玩游戏
*/
@GetMapping("canPlayGame")
public Person canPlayGame(Person person) {
KieSession kieSession = kieContainer.newKieSession("ksession");
try {
kieSession.insert(person);
kieSession.fireAllRules();
} finally {
kieShttp://ession.dispose();
}
return person;
}
}
3.7 测试
3.7.1 用户的年龄>=18岁
➜ curl http://localhost:8081/canPlayGame\?name\=huan\&age\=20
{"name":"huan","age":20,"canPlayGame":true}
可以看出drools中计算出来的canPlayGame值为`true
3.7.2 用户的年龄<18岁
➜ curl http://localhost:8081/canPlayGame\?name\=huan\&age\=16
{"name":"huan","age":20,"canPlayGame":false}
可以看出drools中计算出来的canPlayGame值为false
4、完整代码
https://gitee.com/huan1993/spring-cloud-parent/tree/master/drools/drools-integrated-springboot
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~