2011-04-05 81 views
0

關於流口水的新手問題。我正在嘗試訪問規則文件中的以下Java類。drools嵌套類的規則語法

Class A{ 
    private String foo; 
    private SomeClass B; 
    //getter setter for foo and b 
} 
Class B{ 
    private String bar; 
    private Integer value; 
    //getter setter for bar and value 
} 

在規則文件中,我想訪問成員bar

到目前爲止,這是我所: -

package demo; 
import my.test.A; 
import my.test.B; 

rule "Rule1" 
    when 
     $varB : A.B(bar.equals("hello")) 
    then 
     $varB.setValue(1); 
     update($varB); 
end 

對於上述規則我得到這個錯誤 - "BuildError: Unable to resolve ObjectType A.B"。我也嘗試使用A.getB(),這也沒有幫助。任何想法它應該是什麼?如果有問題,我正在使用eclipse drools插件。

我已經看過jboss規則docs,但它們沒有涵蓋那些很好的語法。有誰知道鏈接,我可以查找drools語法,以及如何像上面一樣?

回答

6

這可能是更好:

A(b.bar == "hello", $varB : b) 

在DRL,==意味着等於,不相同。 隨着$varB : b你做一些像B varB = a.getB();

+0

+1:好知道。你知道任何學習drools規則語法的好鏈接嗎? – CoolBeans 2011-04-06 13:54:46

+1

您可以檢查Drools示例的語法提示。 – 2011-04-07 10:56:23

0

試試這個方法:

$varB : A(B.bar.equals("hello")) 
+0

謝謝!你怎麼知道這件事的?是否有你知道的語法查找鏈接? – CoolBeans 2011-04-05 22:03:58

+0

我不知道Drools,我猜對了:) – smas 2011-04-05 22:05:34

+0

LOL ..很好猜:) – CoolBeans 2011-04-05 22:08:23