Atualizar regras de Drools sem reiniciar
eu tenho umJava
Drools
aplicativo em execução7.4.1.Final
versão, com um.drl
arquivo com suas regras. Minha aplicação permite gerar um novo.drl
em tempo de execução ou modifique o arquivo atual.drl
Arquivo.
Eu quero rodar esse novodrl
arquivo sem relançar novamente meu aplicativo. Sei que, se reiniciar novamente, ele carregará a nova versão do arquivo de regras, mas quero evitar interromper a execução do aplicativo. Minha aplicação é uma.jar
aplicativo que eu corro usandojava -jar
comando. No código abaixoCTES.Rules
contém o sistema de arquivos com o.drl
Arquivo.
É possível?
Anexo o código usado para carregar meu arquivo de regras:
private void build() throws Exception {
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
kfs.write(ResourceFactory.newFileResource(new File(CTES.RULES)));
KieBuilder kieBuilder = kieServices.newKieBuilder(kfs).buildAll();
KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());
KieSessionConfiguration conf= SessionConfiguration.newInstance();
kSession = kieContainer.newKieSession(conf);
if (kieBuilder.getResults().hasMessages(Message.Level.ERROR)) {
List<Message> errors = kieBuilder.getResults().getMessages(Message.Level.ERROR);
StringBuilder sb = new StringBuilder("Errors:");
for (Message msg : errors) {
sb.append("\n " + msg);
}
throw new Exception(sb.toString());
}
System.out.println("KieServices built: ");
}
ATUALIZAR Eu li sobre o KieScanner e também sobre o KieModule. Mas não sei como incluir os novos lançamentos no meu aplicativo ou como usar o KieScanner.
O que preciso alterar neste código para permitir o carregamento de uma nova versão do.drl
arquivo emCTES.RULES
) sem parar meu aplicativo?
obrigado