gpt4 book ai didi

drools - 如何实现规则 如果我只想执行一条规则而不是执行 Drools 规则引擎中的所有规则?

转载 作者:行者123 更新时间:2023-12-02 04:48:26 30 4
gpt4 key购买 nike

我想实现规则引擎,其中如果仅执行一个条件,则它不会检查其他指定的条件。

rule "Print out lower-case tokens"
when
Token ( coveredText == coveredText.toLowerCase )
then
System.out.println("Found a lower case token with text");
end


rule "Print out long tokens with more than 5 characters"
when
Token ( tokenText : coveredText, end - begin > 5 )
then
System.out.println("Found a long token with more than 5 characters \"" + tokenText + "\"");
end

在上面的例子中,如果 CoveredText 和它的小写字母相等,那么我不想检查另一个规则。
如何在 Drools 规则引擎 中实现这种性质?

最佳答案

如果您只有几条规则,@K.C. 提到的议程组。对于您的目的来说可能太“重”。在更简单的情况下,我只需添加一个事实来标记规则不应再被触发,如下所示

declare AlreadyProcessed
end

rule "Print out lower-case tokens"
when
not AlreadyProcessed()
Token ( coveredText == coveredText.toLowerCase )
then
System.out.println("Found a lower case token with text");
insert( new AlreadyProcessed() );
end


rule "Print out long tokens with more than 5 characters"
when
not AlreadyProcessed()
Token ( tokenText : coveredText, end - begin > 5 )
then
System.out.println("Found a long token with more than 5 characters \"" + tokenText + "\"");
insert( new AlreadyProcessed() );
end

如上所述,如果需要,您可以通过显着性来控制执行顺序。

关于drools - 如何实现规则 如果我只想执行一条规则而不是执行 Drools 规则引擎中的所有规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20582238/

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