规则引擎 Drools 6.4.0Final版本2

来源:互联网 发布:年度质量数据汇总图表 编辑:程序博客网 时间:2024/06/16 01:48

上一篇文章讲了 规则引擎的简单版本,可以说 是 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();    }

其他原理同上一篇博客一样,以及测试代码,这儿不多说…

0 0
原创粉丝点击