Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Drools规则语言:类字段的奇怪行为_Java_Drools_Rule Engine_Complex Event Processing_Drools Fusion - Fatal编程技术网

Java Drools规则语言:类字段的奇怪行为

Java Drools规则语言:类字段的奇怪行为,java,drools,rule-engine,complex-event-processing,drools-fusion,Java,Drools,Rule Engine,Complex Event Processing,Drools Fusion,我最近注意到一些奇怪的行为,有流口水的规则。我有班级心率,它有以下字段: int heartRate; Date timeStamp; String macAddress; 我的规则文件如下所示: import drools.HeartRate import drools.Action declare HeartRate @role(event) end rule "HEARTRATE RULE 1" when $heartRate : HeartRate(heartRat

我最近注意到一些奇怪的行为,有流口水的规则。我有班级心率,它有以下字段:

int heartRate;
Date timeStamp;
String macAddress;
我的规则文件如下所示:

import drools.HeartRate
import drools.Action

declare HeartRate
    @role(event)
end

rule "HEARTRATE RULE 1"
when
    $heartRate : HeartRate(heartRate >= 180) from entry-point "entryHeartRate"
then
    Action.handleAction(1,"Heart rate is to high!");
end
我想将
heartRate
字段更改为
heartRate
,并在我的规则中更改字段名称,以便我的新规则现在是:

rule "HEARTRATE RULE 1"
when
    $heartRate : HeartRate(heartrate >= 180) from entry-point "entryHeartRate"
then
    Action.handleAction(1,"Heart rate is to high!");
end
但这会产生错误,即drools无法解析字段
心率
。但是当我用
心率
将规则更改回原来的状态时,虽然这样的字段已经不存在了,但它仍然有效。我得到以下错误:

[Unable to Analyse Expression heartrate >= 180:
[Error: unable to resolve method using strict-mode: drools.HeartRate.heartrate()]
Exception in thread "main" java.lang.RuntimeException: Unable to compile drl".
[Near : {... heartrate >= 180 ....}]
             ^
[Line: 26, Column: 4] : [Rule name='HEARTRATE RULE 1']
]
    at drools.Main.initDrools(Main.java:53)
    at drools.Main.main(Main.java:39)
C:\Users\Tim Deweert\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1

我发现了错误,忘记了更改字段心率的get/set方法。

我发现了错误,忘记了更改字段心率的get/set方法。

您的类应该遵循Java Beans规范,如果在约束中使用
someField
,Drools将尝试定位
getSomeField
。如何调用私有实例字段本身并不重要


如果该字段是公共字段,则将在名称匹配时使用该字段。否则,如果getter的名称与上述规则匹配,则使用getter。

您的类应该遵循JavaBeans规范,如果您在约束中使用
someField
,Drools将尝试定位
getSomeField
。如何调用私有实例字段本身并不重要

如果该字段是公共字段,则将在名称匹配时使用该字段。否则,如果getter的名称根据上面给出的规则匹配,则使用getter