为了账号安全,请及时绑定邮箱和手机立即绑定

有没有办法从类路径外部导入规则文件?

有没有办法从类路径外部导入规则文件?

三国纷争 2023-03-23 16:42:05
我在 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条经验 获得超4个赞

对于它的价值,我能够找到解决方法。


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();



查看完整回答
反对 回复 2023-03-23
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信