我的博士是:
rule "Active Orders"
dialect "mvel"
//no-loop
when
m: Order( status == Order.ENABLED, id : id )
then
System.out.println( "Order Id is: " + id );
modify ( m )
{
status = Order.DISABLED
};
end
我将一个 Order 实例传递给口水,如下所示:
Order order = new Order();
order.setId(100);
order.setStatus( Order.ENABLED );
ksession.insert( order );
ksession.fireAllRules();
我看到规则被消息无限触发:
Order Id is: 100
Order Id is: 100
Order Id is: 100
.....
我可以理解无限循环,但关键是我在修改块中将订单状态设置为禁用:
状态 = Order.DISABLED
因此,when 规则再次被触发......不应该满足 WHEN 条件,即 status == Order.ENABLED ,并且我不应该多次看到 system.out.println 消息。
任何想法,我做错了什么?
(请注意:我的问题不是无限循环,而是为什么在对象修改后规则评估不正确)