【发布时间】:2020-09-09 14:15:49
【问题描述】:
我在 drools 会话中插入了许多规则,并且我使用 KieSession 提供的事件侦听器将它们打印出来。代码如下:
kSession.addEventListener(new RuleRuntimeEventListener() {
@Override
public void objectInserted(ObjectInsertedEvent event) {
System.out.println("==> " + event.getObject() + " inserted");
}
@Override
public void objectUpdated(ObjectUpdatedEvent event) {
System.out.println("==> " + event.getObject() + " updated");
}
@Override
public void objectDeleted(ObjectDeletedEvent event) {
System.out.println("==> " + event.getOldObject() + " deleted");
}
});
我想获取在 objectInserted 中打印的所有规则,并且不是由使用 drools 查询的 objectDeleted 方法触发的。我没有找到一种方法来做到这一点。我不想使用 Java 而是 Drools。我是流口水的新手,在互联网上没有找到太多关于此的信息。任何帮助将非常感激。谢谢
我想做的事 我正在尝试编写一个查询,该查询返回我使用 drools 查询的 drool 会话中存在的所有值。 像这样:
query "Query all attack categories"
AttackCategory($category : value)
end
这是我已经在我的系统中使用的查询。我希望这个查询被泛化并只用一个查询来获取所有(不同类的)对象。
我的 KieBaseModel
KieBaseModel kbaseModel = kmoduleModel
.newKieBaseModel(DEFAULT_KIE_BASE_NAME)
.setDefault(true)
.setEqualsBehavior(EqualityBehaviorOption.EQUALITY)
.setEventProcessingMode(EventProcessingOption.CLOUD);
要求更新 我可以从drolls 中获取对象,但是有什么方法可以得到图像中定义的树结构。我也想获得问题之间的链接。就像,如果问题 1 被回答了,那么在它之后会问哪个问题,如果问了 1 级 q1,那么之后会问哪个问题。一些问题也将从树中删除。我需要图像中描述的连接树状。有什么办法可以从流口水中得到这样的树吗?谢谢
【问题讨论】:
-
您所说的“我不想使用 Java [做]”是什么意思——您在自己的示例中使用的是 Java。 ?
-
是的。我正在使用java。我的意思是我想获取插入到会话中的规则,这些规则在会话结束时不会被删除,或者它达到我之前的条件,我想使用流口水查询来获取这些可用的值。我希望你能理解这个问题。
-
如果你打算使用监听器——我就是这么做的——它仍然会用 Java 编写。您将需要展示一个示例来说明“在 Drools 中执行”的意思,因为我不知道您要的是什么。 (即使是说明您为什么要这样做的示例规则也可能会有所帮助。)
-
@RoddyoftheFrozenPeas 我已经更新了这个问题。请看一看。我想获取所有可用值,因为我想在用户结束回答问题时生成一个结构,并且在我将显示为树的结构中,我想向用户展示他遵循了哪条路径以及什么是最终结果。
-
你在流模式下使用drools吗?这就是你引用持续行动的原因(例如回答后续问题?)