Drools 从KieBase和KieContainer创建KieSession有什么区别?
我正在尝试评估创建会话的最佳选项 选择1Drools 从KieBase和KieContainer创建KieSession有什么区别?,drools,rule-engine,Drools,Rule Engine,我正在尝试评估创建会话的最佳选项 选择1 kiebase.newKieSession(); 选择2 container=kieheloper.getKieContainer(); container.newKieSession() 我找不到这两个词之间的区别。有什么输入吗?正如JavaDoc中所解释的,它们是根本不同的 该方法返回此容器的默认会话。如果容器没有定义的默认会话,它将抛出RuntimeException 该方法将按照默认配置为此KieBase创建一个新的KieSession 由于
kiebase.newKieSession();
选择2
container=kieheloper.getKieContainer();
container.newKieSession()
我找不到这两个词之间的区别。有什么输入吗?正如JavaDoc中所解释的,它们是根本不同的 该方法返回此容器的默认会话。如果容器没有定义的默认会话,它将抛出RuntimeException 该方法将按照默认配置为此KieBase创建一个新的KieSession 由于KieContainer包含KieModule的所有KieBase,因此这两种方法可能都将解析为类似的KieSession。当然,您需要一个只包含单个KieBase的KieBase容器,并且容器的默认会话必须使用单个KieBase的默认配置会话进行初始化 考虑此配置(与问题无关的字段被省略,因此它显然不是有效的kmodule.xml):
在这里,如果我们调用kieContainer.newKieSession()
,我们将返回名为“fooSession”的kieSession,因为它被配置为默认值。类似地,如果我们调用kieBase.newKieSession()
并且kieBase
是一个名为“foo”的会话,我们还将返回一个类似于“fooSession”的kieSession。但是如果kieBase
是一个名为“bar”的会话,那么会话将类似于“barSession”
当要弄清楚口水的内脏是如何工作的时,除了文档之外,有时还可以查看一下。一开始有点复杂,但是如果从API(接口)开始,然后向后到实现,事情就开始变得有意义了。正如JavaDoc中所解释的,它们是根本不同的 该方法返回此容器的默认会话。如果容器没有定义的默认会话,它将抛出RuntimeException 该方法将按照默认配置为此KieBase创建一个新的KieSession 由于KieContainer包含KieModule的所有KieBase,因此这两种方法可能都将解析为类似的KieSession。当然,您需要一个只包含单个KieBase的KieBase容器,并且容器的默认会话必须使用单个KieBase的默认配置会话进行初始化 考虑此配置(与问题无关的字段被省略,因此它显然不是有效的kmodule.xml):
在这里,如果我们调用kieContainer.newKieSession()
,我们将返回名为“fooSession”的kieSession,因为它被配置为默认值。类似地,如果我们调用kieBase.newKieSession()
并且kieBase
是一个名为“foo”的会话,我们还将返回一个类似于“fooSession”的kieSession。但是如果kieBase
是一个名为“bar”的会话,那么会话将类似于“barSession”
当要弄清楚口水的内脏是如何工作的时,除了文档之外,有时还可以查看一下。开始时有点复杂,但是如果您从API(接口)开始,然后反向工作到实现,事情就开始变得有意义了