From 70bfdd6fc4f2deabdaca8d40b41122a25842d455 Mon Sep 17 00:00:00 2001 From: Daniel Fintinariu Date: Wed, 13 Aug 2025 08:17:45 +0200 Subject: [PATCH 1/2] Added forward chaining example --- .../forward_chaining/ForwardChaining.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 drools/src/main/java/com/baeldung/drools/forward_chaining/ForwardChaining.java diff --git a/drools/src/main/java/com/baeldung/drools/forward_chaining/ForwardChaining.java b/drools/src/main/java/com/baeldung/drools/forward_chaining/ForwardChaining.java new file mode 100644 index 000000000000..48a00e9a86b1 --- /dev/null +++ b/drools/src/main/java/com/baeldung/drools/forward_chaining/ForwardChaining.java @@ -0,0 +1,31 @@ +package com.baeldung.drools.forward_chaining; + +import com.baeldung.drools.config.DroolsBeanFactory; +import com.baeldung.drools.model.Applicant; +import com.baeldung.drools.model.Product; +import com.baeldung.drools.model.SuggestedRole; +import org.kie.api.runtime.KieSession; + +public class ForwardChaining { + public static void main(String[] args) { + ForwardChaining result = new ForwardChaining(); + result.forwardChaining(); + } + + private void forwardChaining() { + KieSession ksession = new DroolsBeanFactory().getKieSession(); + try { + Applicant applicant = new Applicant("Daniel", 38, 1_600_000.0, 11); + SuggestedRole suggestedRole = new SuggestedRole(); + + ksession.setGlobal("suggestedRole", suggestedRole); + ksession.insert(applicant); + + int fired = ksession.fireAllRules(); + System.out.println("Rules fired: " + fired); + System.out.println("Suggested role: " + suggestedRole.getRole()); + } finally { + ksession.dispose(); + } + } +} From 60c04d156b935bd69e59582b11a856719f86847b Mon Sep 17 00:00:00 2001 From: Daniel Fintinariu Date: Wed, 13 Aug 2025 08:19:44 +0200 Subject: [PATCH 2/2] Updated pom --- drools/pom.xml | 6 ++-- .../forward_chaining/ForwardChaining.java | 28 +++++++++---------- .../drools/rules/SuggestApplicant.drl | 2 +- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/drools/pom.xml b/drools/pom.xml index b8a4f2e9903b..19dd115f65e0 100644 --- a/drools/pom.xml +++ b/drools/pom.xml @@ -62,9 +62,9 @@ 4.4.16 - 9.44.0.Final - 5.2.3 - 8.32.0.Final + 10.1.0 + 5.4.1 + 9.44.0.Final diff --git a/drools/src/main/java/com/baeldung/drools/forward_chaining/ForwardChaining.java b/drools/src/main/java/com/baeldung/drools/forward_chaining/ForwardChaining.java index 48a00e9a86b1..aeaff19edf4c 100644 --- a/drools/src/main/java/com/baeldung/drools/forward_chaining/ForwardChaining.java +++ b/drools/src/main/java/com/baeldung/drools/forward_chaining/ForwardChaining.java @@ -2,7 +2,6 @@ import com.baeldung.drools.config.DroolsBeanFactory; import com.baeldung.drools.model.Applicant; -import com.baeldung.drools.model.Product; import com.baeldung.drools.model.SuggestedRole; import org.kie.api.runtime.KieSession; @@ -12,20 +11,19 @@ public static void main(String[] args) { result.forwardChaining(); } - private void forwardChaining() { - KieSession ksession = new DroolsBeanFactory().getKieSession(); - try { - Applicant applicant = new Applicant("Daniel", 38, 1_600_000.0, 11); - SuggestedRole suggestedRole = new SuggestedRole(); +private void forwardChaining() { + KieSession ksession = new DroolsBeanFactory().getKieSession(); + Applicant applicant = new Applicant("Daniel", 38, 1_600_000.0, 11); + SuggestedRole suggestedRole = new SuggestedRole(); - ksession.setGlobal("suggestedRole", suggestedRole); - ksession.insert(applicant); + ksession.setGlobal("suggestedRole", suggestedRole); + ksession.insert(applicant); + + int fired = ksession.fireAllRules(); + System.out.println("Rules fired: " + fired); + System.out.println("Suggested role: " + suggestedRole.getRole()); + + ksession.dispose(); +} - int fired = ksession.fireAllRules(); - System.out.println("Rules fired: " + fired); - System.out.println("Suggested role: " + suggestedRole.getRole()); - } finally { - ksession.dispose(); - } - } } diff --git a/drools/src/main/resources/com/baeldung/drools/rules/SuggestApplicant.drl b/drools/src/main/resources/com/baeldung/drools/rules/SuggestApplicant.drl index 3deb037571a9..9d9ed7d1c96f 100644 --- a/drools/src/main/resources/com/baeldung/drools/rules/SuggestApplicant.drl +++ b/drools/src/main/resources/com/baeldung/drools/rules/SuggestApplicant.drl @@ -14,7 +14,7 @@ rule "Suggest Manager Role" suggestedRole.setRole("Manager"); end -rule "Suggest Senior developer Role" +rule "Suggest Senior Developer Role" when Applicant(experienceInYears > 5 && experienceInYears <= 10) Applicant(currentSalary > 500000 && currentSalary <= 1500000)