首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drools规则语言:类字段的奇怪行为

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

Stack Overflow用户
提问于 2016-04-21 16:36:04
回答 2查看 661关注 0票数 0

我最近注意到一些奇怪的行为与口水规则。我有类HeartRate,它有以下字段:

代码语言:javascript
复制
int heartRate;
Date timeStamp;
String macAddress;

我的规则文件如下:

代码语言:javascript
复制
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,并更改规则中的字段名,以便我的新规则现在是:

代码语言:javascript
复制
rule "HEARTRATE RULE 1"
when
    $heartRate : HeartRate(heartrate >= 180) from entry-point "entryHeartRate"
then
    Action.handleAction(1,"Heart rate is to high!");
end

但这会产生错误,即drools无法解析字段heartrate。但是,当我将规则更改回原始规则时,所以对于heartRate,它可以工作事件,尽管这样的字段已经不存在了。我得到以下错误:

代码语言:javascript
复制
[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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-22 10:46:33

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

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

票数 2
EN

Stack Overflow用户

发布于 2016-04-22 10:45:00

我发现了我的错误,我忘了改变现场心痛的get/set方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36775676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档