我在将实例添加到规则的 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 服务器后却没有。我得到的只是实例引用。有什么想法吗?
另外,我想知道为什么当我向 Person 类添加以下构造函数时,KIE 服务器会抛出 java.lang.NoSuchMethodError 异常,而工作台可以成功构建和部署规则:
public Person(Person p)
{
this.name = p.name;
this.age = p.age;
}
最佳答案
该类应如下所示:
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
关于java - 如何将项目添加到列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37787696/