Drools为什么StatefulKnowledgeSession有不同的KnowledgeBase

时间:2012-02-15 16:29:55

标签: java jboss drools rule-engine drools-fusion

我尝试使用Drools框架获得一些经验。在我的测试中,我尝试以下测试

    @Test public void testDrools() {
        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
        assertSame(session.getKnowledgeBase(), kbase);
    }

为什么这个测试失败了?会话是否有引用KnowledgeBase用于创建它的情况?我对此有点困惑。也许有人可以帮助我理解它。

非常感谢您提前。 阿尔贝托

1 个答案:

答案 0 :(得分:1)

这是一个实现细节,主要是因为Drools必须保持与Drools 4.x版本的向后兼容性。 kbase和session.getKnowledgeBase()都是真实知识库的包装器,因此你有2个包装器,但是两个包装器指向的知识库只有一个实际实例。