Drools使用

1.引入droolsjar包

<!-- drools start -->
<dependency>
	<groupId>org.drools</groupId>
	<artifactId>drools-compiler</artifactId>
	<version>6.1.0.Final</version>
</dependency>
<!-- drools end -->

2.新建drools规则文件.drl

年龄能力规则
当年龄小于25岁,输出低
当年龄大于等于25,年龄小于35,输出中
当年龄小于35岁,输出高
ability.drl

rule "Age_01"
	activation-group "Age"
	dialect "mvel" 
	when
		inputDemo:InputDemo(age <25)
		outputDemo: OutputDemo()
	then
		outputDemo.setAbility("低");
end

rule "Age_02"
	activation-group "Age"
	dialect "mvel" 
	when
		inputDemo:InputDemo(age >=25 && age <35)
		outputDemo: OutputDemo()
	then
		outputDemo.setAbility("中");
end

rule "Age_03"
	activation-group "Age"
	dialect "mvel" 
	when
		inputDemo:InputDemo(age >= 35)
		outputDemo: OutputDemo()
	then
		outputDemo.setAbility("高");
end

3.java代码

3.1InputDemo文件

package com.yinzhen.rule.ability;

public class InputDemo {

	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

3.2OutputDemo文件

package com.yinzhen.rule.ability;

public class OutputDemo {
	
	private String ability;

	public String getAbility() {
		return ability;
	}

	public void setAbility(String ability) {
		this.ability = ability;
	}
	
}

3.3测试drl

package com.yinzhen.rule.ability;

import java.util.HashMap;
import java.util.Map;

import org.kie.api.KieBase;
import org.kie.api.io.Resource;
import org.kie.api.io.ResourceType;
import org.kie.api.runtime.KieSession;
import org.kie.internal.builder.KnowledgeBuilder;
import org.kie.internal.builder.KnowledgeBuilderFactory;
import org.kie.internal.io.ResourceFactory;

public class TestAbility {
	
	private static Map<String, KieBase> knowBuilderMap = new HashMap<String, KieBase>();
	private static String DRL_FILE_DIR = "src/main/resources";
	
	public static void main(String[] args) {
		InputDemo inputDemo = new InputDemo();
		inputDemo.setAge(35);
		OutputDemo outputDemo = new OutputDemo();
		
		String drlName = "ability";
		String result = "";
		
		KieSession kieSession = null;
		KieBase kBase = null;
		
		try {
			if(!knowBuilderMap.containsKey(drlName)){
			    KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
			    Resource urlResource = ResourceFactory.newFileResource(DRL_FILE_DIR+"/"+drlName+".drl");
			    kBuilder.add(urlResource, ResourceType.DRL);
			    kBase = kBuilder.newKnowledgeBase();
			    knowBuilderMap.put(drlName, kBase);
			}else{
			    kBase = knowBuilderMap.get(drlName);
			}
			
			kieSession = kBase.newKieSession();

			kieSession.insert(inputDemo);
			kieSession.insert(outputDemo);
			kieSession.fireAllRules();
			
			result = outputDemo.getAbility();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
            if(kieSession != null){
                kieSession.dispose();
            }
        }
		
		System.out.println(result);
	}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值