java如何将多个KieBase模块部署到单个KieBase中
我正在研究如何将由多个Maven工件表示的多个KieModule
部署到单个KieContainer
中。以下是我的要求:
- 用户定义规则,打包规则
- 他们在Maven repo上安装软件包
- 它们使用RESTful api通知Spring应用程序,有一些新规则部署了groupId、artifactId和version(在请求体中),因此应用程序可以选择新的
KieModule
,并将其添加到KieContainer
李>
基本上,最棒的是:
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
kContainer.addKieModule(someKieModule); // This doesn't exist
kContainer.addKieModule(someOtherKieModule); // This doesn't exist
到目前为止,我所能看到的是KieContainer
和KieModule
之间存在一对一的关系。这是真的吗?我还知道,我可以将我的工件分组到父工件下,并在每次更新时部署它,但我不想强制我的业务用户将他们的工件分组(因为这也会使他们相互依赖)
我也愿意接受关于如何实现这一点的其他建议(可能有多个KieModule
的文件,循环它们,并将它们逐个添加到KieContainer
)
提前谢谢
更新
我也在试验DeploymentService
,特别是KModuleDeploymentService
,但我不确定它是否达到了我想要的效果。如果你能在这方面给我一些启发,我也将不胜感激
更新#2
根据this,似乎KieBuilder
可能有帮助。那么你认为:
KieFactory kf = KieFactory.Factory.get();
KieFileSystem kfs = kf.newKieFileSystem();
KieBuilder kb = ks.newKieBuilder(kfs);
kb.setDependencies(someKieModule, someOtherKieModule);
kb.build();
KieContainer kContainer = ks.getKieContainer(kr.getDefaultGAV());
行吗
# 1 楼答案
这是从大量资源构建KieBase的基本操作序列