在不使用议程过滤器的情况下在 drools 中按规则名称触发特定规则

Firing particular rule by rule name in drools without using Agenda Filters

我阅读了规则文件并将它们添加到我的知识库中,然后我想触发该知识库中的特定规则。在当前的 drools 版本中可以执行此任务吗?

如果您有一个规则库,其中的规则应根据某些标准动态激活,您有多种选择。

  1. 议程过滤器。你说你不想要这个,但为什么?
  2. 将备选规则放入议程组。 Select 议程组 "group_3" 在通过调用
  3. 插入事实之前
kieSession.getAgenda().getAgendaGroup( "group_3" ).setFocus();
  1. 编写规则以包含 "selection" 事实,例如
rule rule_3
when
    Select( rule == "rule_3" )
    Person( ... )
then ... end

Select 事实可以与数据事实一起插入,但必须在触发规则后收回。