我是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?有没有人指导我如何使用该课程?
1 回答
'new'做事的方法是定义一个
KieModule
. 基本上,您创建一个包装Drools规则的Maven项目,然后将该项目添加为运行时的依赖项 . 通常,您希望在构建项目时如何follow certain conventions,以便Drools可以自己找到您的规则 .但是,您可能(像我一样)发现在不完全重构现有项目的情况下迁移更容易 . 要实现这一点,您仍然可以通过向
KieFileSystem
添加文件来构建KieService
(新的KnowledgeBase
) . 这是一个粗略的例子:而你're pretty much ready to go. In case it'很有用,我最近的一个演示项目包含了an example of doing this for plain .drl files,根据我的理解,如果你想将电子表格添加到
KieFileSystem
而不是DRL,它应该几乎相同 .