因此,文档声明您可以使用
以编程方式加载kie模块KieServices ks = KieServices.Factory.get();
KieContainer kieContainer = newKieContainer(ks.newReleaseId("my.org","my.artifact.id","version"));
KieSession kieSession = kieContainer.newKieSession("ktest");
有没有办法通过maven
和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>
但是,似乎没有看到包
谢谢
答案 0 :(得分:1)
是的,您可以在另一个项目中使用不同的Drools项目。请按照以下步骤操作:
kmodule.xml
文件。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和版本。pom.xml
中添加上述自定义groupId,artifactId和版本作为依赖项。然后创建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仓库。
答案 1 :(得分:0)
所以我确实弄清楚了。我认为这与package
中的kmodule.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>