将对象匹配到 Drools 中的列表成员
Matching object to list member in Drools
我目前在 Drools Working Memory 中得到了 class A 的一系列对象和一个对象,它是 Class B 的对象列表。两个 class 都有一个 ID 属性。
我需要运行一个规则来检查内存中是否有ClassA的对象匹配ClassB列表中的ID。(本质上, 运行搜索列表的每个元素以检查其 ID 是否与 Class A)
的对象匹配
为了让事情更清楚,我在记忆中有这样的东西:
class A{
ID : String
}
List[B] where:
Class B{
ID: String
}
我一直在尝试围绕此构建规则查询,但无济于事。想法? (对 Drools 还是比较陌生)
大概是这样的:
when
$list: List()
B($id: ID) from $list
A(ID == $id)
then
使用容器作为事实通常被认为(至少对我而言)是一种反模式。如果 B 是事实,事情就容易多了。
A($id: ID)
B(ID == $id)
如果您认为列表有用,您仍然可以插入该列表。
我目前在 Drools Working Memory 中得到了 class A 的一系列对象和一个对象,它是 Class B 的对象列表。两个 class 都有一个 ID 属性。
我需要运行一个规则来检查内存中是否有ClassA的对象匹配ClassB列表中的ID。(本质上, 运行搜索列表的每个元素以检查其 ID 是否与 Class A)
的对象匹配为了让事情更清楚,我在记忆中有这样的东西:
class A{
ID : String
}
List[B] where:
Class B{
ID: String
}
我一直在尝试围绕此构建规则查询,但无济于事。想法? (对 Drools 还是比较陌生)
大概是这样的:
when
$list: List()
B($id: ID) from $list
A(ID == $id)
then
使用容器作为事实通常被认为(至少对我而言)是一种反模式。如果 B 是事实,事情就容易多了。
A($id: ID)
B(ID == $id)
如果您认为列表有用,您仍然可以插入该列表。