【问题标题】:Firing particular rule by rule name in drools without using Agenda Filters在不使用议程过滤器的情况下在 drools 中按规则名称触发特定规则
【发布时间】:2015-10-26 07:15:44
【问题描述】:

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

【问题讨论】:

  • 您想如何“触发规则”? - 您需要有与规则条件中的模式匹配的对象(事实),如果有,您可以将它们插入到工作内存中,然后规则将触发。如果没有这样的对象,触发规则将没有意义。
  • 想象一下我的知识库有 10 条规则。外部 API 将向我发送对象(例如:人)和规则名称(例如:rule_3)。在仅针对“rule_3”评估收到的人员对象后,我必须返回结果。我不想在此人身上触发其他规则。

标签: jboss drools rules rule-engine


【解决方案1】:

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

  1. 议程过滤器。你说你不想要这个,但为什么呢?
  2. 将替代规则放入议程组。通过调用
  3. 在插入事实之前选择议程组“group_3”
kieSession.getAgenda().getAgendaGroup("group_3").setFocus();
  1. 编写规则以包含“选择”事实,例如
规则规则_3 什么时候 选择(规则==“规则_3”) 人( ... ) 然后……结束

Select fact 可以与 data fact 一起插入,但必须在触发规则后收回。

【讨论】:

  • 谢谢@laune。您能解释一下如何使用议程过滤器来完成我的任务吗?
猜你喜欢
  • 1970-01-01
  • 2015-08-10
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-19
  • 2012-06-03
相关资源
最近更新 更多