Drools中的加法程序
出于好奇,我正试图用加法的口水写一条非常简单的规则。(我知道这不是一件非常成熟的事情,但仍然…) 但获取的错误是$firstNum和$secondNum不能分配给变量。帮帮我Drools中的加法程序,drools,Drools,出于好奇,我正试图用加法的口水写一条非常简单的规则。(我知道这不是一件非常成熟的事情,但仍然…) 但获取的错误是$firstNum和$secondNum不能分配给变量。帮帮我 rule "Addition rule" when act : CalcOperation(CalcOperation.ADD, $firstNum : firstNum, $secondNum : secondNum) then $out : $firstNum + $s
rule "Addition rule"
when
act : CalcOperation(CalcOperation.ADD, $firstNum : firstNum, $secondNum : secondNum)
then
$out : $firstNum + $secondNum;;
//logger.info("Result of addition is : "+$out);
end
...............................................................................
Here is the CalcOperation class.
public class CalcOperation {
Double firstNum;
Double secondNum;
public static Boolean ADD;
public static Boolean SUB;
public static Boolean MUL;
public static Boolean DIV;
public CalcOperation(Boolean operation, Double m, Double n){
this.firstNum = m;
this.secondNum = n;
}
您将需要深入研究Java,并深入研究Drools文档 静态变量在您使用它的上下文中没有用处。若你们想有单独的对象进行加法、减法等运算,你们可以将其子类化。实例变量应该是私有的,并且至少有一个getter 在规则中,不能将变量(
$firstNum
等)绑定到字段,除非该变量具有正确的getter(或者是公共的-不推荐)
然后,部分或结果必须用Java编写<代码>$out:$firstNum+$secondNum代码>不是有效的Java语句
下面是一个Java类:
public enum Operator { ADD, SUB, MUL, DIV };
public class Operation {
private double op1;
private double op2;
private Operator op;
public Operation( Operator op, double op1, double op2 ){
this.op = op;
//...
}
public Operator getOp(){ return op; }
//...
}
规则如下:
rule "exec op"
when
$op: Operation( $op: Operator.ADD, $op1: op1, $op2: op2 )
then
System.out.writeln( "result: " + ($op1 + $op2) );
end