在drl文件中使用declare语句

时间:2015-03-16 07:27:35

标签: drools declare

我在DRL文件中声明了一个SensorMode对象

declare SensorMode
  modeOffset: Integer
end

我已使用

将值设置为modeOffset
FactType factType=kbase.getFactType("com.yob.pestway.
valueobjects",  "SensorMode");
Object nc = factType.newInstance(); 
factType.set(nc, "modeOffset",sensorDataVO.getModeOffset());

我需要在以下规则中使用modeOffset,它给出了一个错误,说$ mode.modeOffset不可见。

rule "Difference in offsets"
dialect "java"
no-loop true
when
    $mode:SensorMode();
    $snrData : SensorDataVO(getWeightOffset().size()>0,
    $initOffset:getInitialOffset());
then
    System.out.println("---modeOffset---"+$mode.modeOffset);
    update($snrData);
end

你能否建议

1 个答案:

答案 0 :(得分:1)

两种选择:

rule "Difference in offsets"
dialect "java"
no-loop true
when
    $mode:SensorMode( $mo: modeOffset );
    //...
then
    System.out.println("---modeOffset---"+ $mo);
    //...
end

或者:

rule "Difference in offsets"
dialect "java"
no-loop true
when
    $mode:SensorMode();
    //...
then
    System.out.println("---modeOffset---"+ $mode.getModeOffset() );
    //...
end

dialect "mvel"可能是第三种选择,但这可能取决于您使用的Drools版本。