Drools Fusion。更新@timestamp。为什么我无法从时间戳字段中检索正确的值?

时间:2014-01-22 15:50:38

标签: timestamp drools drools-fusion

我用.drl语法声明了这个事件:

declare Event
  @role(event)
  @timestamp(time)
time : long 
end

所以我可以获得自动设置的“时间”字段。

在我的java规则中,我想检索“时间”:

when

  Event($tsmp:time)

then
  System.out.println($tsmp);

end

我总是打印“0”,虽然我推进了伪时钟

session.getClock().advanceTime(10, TimeUnit.MILLISECONDS);

(如果在我尝试从时钟中检索currentTime之后,它返回10,但是打印到规则总是返回0,就像时间戳没有更新一样。)

1 个答案:

答案 0 :(得分:1)

如果您使用

@timestamp(time) // this class member contains the timestamp

在声明中,它通知编译器您的字段称为time包含时间。 暗示引擎应该设置时间 - 您必须在插入之前执行此操作。当然,您可以使用伪时钟来获得合适的时间。

只有在声明中省略这一点,您才能在完全由Drools管理的字段中实现时间戳的自动设置。