繁体   English   中英

Drools将来自另一个项目的规则添加到kmodule中?

[英]Drools add rules from another project into kmodule?

因此,文档指出您可以通过编程方式加载kie模块

KieServices ks = KieServices.Factory.get();

KieContainer kieContainer = newKieContainer(ks.newReleaseId("my.org","my.artifact.id","version"));
KieSession kieSession = kieContainer.newKieSession("ktest");

有没有办法通过mavenkmodule.xml做到这kmodule.xml 我的用例是在另一个项目中使用我在该项目中编写的规则,然后将其添加到其中。 也许我在7.7文档中错过了它,如果是的话,请链接,然后与我的眼科医生预约。

附录:我想象kmodule.xml看起来与此类似:

<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<configuration>
</configuration>
<!-- Shared Knowledgebase -->
<kbase name="am" packages="my.package.name, rules">  
    <ksession name="default" type="stateful" default="true"/>
</kbase>

但是,似乎没有看到包

谢谢

是的,您可以在另一个项目中使用另一个Drools项目。 请按照以下步骤操作:

  1. 生成要在其他Drool项目中使用的Drool项目。 在正确构建之前,请检查kmodule.xml文件。
  2. 构建项目后,使用mvn file upload命令将jar上传到local maven repository.m2 repository 示例mvn install:install-file -Dfile="pathToJAr" -DgroupId="groupId" -DartifactId="artifactId" -Dversion="version" -Dpackaging="jar" 您可以使用自定义的groupId,artifactId和版本。
  3. 然后在pom.xml添加上面的自定义groupId,artifactId和版本作为依赖项。
  4. 然后创建kieConatiner和kieSession,如下所示:

    KieServices.Factory.get(); ReleaseId rs= ks.newReleaseId("artifactId","groupId","version"); KieContainer kieContainer = ks.newKieContainer(rs); KieScanner kieScanner = ks.newKieScanner(kieContainer); kieScanner.start(10000);

KieScanner用于动态更新KieContainer 在这里, kieScanner将每10秒扫描一次本地Maven存储库。

所以我确实弄清楚了。 我认为它有一些东西需要与packagekmodule.xml 但实际上,它只是添加了incluldes = "package.name" ,它就自己搞清楚了。

但是,我也建议使用@Prog_G答案,尽管这不是我想要的,但我相信它会帮助其他人解决同样的问题。

最后结果:

<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<configuration>
</configuration>
<kbase name="am" packages="rules" includes = "my.package.name">  
    <ksession name="default" type="stateful" default="true"/>
</kbase>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM