summaryrefslogtreecommitdiff
path: root/module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java
diff options
context:
space:
mode:
Diffstat (limited to 'module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java')
-rw-r--r--module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java53
1 files changed, 27 insertions, 26 deletions
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<Resource> 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);