当前位置: 首页 > 知识库问答 >
问题:

Drools:在drl文件中设置标志

贡威
2023-03-14
//created on: 28 Aug, 2013
package flowManagers

import flowHelper.OrderRelatedQueriesFlowHelper;
import entity.Order;
import org.apache.log4j.Logger;

global Logger logger;
global Boolean isValid;

rule "isValid"
no-loop
salience -1
activation-group "AC1" 

when
        $o : Order( OrderRelatedQueriesFlowHelper.isValid($o))
then 
        isValid=Boolean.TRUE;
        logger.info("Valid order..." );
end
    Boolean isValid=Boolean.FALSE;
    String[] noHappyOrderFileList={"NoHappyOrder.drl"};
    StatefulKnowledgeSession ksession = createKnowledgeSession( noHappyOrderFileList );
    ksession.setGlobal("logger", logger);
    ksession.setGlobal( "isValid", isValid);
    for( Order fo : coll )
    {           
        ksession.insert(fo);
    }
    ksession.fireAllRules();

    logger.info("Valid?? : " + isValid );

谁能告诉我我做错了什么吗?

谢谢:)

共有1个答案

谯翔
2023-03-14

Drools与“事实”而不是对象一起工作。事实是对象,但每个对象都不是事实。请想一想boolean.true代表什么。

然后考虑下面的代码:

when
  $orderstatus : OrderStatus(...)
then
  modify ($orderstatus) {
     valid = Boolean.TRUE
  }

OrderStatus事实的有效性只能意味着一件事,但Boolean.true的含义太广,不能用作事实。

 类似资料:
  • 我在这里找到了drools编译器中可用的描述符列表,但我不知道需要使用哪个描述符以及如何定义。? 请任何人帮助我重新爱上这一个。提前谢了。

  • 我使用的是drools版本:5.5.0.final 我已经添加了安装的drools插件,如下链接:是否有用于Eclipse的drools插件? 请任何人帮助我调试drl文件。

  • 我是drools的新手,我无法访问包中的DRL文件。我也是这么想的。我的项目规则的层次结构是这样的 我尝试使用以下代码访问DRL文件: 导致错误:

  • 我对商业规则的世界还很陌生,但我想我已经理解了Drools Expert和Drools Guvnor的概念,但我仍然有点困惑,与Expert相比,到底是如何/何时/为什么使用Guvnor的。而且,无论他们是相互排斥,还是有能力,甚至更愿意并肩工作。下面是一些让我感到困惑的突出主题,以及我关注的问题背后的一些解释,主要集中在应用程序的可维护性上。 Guvnor是否具有Expert plus more

  • 问题内容: 在NetBeans上运行时,以下代码可以正常工作。 但是,一旦将其内置到Jar文件中,该图标就消失了。 任何人都知道出什么问题了吗?我意识到我必须将图标图像放在根目录中,但是,在编译为JAR之后,图标消失了。 谢谢你的帮助 … 大家好,以下代码解决了这个问题, 一旦编译成jar文件,它就可以工作。 问题答案: 用 代替。 注意: 仅当图像位于jar文件的根目录中时,此行才有效。如果不是