我目前正在评估JBoss Drools,并希望从社区寻求有关我到目前为止确定的可重用性问题的帮助:
要创建知识库,必须导入.drl文件,但如果我只想使用.drl文件中的规则子集,而不是形成规则组(使用议程组或RuleFlowGroup),还有其他方法吗?使用规则组可以轻松地使规则定义变得混乱,假设您有10个不同的规则子集重叠,那就是10个规则组......
有没有办法动态地将事实插入规则知识库中?在我看来,在触发规则引擎之前需要将所有必需的事实/数据插入到会话中,从而产生性能瓶颈......例如,如果其中一个事实存在于数据库中,则除非事实来自数据库,否则无法触发引擎绘制。如果引擎可以首先处理其他事实并且当数据库中的事实准备就绪时,将动态插入到会话中会更好。
答案 0 :(得分:1)
这样做的好方法是使用议程组。其他方法是,明智地将您的规则分开。
在我提出问题时,您可以使用Fact Handles。
在这里使用StatefullKnowledgeSession
。
FactHandle objHandle = ksession.insert(fact);
之后,当您从数据库准备好事实时,您可以修改当前运行会话中的事实。
ksession.update(objHandle, newFactObject(of same class))
有关详细信息,请转至http://downloads.jboss.com/drools/docs/5.1.1.34858.FINAL/drools-expert/html_single/index.html第2.1.2章。有状态知识会议。