java - 如何使用 drool 从自定义对象列表中查找任何属性的值,然后将其存储到变量中

标签 java list arraylist linked-list drools

我有一个 POJO 实现:

public class Product{
String name;
String brand;
String company;
}

我的问题::

需要根据名称和公司从 worldOfProductList 中获取预期产品(这两个字段都是已知的,以便可以应用过滤器)。 从该列表中获取一种特定产品后,需要将“品牌”值(value)存储到某个变量(可以是全局变量)中以供将来使用。

注意::截至目前,使用该过滤器仅获取唯一的产品。

我的方法是这样的:

[condition][]Get intended Product from list = $productList: java.util.LinkedList() from collect(Products(name="abc",company="com") from worldOfProductList)

该语句工作正常,并且能够在 sysout 语句中获取我的值:

System.out.println("Brand is "+((Product)($productList.get(0)).getBrand());

但是我需要在 DSL 中使用这个品牌值并将其存储到变量中。我尝试了以下组合但没有成功。

1.[condition][] Store Brand into variable=$brandVar: $productList[0].brand

2.[condition][] Store Brand into variable=Product($brandVar: $productList[0].brand)

3.[condition][] Store Brand into variable=$brandVar: ((Product)$productList.get(0)).getBrand()

最佳答案

如果您希望将其作为 DSL 中的 2 个单独条目,那么您可以执行以下操作:

[condition][] Store Brand into variable= Product($brandVar: brand) from $productList

这将导致激活 $productList 中每个不同产品的规则。在规则的右侧,您将有权访问 $brandVar

如果您只对品牌感兴趣而不对产品本身感兴趣,那么您也可以尝试这样的操作:

[condition][]Get Brands from intended Product from list = $productList: java.util.Set() from accumulate(Products(name="abc",company="com", $brandVar: brand) from worldOfProductList, collectSet($brand))

希望对你有帮助

关于java - 如何使用 drool 从自定义对象列表中查找任何属性的值,然后将其存储到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38107299/

相关文章:

java - 删除 PriorityQueue 的顶部?

元组列表时的 Python 3 : When to use dict,?

c++ - ostream,复制函数打印字符串地址,而不是字符串内容

java - 在java类的ArrayList中更新类的单个变量

java - 我可以在对象中实现 arrayList

java - Spring WebFlow - setter 方法中的 NullPointerException - 如何很好地处理

java - 比较两个数组的数组元素时, boolean 结果始终返回 true

java - 如何制作一个下载按钮来检索sql数据库中的pdf文件?(java swing)

r - 处理 list 对象

java - Java中的ArrayList和Singleton对象