我想创建一条Drools规则,说如果我使用HTTP请求从收集的数据中获得的CPU使用率超过特定阈值(例如20%),则调用位于类Netdata
上的函数这些也将传递给Drools Fusion。所以我到目前为止写的是:
rule "CPU usage over 20% once"
when
$cpu : Netdata(cpuUsagePerc > 0)
from entry-point Netdata
then
System.out.println("CPU usage is now over 20%");
$cpu.setCpuOverCount();
end
但是问题是,我得到了这个错误:java.lang.RuntimeException: wrong class format
。如果删除此行$cpu.setCpuOverCount();
,该规则将执行,并打印CPU usage is now over 20%
,而不会出现任何问题。
我试图调用的方法是这样的:
public void setCpuOverCount() {
cpuOverCount++;
}
首先有没有一种方法可以调用,如果可以,我该怎么做?如果没有,我该如何克服这些问题? 我正在使用Drools版本5.1.1。
答案 0 :(得分:1)
这可能是由于ECJ版本不支持Java版本per this answer。您可以尝试手动更新ECJ版本:
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>>4.5.1</version> <!-- latest is 4.6.1 -->
</dependency>