首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用insertLogical时停止使用流口水循环

使用insertLogical时停止使用流口水循环
EN

Stack Overflow用户
提问于 2015-05-03 12:41:07
回答 2查看 440关注 0票数 1

我在drools中使用insertLogical()。

以下是规则:

代码语言:javascript
运行
复制
rule "logical insert"
salience 100
    when
        $p : Person( $number : number > 1, $name : name == "AB" || name == "AC" )
        not ( exists( PersonConfig( person == $p )))
    then
        System.out.println("Inserted PC");
        insertLogical(new PersonConfig(16,$name,$p));
end

rule "Check Inserted"
salience 90
    when
        $pc : PersonConfig(  )
    then
        System.out.println("Inserted PC Object: "+$pc);
end

rule "Retract Person Config Rule When Clause"
salience 80
    when
        $p : Person( number > 1, name == "AB" || name == "AC"  )
    then
        System.out.println("Retracting : "+$p);
        //$p.setName("BD");
        //retract($p);
        update($p);
end

rule "Checking Person Config Exist"
salience 70
    when
        not ( exists( PersonConfig(  ) ))
    then
        System.out.println("PC not Exists");
end

下面我要做的是:

  1. 我正在选择所有插入的person类对象,并在此基础上尝试基于某些条件来实现insertLogical (PersonConfig())对象。
  2. 现在,在中间,我正在对Person类对象进行一些更新,但是完成insertLogical的条件保持不变。这导致了规则“逻辑插入”的触发。然后,我试图通过设置以下条件来限制这种射击。 不存在( PersonConfig( person == $p ))

也就是说,如果没有具有相同人引用的属性的PersonConfig对象。但这是行不通的。

请检查并提供一些解决方案。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-03 14:41:20

通过@PropertyReactive注释;它按照我的expectation.It工作,不会重新激活“逻辑插入”规则,也不会进入循环。

票数 0
EN

Stack Overflow用户

发布于 2015-05-03 13:29:50

我找到了一种通过@PropertyReactive批注的方法。通过这种方式,它正在按照我的期望工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30013925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档