您好,我想在我的网站上进行一些改动。所以我写了一套规则,但我不知道如何在我希望它们工作的地方解雇它们,即我的网站的原始代码。任何人都可以帮助我吗?
答案 0 :(得分:0)
缺少一些信息(比如Drools版本,您正在运行的环境等),所以我会尝试以一般方式回答,如果您需要更具体的信息,请告诉我:< / p>
一般来说,在Drools中你'将'对象置于工作内存中(使用类似的方法,例如,assertObject ..),这允许规则引擎知道它们,然后,当你在它上面执行'fireAllRules'时工作内存,所有规则都被执行(所以,当你想要时,你明确地在工作内存上调用fireAllRules方法 - 我认为这就是你所要求的)。
有关详细信息,如果您尚未查看,可以查看:http://legacy.drools.codehaus.org/Working+Memory。
感谢 迦底
答案 1 :(得分:0)
当你拥有你的abc对象时,这就是你插入工作记忆的事实。例如:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newFileSystemResource( fileName ), ResourceType.DRL );
if (kbuilder.hasErrors() ) {
System.out.println( kbuilder.getErrors() );
} else {
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
ksession.execute( abc );
}
然后,当执行完成时,您将获得修改后的abc对象。看看here
您可能不希望每次都构建规则(这实际上是时间消费者),因此您可以使用或使用KnowledgeAgent或拥有静态知识库,并在规则文件发生更改时重新创建它。