Drools 如何在单个kie会话中加载所有DRL文件和DRL字符串内容
我想通过kie助手在单个kie会话中加载所有DRL文件并通过规则模板生成DRL。通过下面的配置,我可以加载单个DRL文件和DRL内容(字符串)。但是我想同时加载所有DRL文件和DRL内容(字符串)Drools 如何在单个kie会话中加载所有DRL文件和DRL字符串内容,drools,kie,Drools,Kie,我想通过kie助手在单个kie会话中加载所有DRL文件并通过规则模板生成DRL。通过下面的配置,我可以加载单个DRL文件和DRL内容(字符串)。但是我想同时加载所有DRL文件和DRL内容(字符串) KieHelper kieHelper = new KieHelper(); kieHelper.addContent(drl, ResourceType.DRL); kieHelper.addResource(ResourceFactory.newClassPathR
KieHelper kieHelper = new KieHelper();
kieHelper.addContent(drl, ResourceType.DRL);
kieHelper.addResource(ResourceFactory.newClassPathResource("com/sample/Rules.drl"), ResourceType.DRL);
Results results = kieHelper.verify();
KieSession session = kieHelper.build().newKieSession();
如果我使用它,则为kieheloper.addResource(ResourceFactory.newClassPathResource(“com/sample/*.drl”)、ResourceType.drl;我正在获取文件未找到异常
请让我知道如何做到这一点。我不想通过kie类路径容器创建kie会话。谢谢你在这方面的帮助 如果有人在寻找解决方案,请使用此。我使用Spring的PathMatchingPatternResolver加载所有DRL文件
private static KieHelper getResourceFolderFiles (String folder, KieHelper kieHelper) throws IOException {
ClassLoader cl = Thread.currentThread().getContextClassLoader().getClass().getClassLoader();
ResourcePatternResolver resolver = new
PathMatchingResourcePatternResolver(cl);
Resource[] resources = resolver.getResources("classpath*:com/sample/rules/**/*.drl") ;
for (Resource resource: resources){
kieHelper.addResource(ResourceFactory.newFileResource(resource.getFile()),
ResourceType.DRL);
} } return kieHelper;
}
为什么不为所有的.drl文件重复调用
kieheloper.addResource(…)
?嗨,劳恩,我同意这是一个选项,但在运行时会生成一些drl文件。我想把这些也装进去。我尝试了这个kieheloper.addResource(ResourceFactory.newClassPathResource(“*.drl”)、ResourceType.drl);但它正在寻找实际的文件名。有没有一种方法可以使用Kie Helper加载*.drl?您肯定知道如何将目录中的文件名与包含通配符的路径名进行匹配吗?您的意思是?kieheloper.addResource(ResourceFactory.newClassPathResource(“com/sample/*.drl”)、ResourceType.drl);这不起作用。您需要编写几行Java代码。