我尝试在Drools框架上取得一些经验。在测试期间,我尝试以下测试
@Test public void testDrools() {
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
assertSame(session.getKnowledgeBase(), kbase);
}
为什么此测试失败?会话在创建时是否引用了
KnowledgeBase
是不正确的?我对此有些困惑。也许有人可以帮助我理解它。提前非常感谢您。
阿尔贝托
最佳答案
这是一个实现细节,发生的主要原因是Drools必须保持与Drools 4.x版本的向后兼容性。 kbase和session.getKnowledgeBase()都是真实知识库的包装器,因此,您有2个包装器,但是两个包装器都指向一个实际的知识库实例。
关于java - 为什么StatefulKnowledgeSession具有不同的知识库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9297221/