KieHelper
有时候可以通过KieHelper来创建一个KieSession,例如
private KieSession createKieSessionFromDRL(String drl) { KieHelper kieHelper = new KieHelper(); kieHelper.addContent(drl, ResourceType.DRL); Results results = kieHelper.verify(); if (results.hasMessages(Message.Level.WARNING, Message.Level.ERROR)) { List<Message> messages = results.getMessages(Message.Level.WARNING, Message.Level.ERROR); for (Message message : messages) { System.out.println("Error: " + message.getText()); } throw new IllegalStateException("Compilation errors were found. Check the logs."); } return kieHelper.build().newKieSession(); }
这个方法的实现很直接。它通过KieHelper来编译一个字符串形式规则。并且kieHelper可以在编译期间检查规则的错误,如果有错误的话,可以通过Results进行输出。如果没有错误的话,直接创建一个KieSession。
KieHelper工具类并不是Drools对外开房的API的一部分。这个类提供了一些很方便的可以省略很多模板代码的方式来创建KieSession。由于这个类并不是Kie-api(Drools中的一个依赖)的一部分,因此虽然其使用方便,但是当使用Drools最新的版本时有可能出现向后不兼容的问题(意思是,在最新的Drools版本中有可能会删除或者禁用掉这个类)
KieHelper这个类提供了很多不同的方法可以向KieContainer中添加资源(例如规则),然后验证,最终创建出一个KieContainer。对于KieHelper的一个经典使用方式的代码片段类似上面的代码片段。
KieHelper不仅仅用来单元或者继承测试。你的应用可以使用KieHelper以细粒度的(fine-grained)方式类控制你所需要加入到KieContainer中的资源。典型的使用场景例如:你可以通过KieHelper来向KieContainer中动态加载字符串形式的规则。
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接