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);
}
}