我们有一条规则,当客户拥有特定的产品代码时,需要触发该规则,最初,我们将规则指定如下:
rule "DENTAL"
when
$bill : Bill ( $client : Client != null )
Client ( (productCode/1000) >= 102 && (productCode/1000) < 103 ) from $client
then
$bill.add(13300);
end
在压力测试期间,我们发送的productCode处于101范围内。该规则直到某个时刻开始反复射击才达到预期。日志(=“ then”中的System.out)清楚地表明所计算的(productCode / 1000)productCode为101。
我们将规则更改为:
rule "DENTAL"
when
$bill : Bill ( $client : Client != null )
Client ( productCode >= 102000 && productCode < 103000 ) from $client
then
$bill.add(13300);
end
总体而言,这似乎是对规则的更好定义,并且可以预期该规则在压力测试期间已停止触发。
也许第一个规则是不良编码的一个示例,我们不应该出于特定原因在该规则中应用除法,但我正在寻求对此的确认。也许这与奇迹有关。也许有人可以阐明一些想法。
有关框架的一些细节:
我们将迁移到WildFly和JDK8,因此本地JMeter测试是在具有JDK8和Java缓存的WildFly 10.1.x上进行的。通过这些设置,我们在规则上没有遇到任何问题。
在此先感谢您的帮助。