gpt4 book ai didi

drools - Drools 规则可以有多重继承吗

转载 作者:行者123 更新时间:2023-12-05 01:12:22 40 4
gpt4 key购买 nike

我是 drools 的新手,并且熟悉使用 extends 关键字来继承规则。问题有没有办法继承多个规则?这类似于在 java 类上使用多个接口(interface)。这是我希望它如何工作的示例,但我在规则 3 上遇到错误:

rule "rule 1"
when //person name == "John"
then //print "John"
end

rule "rule 2"
when //person last name == "Smith"
then //print "Smith"
end

rule "rule 3" extends "rule 1", "rule 2"
when //person age > 20
then //print John Smith is older than 20
end

最佳答案

它还没有得到很好的记录,但是单继承确实存在于drools中。它允许您创建扩展另一个规则的规则。当且仅当 super 规则和子规则的条件都为真时,子规则才会触发。 (见底部我的笔记)。

在下面的示例中,“Flags”是一个带有 2 个 bool 值的简单 Java 类:isSuperTrue 和 isSubTrue。神奇的短语是扩展“ super ”作为“子”规则定义的一部分。规则的名称(sub 和 super)是说明性的,可以更改为任何合法的规则名称。

rule "super" 
@description("Fires when isSuperTrue is true regardless of the state of isSubTrue")
when
$flag : Flags(isSuperTrue == true)
then
System.out.println("super rule should fire anytime super is true and ignore sub");
end

rule "sub" extends "super"
@description("Fires only when both isSubTrue and isSuperTrue are true")
when
Flags(isSubTrue == true)
then
System.out.println("sub rule should fire when both isSubTrue and isSuperTrue are true");
end

注1:有一个 issue在 5.5.0.Final 中要求在规则定义文件中将 super 规则放在子规则之前。我已确认该错误已针对 5.6.0.CR1 进行了修复。

注 2:此功能间接记录在 release notes对于 5.5.0.Final 在第 4.1.1.3 节中。核心主题是“条件命名后果”,但它利用了规则继承。

关于drools - Drools 规则可以有多重继承吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14342054/

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