Drools 决策表用法

1、依赖引入

引入自己对应版本的drools-decisiontables依赖包

	<dependency>
		<groupId>org.drools</groupId>
		<artifactId>drools-decisiontables</artifactId>
		<version>7.11.0.Final</version>
	</dependency>

2、决策表绘制

创建一个职员Staff类,并定义相关属性

public class Staff {

    private String name; //姓名
    private int age; //年龄
    private BigDecimal income;  //月收入

	//get/set方法...
}

编写如下决策表,根据收入判断职员的等级(初级或中级)
在这里插入图片描述
RuleSet表示规则包名定义
Import表示导入的类
RuleTable表示自定义的规则名称
CONDITION表示条件部分(即when部分)
ACTION表示结果部分(即then部分)

3、决策表执行

编写测试方法testDecision()

	@Test
	public void testDecision() {

		// 1.打印输出生成的drl文件内容
		SpreadsheetCompiler compiler = new SpreadsheetCompiler();
		String drl = compiler.compile(ResourceFactory.newClassPathResource("com/decision/test/decision.xls"), InputType.XLS);
		System.out.println(drl);

		// 2. 初始化KieSession会话
		KieContainer container = KieServices.get().getKieClasspathContainer();
		Results results = container.verify();
		if (results.hasMessages(Message.Level.ERROR)) {
			List<Message> messages = results.getMessages();
			for (Message message : messages) {
				System.out.println("错误信息: "+ message);
			}
		}
		KieSession kieSession = container.newKieSession("decision-test-rules");

		// 3.定义两个职员对象
		Staff staff1 = new Staff();
		staff1.setName("张三");
		staff1.setIncome(new BigDecimal(8000));
		Staff staff2 = new Staff();
		staff2.setName("李四");
		staff2.setIncome(new BigDecimal(15000));

		// 4.传入fact对象,匹配执行规则
		kieSession.insert(staff1);
		kieSession.insert(staff2);
		int count = kieSession.fireAllRules();
		System.out.println("Fire " + count + " rule(s)!");
		kieSession.dispose();
	}

4、执行结果

...
规则一匹配结果:张三月收入[8000],为初级员工
规则二匹配结果:李四月收入[15000],为中级员工
Fire 2 rule(s)!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值