0
私はDROOLSを使ってプログラムを書いています。私はDSLを使っています。質問があります。 DSLRファイルを変更した後(削除、追加)、作業メモリー内のルールを更新しますか?ルールを追加すると、新しいルールは作業メモリに表示されません。DSLRファイルを変更した後のルールの更新方法は?
public class Drools {
private KnowledgeBase knowledgeBase;
public Drools() {
knowledgeBase = createKnowledgeBaseFromDSL();
}
private KnowledgeBase createKnowledgeBaseFromDSL() {
KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
builder.add(ResourceFactory.newClassPathResource("rules/simple.dsl"), ResourceType.DSL);
builder.add(ResourceFactory.newClassPathResource("rules/simple.dslr"), ResourceType.DSLR);
if (builder.hasErrors()) {
throw new RuntimeException(builder.getErrors().toString());
}
KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages());
return knowledgeBase;
}
public void fireAllRules() throws IOException {
Properties properties = new Properties();
try (BufferedReader fileReader = Files.newBufferedReader(Paths.get("src/main/resources/setting.properties"))) {
properties.load(fileReader);
StatefulKnowledgeSession session = knowledgeBase.newStatefulKnowledgeSession();
try {
HttpReader reader = new HttpReader(properties.getProperty("url"));
session.insert(reader);
session.fireAllRules();
} finally {
session.dispose();
}
}
}
}