KieContainer可以加载多个包吗?以及KieContainer和KieBase之间的关系是什么

时间:2017-07-03 08:46:25

标签: drools

我是流口水的新手。 该项目有几个Kjars,由Kie工作台构建。在我们的程序中,我们希望将所有这些Kjars放入一个KieContainer中。 但我可以从文档中看到,在创建KieContainer时,它需要一个releaseId作为参数。参数是Kjar的GroupId / ArtifactId /版本,意思是,KieContainer仅与1 Kjar相关。

那么我怎样才能将这些Jars加载到一个KieContainer?或者将几个Kjars加载到一个容器中是不可能的?

另一个困惑是KieContainer和KieBase之间的确切关系是什么?

提前回答我的问题。

1 个答案:

答案 0 :(得分:0)

首先,我知道您只询问过KieContainer和KieBase,但我认为了解所有5个KieConcepts以了解全面情况非常重要:

  1. KieServices :允许您创建 KieContainers
  2. KieContainer :引用了所有规则,函数等。 KieContainer 可以加载 KieModule 及其依赖项。 KieContainer 可以有一个或多个 KieBases
  3. KieModule :定义多个 KieBases KieSessions KieModules 可以包含其他 KieModules 。这意味着您可以拥有包含来自不同域的资产的顶级 KieModule 。以下是schema for KieModule的链接,显示了您可以拥有的所有选项。
  4. KieBase :代表一组资产的编译版本。例如,您可以使用相同的规则进行无状态和有状态会话。另一种选择是为一组软件包提供一个 KieBase ,为另一组软件包提供另一个 KieBase
  5. KieSession :表示包含 KieBase 中规则的规则引擎实例。每个 KieBase 可以有一个或多个 KieSessions
  6. 据我所知,不可能将几个不同的Kjars加载到一个KieContainer中。

    所以我的推荐是

    A)找到一种方法将所有东西组合在一个Kjar中,这样你就可以创建一个    KieContainer拥有您的所有资产。对于您的用例,此documentation可以帮助您了解这是否是一个有效的选项。

    B)为。创建一个新的KieContainer    您需要的每个版本的资产,并根据输入进行相应的路由。这具有更大的内存占用,但如果您不能使用单个Kjar,这可能是最佳选择。