Слюни: Как вставить факт после проверки, если он не присутствует в рабочей памяти - PullRequest
4 голосов
/ 05 августа 2009

Я использую слюни для проверки объекта. Объект также имеет метод getChildrenList (), который возвращает дочерние объекты, связанные с этим объектом (отношение master-detail).

Я выполняю некоторые проверки объекта, а затем хочу также проверить дочерние объекты, поэтому я также вставляю все дочерние объекты в рабочую память, используя следующее правило:

 rule "Insert Children"
     when
             $parent : Parent ( eval(childrenList != empty) )
                     $ch : Child() from $p.childrenList
     then
             insert($ch);
     end

Теперь, как я могу убедиться, что это правило не срабатывает, если дети уже вставлены. Я имею в виду, потому что я изменяю некоторый факт, что правило перезапускается. Как я могу предотвратить это?

Спасибо

1 Ответ

2 голосов
/ 05 августа 2009

Вы можете попробовать добавить эту строку в условие when, хотя я подозреваю, что это неправильная идиома:

not( Child(this == $ch) )
...