如何在单个会话

时间:2017-12-26 02:18:09

标签: drools kie

我想通过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会话。感谢任何帮助!

1 个答案:

答案 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;


  }