我正在使用spring Boot drools。我想为不同的上下文维护3个不同的drl文件,因为不同的上下文规则是不同的。在这种情况下,我应该为每个上下文创建3个密钥KieContainer吗?或者可以只在kie容器中处理吗?注意:对于每个上下文,我必须只调用相应的drl规则
@Bean
public KieContainer getKieContainer() {
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
kieFileSystem.write(ResourceFactory.newFileResource("ctxt1.drl")));
kieFileSystem.write(ResourceFactory.newFileResource("ctxt2.drl")));
KieBuilder kb = kieServices.newKieBuilder(kieFileSystem);
kb.buildAll();
KieModule kieModule = kb.getKieModule();
KieContainer kieContainer = kieServices.newKieContainer(kieModule.getReleaseId());
return kieContainer;
}
这是我调用规则的方式。在这里我想在会话中调用基于上下文的drl文件规则。如何使用基于KieSession的KieBase?
KieSession kieSession = kieContainer.newKieSession();
kieSession.insert(RequestPOJO);
kieSession.fireAllRules();
kieSession.dispose();
1条答案
按热度按时间x33g5p2x1#
根据有限的描述,听起来像是“不同的上下文”可以通过知识库(
KieBase
)识别。您可以使用3个不同的DRL文件创建1个KJAR,确保(例如:通过 Package ),它们对应于3种不同KieBase。
类似(~ L):
然后,您可以创建1个KieContainer,其中包含一个包含“多个上下文”(KieBase)的KJAR。
此时,您可以从KieContainer中使用所需的特定KieBase创建KieSession。