2013-08-04 48 views
-1

我已經在DRL文件中定義了一些規則,並且它是我的第一個創建drl文件的程序。我收到錯誤「無法分析表達」。這裏是我的代碼:drools - 無法分析表達式

package rules 

import com.sample.Applicant.appli; 

rule "Is of valid age" 

when 

    $a : appli (age < 18) // appli is my class name 
          // age is a variable in that class 

then 

    $a.setValid(false); // setValid is a method of appli 

end 

,並得到錯誤:

Unable to Analyse Expression age < 18: 

[Error: unable to resolve method using strict-mode: com.sample.Applicant$appli.age()] 

[Near : {... age < 18 ....}] 

     ^
[Line: 16, Column: 4] : [Rule name='Is of valid age'] 

回答

1

確保在類appliage是公共或有一個公衆getAge()方法。

0

即使我得到類似的錯誤「無法分析表達式...」在驗證中Drools的工作臺6.4.0最終一個DRL文件。我檢查了數據對象,它的字段,setter和getters的訪問說明符。一切似乎都行。然後我保存了我的數據對象並返回到DRL文件並進行了驗證。突然,上述錯誤消失了,我看到消息'已成功驗證'。我的錯誤是雖然我在Drools Workbench中創建了數據對象,但我忘記了通過單擊'保存'按鈕來保存它。

所以我建議你,如果你100%確定你的數據對象和DRL文件是正確的,先保存它們,然後再次驗證DRL文件。