Drools:如何在持续时间规范中使用变量?

时间:2014-06-13 14:41:47

标签: unit-testing variables drools duration drools-fusion

我有一套规则可以每15秒触发一次。

由于我想对这些规则进行单元测试,我想动态设置这个持续时间值。 更多,我想把它放在我的应用程序的配置中。该值可用于20多个规则......)。

我该怎么做?有可能吗?

这是我的规则:

rule "my rule Name"
duration 15000
when
    //match something
then
    //do something
end 

我希望有类似的东西:

gobal String timeDuration;

rule "my rule Name"
duration timeDuration
when
    //match something
then
    //do something
end 

我试过了: - 从我的单元测试中设置一个长整型变量 - 从我的单元测试中放入一个String全局变量集,包含" 15s" - 导入包含静态字段的类并放入


import my.temp.package.RemoveThisUglyClass;
rule "my rule Name"
duration RemoveThisUglyClass.timeDuration
when
    //match something
then
    //do something
end 

似乎没有办法做到这一点。 我对吗? 有什么建议吗?

Thanx!

1 个答案:

答案 0 :(得分:2)

duration规则属性已弃用很长时间了。您可以使用timer

rule "tock"
timer( expr: $d )
when
    A($d: duration )
then
    //...
end

这会在持续时间的毫秒数后触发,但您也可以使用包含“3s”之类的字符串的字符串字段。请参阅文档。