流口水相关的问题

时间:2009-06-01 07:14:55

标签: projects-and-solutions drools

您好,我想在我的网站上进行一些改动。所以我写了一套规则,但我不知道如何在我希望它们工作的地方解雇它们,即我的网站的原始代码。任何人都可以帮助我吗?

2 个答案:

答案 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或拥有静态知识库,并在规则文件发生更改时重新创建它。