package io.trygvis.rules.engine; import org.drools.core.audit.WorkingMemoryConsoleLogger; import org.kie.api.KieServices; import org.kie.api.event.rule.AgendaEventListener; import org.kie.api.event.rule.RuleRuntimeEventListener; import org.kie.api.runtime.KieSession; import java.io.Closeable; import java.io.IOException; public class Engine implements Closeable { public final DbIo io; public final KieSession session; public Engine(String database) throws IOException { var services = KieServices.Factory.get(); var container = services.getKieClasspathContainer(); var kieBase = container.getKieBase(); io = new DbIo(kieBase); var objects = io.load(database); session = container.newKieSession(); session.setGlobal("te", new TemplateEngine()); for (var object : objects) { System.out.println("object = " + object); session.insert(object); } var logger = new WorkingMemoryConsoleLogger(session); session.addEventListener((AgendaEventListener) logger); session.addEventListener((RuleRuntimeEventListener) logger); session.getAgenda().getAgendaGroup("init").setFocus(); session.fireAllRules(); } @Override public void close() { session.dispose(); } }