嗨,我想在我的网站上做一些改变。所以我写了一套规则,但我不知道如何在我希望它们工作的地方解雇它们,即我网站的原始代码。有人可以帮我吗?
Ankur
问问题
263 次
2 回答
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 对象。看看这里
您可能不希望每次都构建规则(这实际上是时间消费者),因此您可以使用 KnowledgeAgent 或拥有静态知识库,并在规则文件更改时重新创建它。
于 2009-06-25T16:57:38.503 回答
0
缺少一些信息(例如 Drools 的哪个版本、您正在运行的环境等),所以我会尝试以一般的方式回答,如果您需要更具体的信息,请告诉我:
通常,在 Drools 中,您将对象“断言”到工作内存中(使用诸如 assertObject 之类的方法),这允许规则引擎知道它们,然后,当您在该工作内存上执行“fireAllRules”时,所有规则都已执行(因此,您可以在需要时在工作内存上显式调用 fireAllRules 方法 - 我认为这就是您要问的)。
有关更多详细信息,如果您还没有看过,可以查看: http: //legacy.drools.codehaus.org/Working+Memory。
谢谢加迪
于 2009-06-01T07:34:31.760 回答