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