python 规则引擎 drools_Drools规则引擎入门demo

本文介绍了如何使用Drools规则引擎解决业务规则与代码分离的问题。通过一个简单的年龄判断示例,展示了从环境搭建到编写DRL规则文件,再到Java代码调用执行的全过程。在intellij+maven环境中,创建Drools规则文件,定义Person类,并在测试类中插入对象触发规则执行,输出符合或不符合年龄要求的提示。
摘要由CSDN通过智能技术生成

简单介绍

互联网旧系统维护中往往存在非常多的规则(比如:age < 16 || age > 50 -> REJECT )。最便捷的实现就是用 if-else 来写,但是随着规则的增加以及需求的变动,代码将变得越来越难阅读和变动。这时候就要引入Drools等规则引擎了。Drools就是为了解决业务代码和业务规则分离的引擎。

开发环境搭建

intellij+maven环境下

安装JBoss Drools Support插件。主要是为了intellij可以识别drools文件,使用快捷的智能提示。

maven依赖中引入开发包

org.drools

drools-compiler

6.5.0.Final

hello world

需求:判断一个人的 age < 16 || age > 50 的时候,打印年龄不符合要求。

1、创建maven工程,引入依赖

2、新建配置文件/src/resources/META-INF/kmodule.xml

3、新建drools规则文件/src/resources/rules/age.drl

项目结构图

image.png

kmodule.xml

注意,此处的packages要和文件结构路径下的drl文件存储路径一致

Person

@Getter

@Setter

public class Person {

private String name ;

private Integer age ;

public Person(String name, Integer age) {

this.name = name;

this.age = age;

}

}

age.drl

import com.koolearn.drools.po.Person // 导入类

dialect "mvel"

rule "age" // 规则名,唯一

when

$person : Person(age<16 || age>50) //规则的条件部分

then

System.out.println($person.getName()+":的年龄为"+$person.getAge()+"====不符合要求!");

end

rule "rightAge" // 规则名,唯一

when

$person : Person(age>=16 && age<=50) //规则的条件部分

then

System.out.println($person.getName()+":的年龄为"+$person.getAge()+"====符合要求!");

end

test 类

public class HelloTest {

private static KieContainer container = null;

private KieSession statefulKieSession = null;

@Test

public void test() {

KieServices kieServices = KieServices.Factory.get();

container = kieServices.getKieClasspathContainer();

statefulKieSession = container.newKieSession("myAgeSession");

Person person = new Person("Kevin",12);

statefulKieSession.insert(person);

statefulKieSession.fireAllRules();

Person person2 = new Person("Jack",50);

statefulKieSession.insert(person2);

statefulKieSession.fireAllRules();

statefulKieSession.dispose();

}

}

运行调用

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值