2015-10-26 36 views
0

我读取规则文件并将它们添加到知识库中,然后我想在该知识库中激发特定规则。这个任务在当前的drools版本中可能吗?在不使用日程过滤器的情况下通过规则名称在Drools中引发特定规则

+0

您想如何“发明规则”? - 您需要在规则条件中具有与模式相匹配的对象(事实),并且如果具有该模式,则可以将它们插入工作内存中,然后规则将会触发。没有这样的对象,解除规则就没有意义了。 – laune

+0

想象一下,我的知识库有10条规则。外部API会将对象(例如:person)和规则名称(例如:rule_3)发送给我。仅在评估收到的人物对象“rule_3”后,我必须返回结果。我不想解雇这个人的其他规则。 – Hasitha

回答

1

如果你有一个规则库,其中的规则应该根据某些标准动态地激活,你有几个选择。

  1. 会议过滤器。你说你不想要这个,但为什么?
  2. 将其他规则放入议程组中。于由呼叫插入的事实
 
kieSession.getAgenda().getAgendaGroup("group_3").setFocus(); 
选择议程基“group_3”现有
  • 写您规则以包括一个“选择”的事实,例如
  •  
    rule rule_3 
    when 
        Select(rule == "rule_3") 
        Person(...) 
    then ... end 
    

    的选择其实可以用数据事实一起被插入,但必须在射击规则后收回。

    +0

    Thnx @laune。你能解释一下如何使用议程过滤器来实现我的任务吗? – Hasitha