From f2efbd9a67ee3cadf256ef6bca332539befc8d13 Mon Sep 17 00:00:00 2001 From: felipeazv Date: Sat, 19 Aug 2017 16:40:45 +0200 Subject: [PATCH] BAEL-812: moving examples to rule-engines folder (#2461) * spring beans DI examples * fix-1: shortening examples * List of Rules Engines in Java * BAEL-812: Openl-Tablets example added * BAEL-812: artifacts names changed * BAEL-812: moving rule-engines examples to rule-engines folder * BAEL-812: removing evaluation article files * BAEL-812: folder renamed * BAEL-812: folder renamed * BAEL-812: pom.xml - parent added --- rule-engines/easy-rules/pom.xml | 24 ++++++++++++++ .../baeldung/easyrules/HelloWorldRule.java | 20 +++++++++++ .../java/com/baeldung/easyrules/Launcher.java | 21 ++++++++++++ rule-engines/openl-tablets/pom.xml | 29 ++++++++++++++++ .../com/baeldung/openltablets/model/Case.java | 23 +++++++++++++ .../baeldung/openltablets/model/Greeting.java | 20 +++++++++++ .../com/baeldung/openltablets/model/User.java | 14 ++++++++ .../baeldung/openltablets/rules/IRule.java | 7 ++++ .../com/baeldung/openltablets/rules/Main.java | 31 ++++++++++++++++++ .../baeldung/openltablets/rules/Response.java | 24 ++++++++++++++ .../main/resources/openltablets/HelloUser.xls | Bin 0 -> 25088 bytes rule-engines/rulebook/pom.xml | 24 ++++++++++++++ .../com/baeldung/rulebook/HelloWorldRule.java | 17 ++++++++++ .../java/com/baeldung/rulebook/Launcher.java | 12 +++++++ 14 files changed, 266 insertions(+) create mode 100644 rule-engines/easy-rules/pom.xml create mode 100644 rule-engines/easy-rules/src/main/java/com/baeldung/easyrules/HelloWorldRule.java create mode 100644 rule-engines/easy-rules/src/main/java/com/baeldung/easyrules/Launcher.java create mode 100644 rule-engines/openl-tablets/pom.xml create mode 100644 rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/Case.java create mode 100644 rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/Greeting.java create mode 100644 rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/User.java create mode 100644 rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/IRule.java create mode 100644 rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Main.java create mode 100644 rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Response.java create mode 100644 rule-engines/openl-tablets/src/main/resources/openltablets/HelloUser.xls create mode 100644 rule-engines/rulebook/pom.xml create mode 100644 rule-engines/rulebook/src/main/java/com/baeldung/rulebook/HelloWorldRule.java create mode 100644 rule-engines/rulebook/src/main/java/com/baeldung/rulebook/Launcher.java diff --git a/rule-engines/easy-rules/pom.xml b/rule-engines/easy-rules/pom.xml new file mode 100644 index 0000000000..78edc09d1a --- /dev/null +++ b/rule-engines/easy-rules/pom.xml @@ -0,0 +1,24 @@ + + 4.0.0 + + com.baeldung.easyrules + easy-rules + 1.0 + + easy-rules + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + org.jeasy + easy-rules-core + 3.0.0 + + + \ No newline at end of file diff --git a/rule-engines/easy-rules/src/main/java/com/baeldung/easyrules/HelloWorldRule.java b/rule-engines/easy-rules/src/main/java/com/baeldung/easyrules/HelloWorldRule.java new file mode 100644 index 0000000000..5448eabf2a --- /dev/null +++ b/rule-engines/easy-rules/src/main/java/com/baeldung/easyrules/HelloWorldRule.java @@ -0,0 +1,20 @@ +package com.baeldung.easyrules; + +import org.jeasy.rules.annotation.Action; +import org.jeasy.rules.annotation.Condition; +import org.jeasy.rules.annotation.Rule; + +@Rule(name = "Hello World rule", description = "Always say hello world") +public class HelloWorldRule { + + @Condition + public boolean when() { + return true; + } + + @Action + public void then() throws Exception { + System.out.println("hello world"); + } + +} diff --git a/rule-engines/easy-rules/src/main/java/com/baeldung/easyrules/Launcher.java b/rule-engines/easy-rules/src/main/java/com/baeldung/easyrules/Launcher.java new file mode 100644 index 0000000000..427e3eace0 --- /dev/null +++ b/rule-engines/easy-rules/src/main/java/com/baeldung/easyrules/Launcher.java @@ -0,0 +1,21 @@ +package com.baeldung.easyrules; + +import org.jeasy.rules.api.Facts; +import org.jeasy.rules.api.Rules; +import org.jeasy.rules.api.RulesEngine; +import org.jeasy.rules.core.DefaultRulesEngine; + +public class Launcher { + public static void main(String... args) { + // create facts + Facts facts = new Facts(); + + // create rules + Rules rules = new Rules(); + rules.register(new HelloWorldRule()); + + // create a rules engine and fire rules on known facts + RulesEngine rulesEngine = new DefaultRulesEngine(); + rulesEngine.fire(rules, facts); + } +} diff --git a/rule-engines/openl-tablets/pom.xml b/rule-engines/openl-tablets/pom.xml new file mode 100644 index 0000000000..e983d4e566 --- /dev/null +++ b/rule-engines/openl-tablets/pom.xml @@ -0,0 +1,29 @@ + + 4.0.0 + + com.baeldung.openltablets + openl-tablets + 1.0 + + openl-tablets + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + org.openl + org.openl.core + 5.19.4 + + + org.openl.rules + org.openl.rules + 5.19.4 + + + \ No newline at end of file diff --git a/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/Case.java b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/Case.java new file mode 100644 index 0000000000..f9f5f4bd5f --- /dev/null +++ b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/Case.java @@ -0,0 +1,23 @@ +package com.baeldung.openltablets.model; + +public class Case { + + private User user; + private int hourOfDay; + + public User getUser() { + return user; + } + + public void setUser(final User user) { + this.user = user; + } + + public int getHourOfDay() { + return hourOfDay; + } + + public void setHourOfDay(final int hourOfDay) { + this.hourOfDay = hourOfDay; + } +} diff --git a/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/Greeting.java b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/Greeting.java new file mode 100644 index 0000000000..5dc7bcd117 --- /dev/null +++ b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/Greeting.java @@ -0,0 +1,20 @@ +package com.baeldung.openltablets.model; + +public enum Greeting { + + GOOD_MORNING("Good Morning"), + GOOD_AFTERNOON("Good Afternoon"), + GOOD_EVENING("Good Evening"), + GOOD_NIGHT("Good Night"); + + private final String literal; + + private Greeting(final String literal) { + this.literal = literal; + } + + public String getLiteral() { + return literal; + } + +} \ No newline at end of file diff --git a/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/User.java b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/User.java new file mode 100644 index 0000000000..8e45487497 --- /dev/null +++ b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/model/User.java @@ -0,0 +1,14 @@ +package com.baeldung.openltablets.model; + +public class User { + + private String name; + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } +} \ No newline at end of file diff --git a/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/IRule.java b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/IRule.java new file mode 100644 index 0000000000..857a6433ef --- /dev/null +++ b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/IRule.java @@ -0,0 +1,7 @@ +package com.baeldung.openltablets.rules; + +import com.baeldung.openltablets.model.Case; + +public interface IRule { + void helloUser(final Case aCase, final Response response); +} \ No newline at end of file diff --git a/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Main.java b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Main.java new file mode 100644 index 0000000000..34f5c48ed1 --- /dev/null +++ b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Main.java @@ -0,0 +1,31 @@ +package com.baeldung.openltablets.rules; + + +import java.time.LocalDateTime; + +import org.openl.rules.runtime.RulesEngineFactory; +import org.openl.runtime.EngineFactory; + +import com.baeldung.openltablets.model.Case; +import com.baeldung.openltablets.model.User; + +public class Main { + private IRule instance; + + public static void main(String[] args) { + Main rules = new Main(); + User user = new User(); + user.setName("Donald Duck"); + Case aCase = new Case(); + aCase.setUser(user); + aCase.setHourOfDay(23); + rules.process(aCase); + } + + public void process(Case aCase) { + final EngineFactory engineFactory = new RulesEngineFactory(getClass().getClassLoader() + .getResource("openltablets/HelloUser.xls"), IRule.class); + instance = engineFactory.newEngineInstance(); + instance.helloUser(aCase, new Response()); + } +} diff --git a/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Response.java b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Response.java new file mode 100644 index 0000000000..27fa634866 --- /dev/null +++ b/rule-engines/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Response.java @@ -0,0 +1,24 @@ +package com.baeldung.openltablets.rules; + +import java.util.HashMap; +import java.util.Map; + +public class Response { + private String result; + private Map map = new HashMap<>(); + + public Response() { } + + public String getResult() { + return result; + } + + public void setResult(final String s) { + result = s; + } + + public Map getMap() { + return map; + } + +} diff --git a/rule-engines/openl-tablets/src/main/resources/openltablets/HelloUser.xls b/rule-engines/openl-tablets/src/main/resources/openltablets/HelloUser.xls new file mode 100644 index 0000000000000000000000000000000000000000..1e85d0ce2de54ddc812ec9639211a313a5024b45 GIT binary patch literal 25088 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 A1ONa4 literal 0 HcmV?d00001 diff --git a/rule-engines/rulebook/pom.xml b/rule-engines/rulebook/pom.xml new file mode 100644 index 0000000000..711bee8c91 --- /dev/null +++ b/rule-engines/rulebook/pom.xml @@ -0,0 +1,24 @@ + + 4.0.0 + + com.baeldung.rulebook + rulebook + 1.0 + + rulebook + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + com.deliveredtechnologies + rulebook-core + 0.6.2 + + + \ No newline at end of file diff --git a/rule-engines/rulebook/src/main/java/com/baeldung/rulebook/HelloWorldRule.java b/rule-engines/rulebook/src/main/java/com/baeldung/rulebook/HelloWorldRule.java new file mode 100644 index 0000000000..c09772a3c6 --- /dev/null +++ b/rule-engines/rulebook/src/main/java/com/baeldung/rulebook/HelloWorldRule.java @@ -0,0 +1,17 @@ +package com.baeldung.rulebook; + +import com.deliveredtechnologies.rulebook.lang.RuleBookBuilder; +import com.deliveredtechnologies.rulebook.model.RuleBook; + +public class HelloWorldRule { + public RuleBook defineHelloWorldRules() { + + return RuleBookBuilder.create() + .addRule(rule -> rule.withNoSpecifiedFactType() + .then(f -> System.out.print("Hello "))) + .addRule(rule -> rule.withNoSpecifiedFactType() + .then(f -> System.out.println("World"))) + .build(); + + } +} diff --git a/rule-engines/rulebook/src/main/java/com/baeldung/rulebook/Launcher.java b/rule-engines/rulebook/src/main/java/com/baeldung/rulebook/Launcher.java new file mode 100644 index 0000000000..57965457ec --- /dev/null +++ b/rule-engines/rulebook/src/main/java/com/baeldung/rulebook/Launcher.java @@ -0,0 +1,12 @@ +package com.baeldung.rulebook; + +import com.deliveredtechnologies.rulebook.FactMap; + +public class Launcher { + + public static void main(String[] args) { + HelloWorldRule ruleBook = new HelloWorldRule(); + ruleBook.defineHelloWorldRules() + .run(new FactMap<>()); + } +}