我在 eclipse 中擺弄 Drools 決策表并注意到我能夠將規則文件導入我的 Kie 會話的唯一方法是將文件直接放在 eclipse 項目中。我想知道是否有一種方法可以訪問位于“C:Users/user/documents/rules/”中某處的規則文件,或者該文件是否必須位于工作區中。我對 Drools 或 KIE 不是很熟悉,所以我對這些服務的唯一了解涉及網站上的文檔以及 google 和 youtube 上的各種教程。到目前為止我找到的代碼似乎還不夠。KieServices ks = KieServices.Factory.get();KieContainer kContainer = ks.getKieClasspathContainer();KieSession kSession = kContainer.newKieSession("ksession-dtables");上面直接引用了一個在 xml 文件中預定義的會話,我不確定如何定義我自己的會話以訪問 eclipse 項目之外的文件。KieServices kieServices = KieServices.Factory.get();Resource dt = ResourceFactory .newClassPathResource("Sample.xls", getClass());KieFileSystem kieFileSystem = kieServices.newKieFileSystem().write(dt);KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem);kieBuilder.buildAll();KieRepository kieRepository = kieServices.getRepository();ReleaseId krDefaultReleaseId = kieRepository.getDefaultReleaseId();KieContainer kieContainer = kieServices.newKieContainer(krDefaultReleaseId);KieSession kieSession = kieContainer.newKieSession();而這個塊稍微好一點,因為我可以直接引用項目中的一個文件,但問題是它仍然需要在項目中。
1 回答

收到一只叮咚
TA貢獻1821條經驗 獲得超5個贊
對于它的價值,我能夠找到解決方法。
Drools 有一個庫試圖將任何 excel 決策表文件轉換為 DRL 文件。使用這個庫,我使用了我的 excel 文件的路徑,然后基本上將 DRL 轉換為一個字符串,然后添加到 KIE 會話中。它最終看起來像這樣:
import org.drools.decisiontable.SpreadsheetCompiler;
String rulesExcel = "C:\\my\\path\\file.xls";
InputStream is = null;
try {
is= new FileInputStream(rulesExcel);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
SpreadsheetCompiler sc = new SpreadsheetCompiler();
String rules=sc.compile(is, InputType.XLS);
KieSession kieSession = new KieHelper().addContent(rules, ResourceType.DRL).build().newKieSession();
添加回答
舉報
0/150
提交
取消