带有条件逻辑的Drools动作,如何表达

Drools actions with conditional logic, how to express

我在决定中有这样的规则 Table

rule "Tips 2_525"
    salience 65011
    when
        ub:User(ub.getDrinksCount() > 0, ub.getMissedDrink() >= 2)
    then
        ub.getTip("Attract waiter in "+ub.getAvgTime()+ " minutes")==null?ub.putTip("Attract waiter in "+ub.getAvgTime()+ " minutes",20):ub.putTip("Attract waiter in "+ub.getAvgTime()+ " minutes",(ub.getTip("Attract waiter in "+ub.getAvgTime()+ " minutes").getValue()+2));
end

“==”导致 "The left-hand side of an assignment must be a variable" 和 "Syntax error on token "== 出现问题,AssignmentOperator 无效

我想做的是在我增加分钟计数之前检查这个特定的提示是否在地图中有一个条目,如果没有,那么我将初始值放在地图中。有没有一种方法可以满足流口水的句法约束?

条件表达式 (!) 不是 Java 中的语句,因此在 Drools RHS 上无效。重写:

ub.putTip("Attract waiter in "+ub.getAvgTime()+ " minutes",
          ub.getTip("Attract waiter in "+ub.getAvgTime()+ " minutes")==null
          ? 20
          : ub.getTip("Attract waiter in "+ub.getAvgTime()+ " minutes").getValue()+2));