是否可以将事实插入作为通配符的 Drools 工作记忆(例如查询约束)?
例如,假设我有以下规则:
rule "meal_exceptions_1"
agenda-group "MEAL"
salience 100
when
Meal(id = "Breakfast")
Person(name == "Sally")
then
insert(new Food("Jelly"));
drools.setFocus("OTHERGRP");
end
rule "meal_breakfast"
agenda-group "MEAL"
when
Meal(id == "Breakfast")
then
insert(new Food("Cornflakes"));
drools.setFocus("OTHERGRP");
end
rule "meal_dinner"
agenda-group "MEAL"
when
Meal(id == "Dinner")
then
insert(new Food("Fish Fingers"));
drools.setFocus("OTHERGRP");
end
我想回答“早餐可以订购的所有可能食物是什么”这个问题(也许我正在订购厨房用品)。
我可以很容易地插入一个事实,new Meal("Breakfast")
将结果限制为仅适用于早餐的结果。但是,我的应用程序不知道哪些人可能请求了例外,甚至不知道整组人是什么。我想添加另一个事实Person("*")
,以便这将符合第一条规则,即使我不知道(或关心!)具体是莎莉要求不同的食物。
所需的输出是包含玉米片和果冻的工作记忆。是否可以在不了解潜在异常的具体知识的情况下发出这样的查询?