我是 drools 的新手,目前我们在项目中使用 Drools 5.4.0。
目前我们使用Drools 5.4.0的RuleCompiler.java和PackageBuilder.java类来编译.xls文件并创建ruleSetObject。代码片段如下所示
String drlFromFile = null;
if (Pattern.matches(regexPattern, file.getName())) {
if (file.getName().contains("csv") || file.getName().contains("CSV")) {
drlFromFile = RuleCompiler.compileCSV(file);
} else {
drlFromFile = RuleCompiler.compileSpreadSheet(file);
}
if (drlFromFile == null || drlFromFile.isEmpty()) {
logger.debug("Unable to Compile Rule Sheet: " + file.getName());
throw new DroolsParserException("Unable to Compile Rule Sheet: " + file.getName());
}
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl(new StringReader(drlFromFile));
Package ruleSetObject = builder.getPackage();
// Registering the compiled drl object in ruleExecutionSetRegistry
ruleExecutionSetRegistry.registerRuleSetObject(file.getName(), ruleSetObject,
getRuleEngineProviderName());
}
现在我们需要升级到Drools 6.1.0.final,但我在那里找不到PackageBuilder.java类。我试图寻找它的替代品,但什么也没得到。
是否引入了任何新类来代替 PackageBuilder.java?有人指导我如何使用该课程吗?
“新”的做事方式是定义一个KieModule
。本质上,您创建一个包装 Drools 规则的 Maven 项目,然后将该项目添加为运行时的依赖项。一般来说,这期望您会遵循一定的约定 http://docs.jboss.org/drools/release/6.0.1.Final/drools-docs/html_single/#d0e461你如何构建你的项目,以便 Drools 可以自己找到你的规则。
但是,您可能(像我一样)发现无需完全重组现有项目即可更轻松地进行迁移。为了实现这一目标,您仍然可以建立一个KieService
(新的KnowledgeBase
),通过将文件添加到KieFileSystem
。这是这样做的一个粗略示例:
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
kfs.write(ResourceFactory.newFileResource(resource.getPath()));
KieBuilder kieBuilder = kieServices.newKieBuilder(kfs).buildAll();
if (kieBuilder.getResults().hasMessages(Level.ERROR)) {
// It didn't build. Do something about it...
}
KieContainer kieContainer = kieServices
.newKieContainer(kieServices.getRepository().getDefaultReleaseId());
KieSession kieSession = kieContainer.newKieSession();
你已经准备好出发了。如果它有用,我最近的一个演示项目包含对纯 .drl 文件执行此操作的示例 https://github.com/gratiartis/qzr/blob/cf0165b59449b5b6cb08d45fda5148c4dbfff709/qzr-rules/src/main/java/com/sctrcd/qzr/rules/HealthQuizKieConfig.java,据我了解,如果您想将电子表格添加到KieFileSystem
而不是 DRL。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)