2016-08-18 41 views
1

我正在使用KieFileSystem.write來動態加載.drl文件。它在虛擬文件系統中寫入文件的位置有關係嗎?我在網上找到的所有教程似乎都建議src/main/resources/myRules.drl,據我所知,寫入其他位置的規則(如myRules.drl)未被加載。在Drools中動態加載規則時的文件位置6

我想我讀了Drools掃描類路徑.drl文件的地方。這是否意味着當虛擬文件系統被明確創建或者虛擬文件替換物理文件系統時,它也會從物理文件系統加載文件?

規則加載是如何工作的?

我沒有爲我的項目使用maven順便說一句。

+0

也許這應該有助於http://stackoverflow.com/questions/23542610/drools-6-0-dynamically-load-rules-at-runtime – piyushj

回答

0

規則很簡單。您需要明確告訴drools您嘗試加載的資源類型。 ResourceFactory支持的classpath資源,溪流,文件等

這裏是你如何可以使用自定義的文件資源獲得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);