summaryrefslogtreecommitdiff
path: root/module/ri-engine/src
diff options
context:
space:
mode:
Diffstat (limited to 'module/ri-engine/src')
-rw-r--r--module/ri-engine/src/main/java/io/trygvis/rules/engine/Engine.java25
-rw-r--r--module/ri-engine/src/main/java/io/trygvis/rules/engine/TemplateEngine.java16
-rw-r--r--module/ri-engine/src/main/resources/io/trygvis/rules/terraform/terraform.drl2
3 files changed, 23 insertions, 20 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 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
diff --git a/module/ri-engine/src/main/java/io/trygvis/rules/engine/TemplateEngine.java b/module/ri-engine/src/main/java/io/trygvis/rules/engine/TemplateEngine.java
index ace7aaf..3c7c755 100644
--- a/module/ri-engine/src/main/java/io/trygvis/rules/engine/TemplateEngine.java
+++ b/module/ri-engine/src/main/java/io/trygvis/rules/engine/TemplateEngine.java
@@ -12,18 +12,16 @@ import java.util.Map;
public class TemplateEngine {
private final Jinjava jinjava = new Jinjava();
+ private final File basedir;
+
+ public TemplateEngine(File basedir) {
+ this.basedir = basedir;
+ }
+
public void template(String name, String output, Map<String, Object> params) throws IOException {
var template = Files.readString(Path.of("j2", name + ".j2"));
String renderedTemplate = jinjava.render(template, params);
-// System.out.println("-----------------------------------");
-// for (var item : params.entrySet()) {
-// System.out.printf(" %s : %s%n", item.getKey(), item.getValue());
-// }
- System.out.println("-----------------------------------");
- System.out.println(renderedTemplate);
- System.out.println("-----------------------------------");
-
- var f = new File("gen", output);
+ var f = new File(basedir, output);
FileUtil.createMissingParentDirectories(f);
Files.writeString(f.toPath(), renderedTemplate);
}
diff --git a/module/ri-engine/src/main/resources/io/trygvis/rules/terraform/terraform.drl b/module/ri-engine/src/main/resources/io/trygvis/rules/terraform/terraform.drl
index 40b9f7c..b3d176b 100644
--- a/module/ri-engine/src/main/resources/io/trygvis/rules/terraform/terraform.drl
+++ b/module/ri-engine/src/main/resources/io/trygvis/rules/terraform/terraform.drl
@@ -39,6 +39,7 @@ then
end
rule "TF for TerraformMachine"
+ agenda-group "generate"
when
$m: Machine()
$scw: ScalewayMachine(machine == $m)
@@ -48,6 +49,7 @@ then
end
rule "Terraform for DNS"
+ agenda-group "generate"
when
$entry: DnsEntry()
$tf : DnsEntryTerraformExpression(entry == $entry)