【发布时间】:2015-02-05 03:49:29
【问题描述】:
我想将业务逻辑与 Web 应用程序(spring MVC + Hibernate)分开,以提高可维护性,并且我不想重新启动服务器以更改业务逻辑。如果我为业务变化修改 DRL 文件,Drool 引擎会选择最新的 DRL 吗?
我做了一个测试应用程序,但更新的 DRL 文件没有加载到“知识库”中。有什么方法可以在 Drools 引擎中加载更新的 DRL/规则而无需重启服务器?
Account.java
public class Account {
private Integer balance;
// setter & getter
}
并且测试程序有:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("myrule.drl"), ResourceType.DRL);
KnowledgeBase kbase = kbuilder.newKnowledgeBase();
StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
Account account = new Account(1000);
account.withdraw(500);
ksession.execute(account);
而 DRL 是
rule "belowLimit"
when
$account : Account( balance < 700 )
then
System.out.println("Notify user");
end
【问题讨论】:
标签: spring drools drools-guvnor