我想通过Kie Helper在单个kie会话中加载所有DRL文件并通过规则模板生成DRL。使用以下配置,我可以加载单个DRL文件和DRL内容(String)。但是我想同时加载所有DRL文件和drl内容(String)。
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();
如果我使用它,kieHelper.addResource(ResourceFactory.newClassPathResource(“com / sample / *。drl”),ResourceType.DRL);我收到文件未找到例外。
请告诉我如何实现这一目标。我不想通过Kie类路径容器创建kie会话。感谢任何帮助!
答案 0 :(得分:1)
如果有人在寻找解决方案,请使用此方法。我使用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;
}