0

我通过 .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,就好像时间戳没有更新一样)。

4

1 回答 1

1

如果你使用

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

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

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

于 2014-01-22T16:58:06.377 回答