package com.zhsw.test;
import java.util.HashMap;
import java.util.Map;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
public class PersonTest {
public static final Map<String, String> RULE_MAP = new HashMap<String, String>();
public static final Map<String, StatefulKnowledgeSession> SESSION_MAP = new HashMap<String, StatefulKnowledgeSession>();
static {
//*****************************年龄************************************
StringBuffer sb = new StringBuffer();
sb.append("package com.zhsw.test\r\n");
sb.append("import com.zhsw.test.Person;\r\n");
sb.append("rule \"YYDR001\"\r\n");
sb.append("\tno-loop true\r\n");
sb.append("\twhen\r\n");
sb.append("p:Person(age <= 18)");
sb.append("\tthen\r\n");
sb.append("\t\tp.setGrade(0);\r\n");
sb.append("end\r\n");
sb.append("rule \"YYDR002\"\r\n");
sb.append("\tno-loop true\r\n");
sb.append("\twhen\r\n");
sb.append("p:Person(age > 18, age < 30)");
sb.append("\tthen\r\n");
sb.append("\t\tp.setGrade(80);\r\n");
sb.append("end\r\n");
sb.append("rule \"YYDR003\"\r\n");
sb.append("\tno-loop true\r\n");
sb.append("\twhen\r\n");
sb.append("p:Person(age >= 30, age <= 50)");
sb.append("\tthen\r\n");
sb.append("\t\tp.setGrade(100);\r\n");
sb.append("end\r\n");
sb.append("rule \"YYDR004\"\r\n");
sb.append("\tno-loop true\r\n");
sb.append("\twhen\r\n");
sb.append("p:Person(age > 50, age <= 60)");
sb.append("\tthen\r\n");
sb.append("\t\tp.setGrade(60);\r\n");
sb.append("end\r\n");
sb.append("rule \"YYDR005\"\r\n");
sb.append("\tno-loop true\r\n");
sb.append("\twhen\r\n");
sb.append("p:Person(age > 60)");
sb.append("\tthen\r\n");
sb.append("\t\tp.setGrade(0);\r\n");
sb.append("end\r\n");
RULE_MAP.put("AGE", sb.toString());
//*****************************名字特殊字符匹配************************************
sb = new StringBuffer();
sb.append("package com.zhsw.test\r\n");
sb.append("import com.zhsw.test.Person;\r\n");
sb.append("rule \"YYDR011\"\r\n");
sb.append("\twhen\r\n");
sb.append("p:Person(\"张三李四\" contains userName)");
sb.append("\tthen\r\n");
sb.append("\t\tp.setGrade(100);\r\n");
sb.append("end\r\n");
RULE_MAP.put("USER_NAME", sb.toString());
}
public static void main(String[] args) {
// StatefulKnowledgeSession kSession = getRuleSession("AGE");
// Random random = new Random();
// for(int i = 0; i < 10; i ++) {
// Person person = new Person();
// person.setAge(random.nextInt(100));
// kSession.insert(person);
// kSession.fireAllRules();
// System.out.println(person);
// }
StatefulKnowledgeSession kSession = getRuleSession("USER_NAME");
Person person = new Person();
person.setUserName("张三");
kSession.insert(person);
kSession.fireAllRules();
System.out.println(person);
person = new Person();
person.setUserName("李四");
kSession.insert(person);
kSession.fireAllRules();
System.out.println(person);
person = new Person();
person.setUserName("李三四");
kSession.insert(person);
kSession.fireAllRules();
System.out.println(person);
}
public static StatefulKnowledgeSession getRuleSession(String ruleIdx) {
StatefulKnowledgeSession kSession = SESSION_MAP.get(ruleIdx);
if(kSession == null) {
System.out.println("初始化RULE");
try {
KnowledgeBuilder kb = KnowledgeBuilderFactory.newKnowledgeBuilder();
//装入规则
kb.add(ResourceFactory.newByteArrayResource(RULE_MAP.get(ruleIdx).getBytes("gbk")), ResourceType.DRL);
KnowledgeBuilderErrors errors = kb.getErrors();
for (KnowledgeBuilderError error : errors) {
System.out.println(error);
}
KnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase();
kBase.addKnowledgePackages(kb.getKnowledgePackages());
kSession = kBase.newStatefulKnowledgeSession();
SESSION_MAP.put(ruleIdx, kSession);
} catch(Exception e){}
}
return kSession;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
DROOLS_TEST.zip (27个子文件)
DROOLS_TEST
.project 387B
src
com
zhsw
test
PersonTest.java 4KB
Person.java 852B
.settings
org.eclipse.jdt.core.prefs 629B
libs
drools-decisiontables-6.5.0.Final.jar 62KB
drools-reteoo-6.5.0.Final.jar 125KB
antlr-runtime-3.5.jar 164KB
ecj-4.4.2.jar 2.2MB
drools-compiler-6.5.0.Final.jar 1.62MB
knowledge-api-6.5.0.Final.jar 316KB
kie-ci-6.5.0.Final.jar 96KB
kie-api-6.5.0.Final.jar 161KB
drools-templates-6.5.0.Final.jar 58KB
drools-verifier-6.5.0.Final.jar 215KB
drools-core-6.5.0.Final.jar 3.44MB
drools-pmml-6.5.0.Final.jar 529KB
mvel2-2.2.8.Final.jar 988KB
slf4j-api-1.7.2.jar 25KB
drools-scorecards-6.5.0.Final.jar 37KB
kie-internal-6.5.0.Final.jar 275KB
drools-persistence-jpa-6.5.0.Final.jar 81KB
drools-jsr94-6.5.0.Final.jar 32KB
protobuf-java-2.6.0.jar 582KB
drools-beliefs-6.5.0.Final.jar 75KB
.classpath 2KB
bin
com
zhsw
test
PersonTest.class 5KB
Person.class 1KB
共 27 条
- 1
资源评论
- 泪痕残2019-05-07垃圾东西,没任何意义
HELLO20161
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功