From 71010ae3fefbe897227343e44573385df9cd60cc Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 26 Jan 2021 16:04:30 +0100 Subject: Better main() support. --- .../main/java/io/trygvis/rules/engine/Engine.java | 53 +++++++++++----------- 1 file changed, 27 insertions(+), 26 deletions(-) (limited to 'module/ri-engine/src/main/java') diff --git a/module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java b/module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java index e5b9606..f73419a 100644 --- a/module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java +++ b/module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java @@ -2,11 +2,10 @@ package io.trygvis.rules.engine; import org.drools.core.audit.WorkingMemoryConsoleLogger; import org.kie.api.KieServices; -import org.kie.api.builder.Message; -import org.kie.api.builder.Message.Level; -import org.kie.api.builder.ReleaseId; import org.kie.api.event.rule.AgendaEventListener; import org.kie.api.event.rule.RuleRuntimeEventListener; +import org.kie.api.io.Resource; +import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,6 +13,8 @@ import org.slf4j.LoggerFactory; import java.io.Closeable; import java.io.File; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; public class Engine implements Closeable { private final Logger logger = LoggerFactory.getLogger(getClass()); @@ -28,36 +29,36 @@ public class Engine implements Closeable { logger.info("services = {}", services); - ReleaseId releaseId = null; - for (File path : (modules == null ? new File[0] : modules)) { - logger.info("New KieBuilder: {}", path); + var kieRepository = services.getRepository(); + logger.info("kieRepository.getDefaultReleaseId() = {}", kieRepository.getDefaultReleaseId()); + KieContainer container; + if (modules != null && modules.length > 0) { + List resources = new ArrayList<>(); + for (File path : modules) { + if (!path.exists()) { + logger.warn("Module path does not exist: {}", path.getAbsolutePath()); + continue; + } -// var kieBuilder = services.newKieBuilder(fileSystem); - var kieBuilder = services.newKieBuilder(path); - logger.info("Building module"); - kieBuilder.buildAll(); + logger.info("New KieBuilder: {}, file={}, directory={}", path, path.isFile(), path.isDirectory()); - logger.info("Module built!"); - - var results = kieBuilder.getResults(); - - for (Message message : results.getMessages(Level.INFO, Level.WARNING, Level.ERROR)) { -// logger.info("{} {}", message.getLevel(), message.getText()); - logger.info(message.toString()); + var resource = services.getResources().newFileSystemResource(path); + logger.info("resource.getResourceType() = {}", resource.getResourceType()); + resources.add(resource); } - var module = kieBuilder.getKieModule(); - releaseId = module.getReleaseId(); - logger.info("module.getReleaseId() = {}", releaseId); - logger.info("module.getClass() = {}", module.getClass()); - } + var module = kieRepository.addKieModule(resources.get(0), resources.subList(1, resources.size()).toArray(new Resource[0])); + logger.info("module.getReleaseId() = {}", module.getReleaseId()); + var rId = module.getReleaseId(); - logger.info("Creating classpath container"); -// var container = services.getKieClasspathContainer(); - var container = services.newKieContainer(releaseId); + logger.info("Creating classpath container, releaseId=" + rId); + container = services.newKieContainer(rId); + } else { + container = services.getKieClasspathContainer(); + } - logger.info("Creating KieBase"); + logger.info("Creating KieBase \"{}\"", name); logger.info("Available kie base names: {}", container.getKieBaseNames()); var kieBase = container.getKieBase(name); -- cgit v1.2.3