2017-12-26 15 views
0

Kie Helperを使用して、単一のキーセッションですべてのDRLファイルをロードし、DRLを生成したいとします。以下の設定では、個々のDRLファイルとDRLの内容(String)を読み込むことができます。しかし、私はすべてのDRLファイルとdrlの内容(String)を同時にロードしたいと思います。すべてのDRLファイルとDRL文字列コンテンツをシングルキーセッションで読み込む方法

 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 /サンプル/ * DRL。")、ResourceType.DRL)。 Fileが例外を見つけられないようになっています。

これを達成する方法を教えてください。私はキエクラスパスコンテナを介してキエセッションを作成したくありません。これについて助けてくれてありがとうございます!

+0

すべての.drlファイルに対して 'kieHelper.addResource(...)'を繰り返し呼び出さないのはなぜですか? – laune

+0

こんにちはLaune、これは1つのオプションだが、実行時に生成されるDRLファイルがあることに同意します。私もそれらをロードしたいと思います。私はこのkieHelper.addResource(ResourceFactory.newClassPathResource( "*。drl")、ResourceType.DRL)を試しました。しかし、実際のファイル名を探しています。 Kie Helperを使って* .drlを読み込む方法はありますか? – Suresh

+0

ディレクトリからファイル名をワイルドカードを含むパス名と照合する方法を知っていますか? – laune

答えて

0

ソリューションをお探しの場合は、こちらをご利用ください。私は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; 


    } 
関連する問題