java - 从累积函数或规则代码访问 drools session 时钟

标签 java drools drools-fusion

我正在尝试编写一个需要了解当前时间的累积函数。 我显然可以使用 System.currentTimeMillis(),但为了测试我使用伪时钟运行 drools session ,并且希望能够测试此功能。

我正在寻找一种从 getResult() 方法中获取 session 时钟(或者更好的是 KnowledgeRuntime)的方法,或者如果不可能的话,从 drools 代码本身(在 te when 部分)中获取,所以我可以将时钟传递给函数

最佳答案

使用时钟时要小心,因为你可能会遇到很多惊喜。请注意,当将事实/事件插入 session 或通过更新/修改调用进行修改时,将评估约束。这意味着评估约束时的时钟时间可能与触发规则时的时钟时间不同。这就是为什么 drools 不将当前时间直接暴露给 LHS 模式的原因。

话虽如此,执行此操作的方法是将 session 时钟作为事实插入到 session 中并将其与任何其他事实一样绑定(bind):

rule X
when
    $clock : SessionClock()
    ... your patterns / accumulate / etc  ...
then
    ...
end

关于java - 从累积函数或规则代码访问 drools session 时钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719441/

相关文章:

drools - Drools Fusion CEP 中的测试事件到期

jboss - 将Drools与JBossESB集成

java - VBox(或 HBox)内的旋转对象

java - 如何从Java中的数组中提取最长的连续整数序列?

spring-mvc - 如果文件有任何更改,如何扫描 dtable drool 文件并使用 kiescanner drool 版本 7.4..final 再次加载它

spring - ETL、Esper 还是 Drools?

java - 缩放持续到下一个 ImageView

java - IntelliJ IDEA 多次调试进入方法

java - 发现全局预期 com.package.sameobj 的非法类 com.package.sameobj

rest - Apache Camel 和 Drools 融合集成