我在添加实例以在规则的RHS中列出时遇到问题。
有两个类如下所示:
class Person {
private java.lang.Integer age;
private java.lang.String name;
}
class A {
private java.util.List<Person> persons;
private java.util.List<Person> selectedPersons;
}
在以下规则中,我想将年龄大于30岁的人放入selectedPersons。
rule "test"
when
$a:A()
$p : Person(age > 30) from $a.persons
then
$a.getSelectedPersons().add($p);
end
它在eclipse中运行,使用Drools插件; 但在部署到KIE服务器后它没有。我得到的只是实例参考。任何想法?
另外,我想知道为什么KIE服务器在向Person类添加以下构造函数时抛出 java.lang.NoSuchMethodError 异常,而workbench可以成功构建和部署规则:
public Person(Person p)
{
this.name = p.name;
this.age = p.age;
}
答案 0 :(得分:1)
该课程应如下所示:
class A {
private java.util.List<Person> persons;
private java.util.List<Person> selectedPersons;
//First create getter, setter for the lists.
void addToList(Person item)
{
selectedPersons.add(item);
}
}
规则应如下所示:
rule "test"
when
$a:A()
$p : Person(age > 30) from $a.persons
then
$a.addToList($p);
end
答案 1 :(得分:0)
我应该添加问题中提到的构造函数。顺便说一句,如果Person类中有Date属性,则应复制或克隆它,see here。
嗯,在删除容器并再次创建之后,异常消失了。我不知道这是一个流口水问题(版本6.2),还是设置流口水的过程问题。