gpt4 book ai didi

java - 检查 Drools 列表中的特定元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:52:17 26 4
gpt4 key购买 nike

我刚刚开始使用 Drools(5.1.0 版),如果这个问题已经得到解答,请多多包涵。

我有一个 java.util.List 对象,它包含复杂类型 A 的对象,其中 A 为:

class A {
String name;
String Value;}

列表及其元素都在 Drools 引擎的工作内存中。是否有一种简单的方法可以仅在列表中元素的名称和值与特定值匹配时触发规则?

目前,我在 Drools 规则中使用自定义函数,它遍历列表并在有符合规范的元素时返回 true,但我想知道这是否是最有效和最简单的使用方式。

最佳答案

如果 A 实例如您所说(理想情况)在工作内存中,则只需使用它编写规则:

rule X
when
A( name == "bob", value == 10 )
...

不推荐将集合(列表、树等)直接插入工作内存,因为它们是抽象数据结构,没有任何内在语义附加。但是假设您有一个包含地址列表的 Person 类,并且您希望对加拿大蒙特利尔的每个地址执行规则,而不将地址本身作为 facs 插入。你可以这样写:

rule X
when
Person( $addresses : addresses )
Address( city == "Montreal", country == "CA" ) from $addresses
...

最后,如果你真的想使用列表本身作为事实(同样,不好的做法),你可以执行以下操作,但请注意它会匹配工作内存中的所有列表:

rule X
when
$list : List()
A( name == "bob", value == 10 ) from $list
...

关于java - 检查 Drools 列表中的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9434209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com