将对象匹配到 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)

如果您认为列表有用,您仍然可以插入该列表。