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.java64
1 files changed, 53 insertions, 11 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 b73e2e8..3db1625 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,41 +2,83 @@ 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.runtime.KieSession;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
public class Engine implements Closeable {
+ private final Logger logger = LoggerFactory.getLogger(getClass());
+
public final DbIo io;
public final KieSession session;
- public Engine(String name, String database, File output, String[] agendaGroups) throws IOException {
+ public Engine(String name, File database, File output, String[] agendaGroups, File[] modules) throws IOException {
+ logger.info("Getting KieServices");
+
var services = KieServices.Factory.get();
- var container = services.getKieClasspathContainer();
- var kieBase = container.getKieBase(name);
- io = new DbIo(kieBase);
- var objects = io.load(database);
+ ReleaseId releaseId = null;
+ for (File path : (modules == null ? new File[0] : modules)) {
+ logger.info("New KieBuilder: {}", path);
+
+
+// var kieBuilder = services.newKieBuilder(fileSystem);
+ var kieBuilder = services.newKieBuilder(path);
+ logger.info("Building module");
+ kieBuilder.buildAll();
+
+ 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 module = kieBuilder.getKieModule();
+ releaseId = module.getReleaseId();
+ logger.info("module.getReleaseId() = {}", releaseId);
+ logger.info("module.getClass() = {}", module.getClass());
+ }
+
+ logger.info("Creating classpath container");
+// var container = services.getKieClasspathContainer();
+ var container = services.newKieContainer(releaseId);
+
+ logger.info("Creating KieBase");
+ logger.info("Available kie base names: {}", container.getKieBaseNames());
+ var kieBase = container.getKieBase(name);
session = container.newKieSession(name);
- var logger = new WorkingMemoryConsoleLogger(session);
- session.addEventListener((AgendaEventListener) logger);
- session.addEventListener((RuleRuntimeEventListener) logger);
+ var l = new WorkingMemoryConsoleLogger(session);
+ session.addEventListener((AgendaEventListener) l);
+ session.addEventListener((RuleRuntimeEventListener) l);
- session.setGlobal("te", new TemplateEngine(output));
+ session.setGlobal("te", new JinjavaTemplateEngine(output));
+
+ logger.info("Loading data");
+ io = new DbIo(container, kieBase);
+ var objects = io.load(database);
+ logger.info("Loaded {} objects", objects.size());
for (var object : objects) {
- System.out.println("object = " + object);
+ logger.info("object = " + object);
session.insert(object);
}
for (var agendaGroup : agendaGroups) {
- System.out.println("Setting agenda: " + agendaGroup);
+ logger.info("Setting agenda: " + agendaGroup);
session.getAgenda().getAgendaGroup(agendaGroup).setFocus();
session.fireAllRules();
}