📅  最后修改于: 2020-10-15 10:56:54             🧑  作者: Mango
如果您看到Hello World项目(Sample.drl)中编写的默认规则,则将使用很多关键字,我们现在将对其进行解释。
现在,让我们看一下Java文件中用于加载Drools和执行规则的术语。
知识库是管理规则,流程和内部类型的集合的界面。它包含在org.drools.KnowledgeBase包中。在Drools中,这些通常称为知识定义或知识。知识定义分为知识包。可以添加或删除知识定义。知识库的主要目的是存储和重用它们,因为它们的创建成本很高。知识库提供了创建知识会话的方法。
从知识库中检索知识会话。它是与Drools Engine交互的主要界面。知识会议可以分为两种类型-
无状态知识会话是一种无状态会话,它构成最简单的用例,不利用推理。可以像调用函数一样调用无状态会话,将一些数据传递给它,然后再接收一些结果。无状态会话的常见示例包括-
有状态会话的寿命更长,并且允许随着时间的推移进行迭代更改。有状态会话的一些常见用例包括-
KnoledgeBuilder接口负责根据知识定义(规则,过程,类型)构建KnowledgePackage。它包含在org.drools.builder.KnowledgeBuilder包中。知识定义可以采用各种格式。如果构建存在任何问题,则KnowledgeBuilder将通过以下两种方法报告错误: hasErrors和getError 。
下图说明了该过程
在上面的示例中,我们以无状态知识会话的简单示例为例,我们在会话中插入了事实,然后调用fireAllRules()方法,然后看到输出。
在有状态知识会话的情况下,一旦激发了规则,则有状态知识会话对象必须调用方法dispose()来释放会话并避免内存泄漏。