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 new file mode 100644 index 000000000000..aeaff19edf4c --- /dev/null +++ b/drools/src/main/java/com/baeldung/drools/forward_chaining/ForwardChaining.java @@ -0,0 +1,29 @@ +package com.baeldung.drools.forward_chaining; + +import com.baeldung.drools.config.DroolsBeanFactory; +import com.baeldung.drools.model.Applicant; +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(); + 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()); + + 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)