首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >drools决定表-如何进行第一场比赛?

drools决定表-如何进行第一场比赛?
EN

Stack Overflow用户
提问于 2013-01-10 16:13:40
回答 2查看 3.6K关注 0票数 2

drools决策表文档(链接)指出,可以在决策表中选择第一个匹配行:

由于每一行都是一条规则,所以适用相同的原则。当规则引擎处理事实时,任何匹配的规则都可能触发。)有些人对此感到困惑。当规则触发并模拟一个非常简单的决策表,其中只有第一个匹配影响一个操作时,就可以清除该议程。)

这是怎么做的?我已经设置了Sequential=true,但我不确定还需要做什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-12 10:03:26

Drools通过在决策表规则集中定义激活组来解决此问题(仅选择第一个匹配行)。

如果您希望使用drools决策表作为查找表,您的解决方法maxrules=1可能会起作用。在这种情况下,由于只能触发一条规则,所以与使用经典数据库查找表相比,使用drools没有优势,它只是增加了复杂性。

如果您决定使用drools或一般的规则引擎,则应该将“规则”或“决策”移到规则定义中,以便最大限度地受益于它的优势(RETE引擎、灵活性、规则与应用程序代码的分离等)。

票数 2
EN

Stack Overflow用户

发布于 2013-01-10 16:51:59

FireAllRulesCommand需要作为批处理执行的一部分添加,最大规则设置为1:

代码语言:javascript
复制
   StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();

    Transaction tx = new Transaction();
    tx.setSenderBin("12345");

    List<Command<?>> commands = new ArrayList<Command<?>>();     
    commands.add(CommandFactory.newInsert( tx ));
    commands.add(new FireAllRulesCommand(1));

    ExecutionResults results = ksession.execute(
        CommandFactory.newBatchExecution(commands));

-编辑:请参阅已接受的答案,以了解较佳的做法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14262281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档