summaryrefslogtreecommitdiff
path: root/module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2021-01-25 21:29:12 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2021-01-25 21:29:12 +0100
commit912bc8b903dfa6d438c2469ecdad35c181c71830 (patch)
tree1e6ee9fdcb2b9d488914b80623d68189867533bb /module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java
parent92b957036218c03a20ba35c19a70bdf5e2333fd3 (diff)
downloadrules-sandbox-912bc8b903dfa6d438c2469ecdad35c181c71830.tar.gz
rules-sandbox-912bc8b903dfa6d438c2469ecdad35c181c71830.tar.bz2
rules-sandbox-912bc8b903dfa6d438c2469ecdad35c181c71830.tar.xz
rules-sandbox-912bc8b903dfa6d438c2469ecdad35c181c71830.zip
Improving usability, massive refactoring.
* Moving all Drools code into their own modules. This fixes ri-engine to acme dependency. * Now they all inherit from their own parent, should be used by third party code too. * Separating acme planning code into its own module. * Splitting rules code from ri-engine into ri-base. ri-engine is now a pure launcher for modules. * Dumping kogito for the most part, but it seems like the planner still requires that.
Diffstat (limited to 'module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java')
-rw-r--r--module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java55
1 files changed, 55 insertions, 0 deletions
diff --git a/module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java b/module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java
new file mode 100644
index 0000000..345d8b8
--- /dev/null
+++ b/module/ri-engine/src/main/java/io/trygvis/rules/engine/cli/RunCommand.java
@@ -0,0 +1,55 @@
+package io.trygvis.rules.engine.cli;
+
+import io.trygvis.rules.engine.Engine;
+
+import java.io.File;
+import java.util.concurrent.Callable;
+
+import static picocli.CommandLine.Command;
+import static picocli.CommandLine.Option;
+
+@Command(name = "run")
+public class RunCommand implements Callable<Integer> {
+
+ @Option(names = {"-n", "--name"})
+ public String name;
+
+ @Option(names = {"-i", "--input"})
+ public File input;
+
+ @Option(names = {"--output-state"})
+ public File outputState;
+
+ @Option(names = {"--generated-output"})
+ public File generatedOutput;
+
+ @Option(names = {"--agenda-groups"})
+ public String[] agendaGroups;
+
+ @Option(names = {"--modules"}, split = ",")
+ public File[] modules;
+
+ @Override
+ public Integer call() throws Exception {
+ System.out.println("RunCommand.call");
+
+ if (agendaGroups == null || agendaGroups.length == 0) {
+ agendaGroups = new String[]{"init", "generate"};
+ }
+
+ try (var engine = new Engine(name, input, generatedOutput, agendaGroups, modules)) {
+ engine.io.dump(outputState, engine.session.getFactHandles(), (Object o) ->
+ o.getClass().getName().contains("Wg") ||
+ o.getClass().getSimpleName().contains("Machine") ||
+ o.getClass().getSimpleName().contains("DnsEntry") ||
+ o.getClass().getSimpleName().contains("Ipv4Cidr") ||
+ o.getClass().getSimpleName().contains("Ipv4Address")
+ );
+ System.out.println("RunCommand.call");
+ }
+
+ System.out.println("RunCommand.call");
+
+ return 0;
+ }
+}