您的位置:首页 > 其它

规则引擎 Drools 6.4.0Final版本2

2016-10-27 16:30 197 查看
上一篇文章讲了 规则引擎的简单版本,可以说 是 drl配置文件版本,现在将一下数据库版本,这样数据就可以共享,灵活性更加大一些吧,.

规则引擎版本1

其实原理和上一篇一样,都是一样的模式,今天简单介绍一下,

private KieContainer loadKieContainerDao() throws IOException {

KieServices kieService = KieServices.Factory.get();
final KieRepository kieRepository = kieService.getRepository();
kieRepository.addKieModule(kieRepository::getDefaultReleaseId);
KieFileSystem kfs = kieService.newKieFileSystem();
String[] files = listRulesDao();

for (String file : files) {
String myString = IOUtils.toString(new ByteArrayInputStream(file.getBytes()), "UTF-8");
String path = "src/main/resources/xxx.drl";
kfs.write(path, myString );
}
KieBuilder kieBuilder = kieService.newKieBuilder(kfs);
kieBuilder.buildAll(); // kieModule is automatically deployed to KieRepository if successfully built.
return kieService.newKieContainer(kieRepository.getDefaultReleaseId());
}


本demo用string代替,读者课自行处理,得到自己想要的类容;

private String[] listRulesDao() {
String s = "package drools;\n" +
"import com.sdingba.Drools.demo1.person;\n" +
"\n" +
"rule showdemo\n" +
"when\n" +
"    $person : person(age>3)\n" +
"//    System.out.println(\"xxxxx\");\n" +
"then\n" +
"    $person.toString(\"sdfsdf\");\n" +
"    $person.setName(\"xxxxxx\");\n" +
"end";
return new String[]{s};
}


@Bean
@ConditionalOnMissingBean(KieSession.class)
public KieSession kieSession() throws IOException {
return loadKieContainerDao().newKieSession();
}


其他原理同上一篇博客一样,以及测试代码,这儿不多说…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: