Recargar las reglas de Drools sin relanzar
tengo unJava
Drools
aplicación en ejecución7.4.1.Final
versión, con un.drl
archivo con sus reglas. Mi aplicación permite generar un nuevo.drl
archivo en tiempo de ejecución, o modificar el actual.drl
archivo.
Quiero correr este nuevodrl
archivo sin volver a iniciar mi aplicación. Sé que si vuelvo a reiniciar, carga la nueva versión del archivo de reglas, pero quiero evitar detener la ejecución de la aplicación. Mi solicitud es un.jar
aplicación que ejecuto usandojava -jar
mando. En el siguiente códigoCTES.Rules
contener el sistema de archivos con el.drl
archivo.
¿Es posible?
Adjunto el código que uso para cargar mi archivo de reglas:
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: ");
}
ACTUALIZAR He leído sobre KieScanner y también sobre KieModule. Pero no tengo claro cómo incluir nuevos lanzados en mi aplicación o cómo usar KieScanner.
Lo que tengo que cambiar en este código para permitir la carga de una nueva versión del.drl
presentar enCTES.RULES
) sin detener mi solicitud?
Gracias