2016-08-18 4 views
1

KieFileSystem.writeを使用して.drlファイルを動的にロードしています。ファイルが仮想ファイルシステム内で書き込まれる場所は重要ですか?私がオンラインで見つけたすべてのチュートリアルは、src/main/resources/myRules.drlを示唆していて、他の場所に書き込まれたルール(たとえば、myRules.drl)がロードされていないと言うことができます。Droolsでルールを動的にロードするときのファイルの場所6

私はDroolsが.drlファイルのクラスパスをスキャンする場所を読んでいると思います。これは、仮想ファイルシステムが明示的に作成された場合や、仮想ファイルシステムが物理ファイルシステムに置き換えられた場合に、物理ファイルシステムからファイルをロードすることを意味しますか?

ルールロードの仕組みについての詳細な説明はありますか?

私は自分のプロジェクトBTWにmavenを使用していません。

+0

おそらくこれが役立ちますhttp://stackoverflow.com/questions/23542610/drools-6-0-dynamically-load-rules-at-runtime – piyushj

答えて

0

ルールは単純です。 droolsにロードしようとしているリソースの種類を明示的に伝える必要があります。 ResourceFactory

など、クラスパスのリソースをサポートストリーム、ファイル例

ここでは、カスタムファイルのリソースを使用してKieBaseインスタンスを取得する方法の例です。

List<Resource> resources = Arrays.asList(
    // loads file from "real" filesystem 
    ResourceFactory.newFileResource("example.drl") 
); 

KieServices kieServices = Factory.get(); 
KieFileSystem kfs = kieServices.newKieFileSystem(); 
resources.forEach(kfs::write); 
KieContainer kieContainer = 
    kieServices.newKieContainer(
     kieServices.getRepository().getDefaultReleaseId()); 

KieBaseConfiguration config = 
    Factory.get().newKieBaseConfiguration(); 
KieBase base = kieContainer.newKieBase(config); 
関連する問題