gpt4 book ai didi

java - 流口水查询 "wildcard"

转载 作者:行者123 更新时间:2023-12-01 14:41:48 25 4
gpt4 key购买 nike

是否可以将事实插入到 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"),将结果限制为仅适用于早餐的结果。但是,我的应用程序不知道哪些人可能请求异常(exception),甚至不知道整个人群是什么。我想添加另一个类似于 Person("*") 的事实,以便这将匹配第一个规则,即使我不知道(或关心!)它是专门为 Sally 的谁要求了不同的食物。

所需的输出是包含 Jade 米片和果冻的工作内存。在不具体了解潜在异常的情况下是否可以发出这样的查询?

最佳答案

我不知道有任何这样的通配符,而且我有点怀疑它是否可能。我不会问你为什么要从 Drools 规则中插入事实,你可能有一些充分的理由,否则又要回到绘图板了。

由于这些都是异常,处理这种情况的一种方法是在 session 中注册所有异常事实。在这种基本情况下,您只需要注册 Person("Sally"),您就会获得 Jelly 和 Cornflakes 的列表。

作为替代方案,您可以添加一个标志,例如 Person.wildcard 并将 LHS 更改为 Person(name == "Sally"|| wildcard),但我怀疑你是否愿意进行这种交易,因为你是在规则范围内自己记录事实的。

关于java - 流口水查询 "wildcard",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15876422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com