java - 如何将项目添加到列表中?

标签 java drools rules rule-engine

我在将实例添加到规则的 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/

相关文章:

java - Spring data jpa方法查询findWith

java - 如何使用 Nginx 和 dropwizard 部署 angularjs 应用程序前端

java - 管理大量规则 - Drools

流口水的规则需要多个其他规则

php - Laravel 5 独特的表单验证忽略 id/slug

python - 导出有关整数数据的列依赖性的规则?

java - 从 php 调用 jar 文件中的方法

java - 为什么我在通过键时得到 CancelledKeyException?

java - Jboss 上的 Drools 项目使用什么 Maven 3 原型(prototype)?

perl - 如何使用 Perl 的 File::Find::Rule 模块查找具有 777 权限的文件