【问题标题】:Drools rule not true, how to use 'and'?Drools 规则不正确,如何使用“和”?
【发布时间】:2014-11-10 17:41:49
【问题描述】:

我正在尝试进行以下工作:

rule "userCount"
    when
        $user : User()
        $minutes : Integer()
            from accumulate(
                            MinutesPerUser( user == $user, $time : time) 
                            and Time(this == $time),
                            sum(1)
                           )
    then
        System.out.println( $minutes );
end

但似乎and Time(this == $user) 部分从来都不是真的。如果我删除那部分,我会得到一些 println 输出。

上面的代码有什么问题?

【问题讨论】:

    标签: jboss drools rule-engine rule drools-planner


    【解决方案1】:

    不知道Java类之间的关系,很难说清楚。但是从

     $user : User()
     //...
     and Time(this == $user),
    

    很明显 Time 必须是 User 的超类,反之亦然:否则无法满足此约束。

    我不知道你应该写什么,因为没有具体说明应该做什么。

    顺便说一句,sum(1) 看起来很可疑,因为count(1) 会更好地表达,产生相同的结果。

    【讨论】:

    • Argh,请原谅我,劳恩,我的代码中有错字。 $time 是我在生产代码中的内容,我只是在其中留下了一个“调试”错字:(
    • 现在我们需要一组事实 - 即将其插入工作内存的代码 - 应该会产生匹配。您应该将此代码添加到您的 Q 中。
    猜你喜欢
    • 2019-10-08
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2015-02-03
    • 1970-01-01
    相关资源
    最近更新 更多