Drools Planner 规则仅触发一次

发布于 11-18 21:24 字数 382 浏览 2 评论 0原文

我有一个形式的规则,

rule "notBar"
    when
        $foo : Foo(bar == false)
    then
        insertLogical(new IntConstraintOccurrence("notBar", ConstraintType.NEGATIVE_SOFT,
                $foo));
end

我希望看到每个 Foo 都会触发一次,而 bar 为 false,但该规则仅触发一次。令人困惑的是,如果我将 $foo : Foo(bar == false) 更改为 $foo : Foo() 那么它会为所有 Foo 正确触发。 我缺少什么?

I have a rule of the form

rule "notBar"
    when
        $foo : Foo(bar == false)
    then
        insertLogical(new IntConstraintOccurrence("notBar", ConstraintType.NEGATIVE_SOFT,
                $foo));
end

I expect to see this fired once for every Foo with bar being false however the rule is only fired once. Confusingly if I change the $foo : Foo(bar == false) to $foo : Foo() then it is correctly fired for all Foo's.
What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巷子口的你2024-11-25 21:24:30

呸。我是个白痴。我的cloneSolution方法正在调用一个复制构造函数,但它没有正确复制bar。

Bah. I'm an idiot. My cloneSolution method was calling a copy constructor which didn't correctly copy bar.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文