From 149cf9efadb1da64b9ee716ac9bee1ac0c0e1329 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 6 Jan 2021 16:04:22 +0100 Subject: Using agenda groups to sequence phases. --- .../main/java/io/trygvis/rules/engine/Engine.java | 25 ++++++++++++---------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.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 f624603..b73e2e8 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 @@ -7,36 +7,39 @@ import org.kie.api.event.rule.RuleRuntimeEventListener; import org.kie.api.runtime.KieSession; import java.io.Closeable; +import java.io.File; import java.io.IOException; public class Engine implements Closeable { public final DbIo io; public final KieSession session; - public Engine(String k, String database) throws IOException { + public Engine(String name, String database, File output, String[] agendaGroups) throws IOException { var services = KieServices.Factory.get(); var container = services.getKieClasspathContainer(); - var kieBase = container.getKieBase(k); + var kieBase = container.getKieBase(name); io = new DbIo(kieBase); var objects = io.load(database); - session = container.newKieSession(k); + session = container.newKieSession(name); - session.setGlobal("te", new TemplateEngine()); + var logger = new WorkingMemoryConsoleLogger(session); + session.addEventListener((AgendaEventListener) logger); + session.addEventListener((RuleRuntimeEventListener) logger); + + session.setGlobal("te", new TemplateEngine(output)); 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(); + for (var agendaGroup : agendaGroups) { + System.out.println("Setting agenda: " + agendaGroup); + session.getAgenda().getAgendaGroup(agendaGroup).setFocus(); + session.fireAllRules(); + } } @Override -- cgit v1.2.3