unk*_*own 2 rule-engine drools rule
我想实现规则引擎,其中如果仅执行一个条件,则它不会检查其他指定的条件。
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
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,如果 CoveredText 和它的小写字母相等,那么我不想检查另一个规则。
我怎样才能在 中实现这种性质Drools Rule Engine?
如果您只有几条规则,@KC 提到的议程组对于您的目的来说可能太“繁重”。在更简单的情况下,我只需添加一个事实来标记规则不应再被触发,如下所示
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
Run Code Online (Sandbox Code Playgroud)
如前所述,如果需要,您可以通过显着性来控制执行顺序。