0
我沒有得到任何具體的方式使用Drools的6 我曾嘗試使用下面的示例代碼做到這一點做到這一點:這裏 `如何使用Drools 6導入Drools決策表目前在多張相同的Excel文件中?
private static KieBase readBase(String strFilePath) throws IOException, BiffException {
DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration();
dtconf.setInputType(DecisionTableInputType.XLS);
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
File xls = new File(strFilePath);
SpreadsheetCompiler compiler = new SpreadsheetCompiler();
Workbook w;
String sheetName = "";
FileInputStream in = null;
try {
w = Workbook.getWorkbook(xls);
for (Sheet sheet : w.getSheets()) {
sheetName = sheet.getName();
in = new FileInputStream(xls);
System.out.println("The sheet name is : " + sheetName);
compileSheet(kbuilder, xls, compiler, sheetName, in);
}
} catch (DecisionTableParseException e) {
System.out.println("Failed to parse spreadsheet " + sheetName + " "
+ e);
}
KieBase k = KnowledgeBaseFactory.newKnowledgeBase();
// kContainer.
KnowledgeBase kb = KnowledgeBaseFactory.newKnowledgeBase();
kb.addKnowledgePackages(kbuilder.getKnowledgePackages());
return kb;
}
private static KnowledgeBuilder compileSheet(KnowledgeBuilder kbuilder, File xls, SpreadsheetCompiler compiler, String sheetName, FileInputStream in) {
try {
String compiled = compiler.compile(in, sheetName);
kbuilder.add(ResourceFactory.newReaderResource(new StringReader(compiled)), ResourceType.DRL);
System.out.println("***************************************drl**************************************");
System.out.println(compiled);
} catch (DecisionTableParseException dtpe) {
if (dtpe.getMessage().equals("No RuleTable's were found in spreadsheet.")) {
System.out.println("No rule tables found in sheet {}" + sheetName);
} else {
throw dtpe;
}
}
return kbuilder;
}
`
問題是Drools的6使用KIEBase不是知識庫,所以我沒有找到適合在KieBase中加載編譯表的方法。在Drools 6中還有其他方法嗎?