使用Drools 6.2.0.Final我们有一个规则项目,在kmodule.xml中有2个单独的kbases和ksessions配置如下:
<kbase name="kbase1"
packages="foo.bar.package1">
<ksession name="ksession1" type="stateless" />
</kbase>
<kbase name="kbase2"
packages="foo.bar.package2">
<ksession name="ksession2" type="stateless" />
</kbase>
在每个软件包中,我们都有许多包含一些业务规则的.drl文件。 除了那些包之外,每个包都包含一个包含从业务规则文件调用的函数的.drl,例如, package1-functions.drl和package2-functions.drl。 由于这两个函数文件的内容相同,我们正在考虑创建一个&#34; common&#34;包,只有一个函数文件的副本。
但是,我们还没有设法让我们的规则与单独包中的函数一起使用。
这是我们配置kmodule.xml的方式:
<kbase name="common"
packages="foo.bar.common"/>
<kbase name="kbase1" includes="common"
packages="foo.bar.package1">
<ksession name="ksession1" type="stateless" />
</kbase>
<kbase name="kbase2" includes="common"
packages="foo.bar.package2">
<ksession name="ksession2" type="stateless" />
</kbase>
我们尝试的另一种方式是没有&#34;普通&#34; kbase但是将通用包添加到&#34;包&#34; kbase1和kbase2中的属性。
是否可以在2个其他kbase中使用通用包?
答案 0 :(得分:0)
DRL功能无法在其他DRL包中使用。
可以在单独的DRL文件中具有一个或多个功能,并且可以在同一DRL包中的任何DRL文件中使用它们。
也许你高估了DRL包的重要性 - 如果所有DRL文件都在同一个DRL包中,你就不会有任何问题。
或者,考虑使用Java静态方法。