drools嵌套类的规则语法

时间:2011-04-05 21:24:54

标签: java eclipse drools

关于流口水的新手问题。我试图在规则文件中访问以下java类。

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语法的链接以及如何像上面一样?

2 个答案:

答案 0 :(得分:6)

这可能更好:

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

在DRL中,==表示等于,而不是相同。 使用$varB : b,您可以执行B varB = a.getB();

之类的操作

答案 1 :(得分:0)

尝试这种方式:

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