我想从嵌套集合中创建事实集合,其中事实不与工作内存中的另一个事实共享属性。
假设我有一个 Person 类,其中包含一组 Address 对象。我想要来自 Person John 的所有 Address 事实的集合,这些事实与当前工作内存中的 Address 事实不具有相同的邮政编码。
我认为这样做的唯一方法是使用“来自累积”,但我无法弄清楚如何在源模式行中添加额外的条件。当我尝试以下操作时,出现规则编译错误:
when
p: Person(name == "John")
h: HashSet(size > 0) from accumulate (addr: Address(zc: zipcode) from p.addresses /*and not Address(zipcode == zc)*/,
init(Set s = new HashSet();)
action(s.add(addr);),
result(s)
)
我需要一次在“then”子句中迭代最终集合的内容;否则,我会将源模式和“非”检查从“来自累积”中移出,并完全取消“来自累积”。
有什么办法可以做我所描述的吗?提前致谢。