在定义 Drools 规则时,容纳对象图的最佳方式是什么?
假设我有以下具有多对多关系的实体对象图:
User <- Group -> Value
我有以下人为的规则:
rule "hasPurpleValue"
$u : User()
$g : Group() from $u.groups
$v : Value(color == 'Purple') from $g.values
then
//...
end
我可以将用户插入到 ksession 中,如下所示:
//build user...
User user = new User();
Group group = new Group();
Value value = new Value("Purple");
group.setValue(value);
user.addGroup(group);
ksession.insert(user);
然后更新它们:
ksession.update(ksession.getFactHandle(user), user);
但是,如果我将 Value 对象直接更改为"Orange"
,则 Value 没有 FactHandle,因为它是以用户为根插入的。是否有更好的方法来定义规则并插入实体,以便我可以独立更改实体,而 Drools 将评估结果?