Thanks guys. Another lesson learnt!

 


From: rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org] On Behalf Of Edson Tirelli
Sent: 16 April 2010 14:39
To: Rules Users List
Subject: Re: [rules-users] Fwd: Double Handling

 


   Yes, Wolfgang is right. Just don't use ; inside the modify block:

modify( $d ) {
    preset( $i )
}

   Edson

2010/4/16 Wolfgang Laun <wolfgang.laun@gmail.com>

Well, I already suggested to you that the Drools Engine must be informed about changes to facts if these changes should trigger any rules.

In rule
"Preset" you have

  
$d.preset($i);

but this must be written as

   modify( $d ){
      preset( $i );
   }

-W

2010/4/16 Ade Timi <adeyinka.timi@nathean.com>

Changing the method name solved the build error problem.

But now I’m having my initial number comparison problem. I am using a rule flow that runs preset 1st and then customer details. It is acting weird in that it never runs customer details with the cpointer == 2 condition. It only runs it when I change the condition to cpointer <= 2 and then its print statement returns the value 2! What am I doing wrong?

 

rule "Joint App"

      ruleflow-group "customer_details"

      when

            $d : IndividualDecision(cpointer == 2)

      then

            $d.setWfResult("Yes");

            $d.setJointApp(true);

            System.out.println("Customer pointer " + $d.getCpointer());

            System.out.println("Customer Details(Joint App)? " + $d.getWfResult());

end

 

rule "Preset"

      ruleflow-group "preset"

      when

            $d : IndividualDecision()

            $i : Individual()

      then

            $d.preset($i);

            System.out.println("Custpointer: " + $d.getCpointer());

            System.out.println("Preset..........");

End

 

public class IndividualDecision {

      . . .

      private int cpointer;

      /**

       * @param customerPointer the customerPointer to set

       */

      public void setCpointer(int cpointer) {

            this.cpointer = cpointer;

      }

      /**

       * @return the customerPointer

       */

      public int getCpointer() {

            return cpointer;

      }

      /**

       * @param ind.

       * Preset for Calculator

       */

      public void preset(Individual ind) {

            this.setDecision("Error");

            this.setCpointer(2);

            this.setDepositPercentage((ind.getDepositLomabard() / ind.getAmountFinanced()) * 100);

            this.setAssetAgeInYears(ind.getAssetAgeYears()/12);

      }

}

 

 


From: rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org] On Behalf Of Edson Tirelli
Sent: 15 April 2010 14:59
To: Rules Users List
Subject: [rules-users] Fwd: Double Handling

 


     Sorry, I meant to send this to the list.

     Ade, let us know if that solves the problem.

     Edson

---------- Forwarded message ----------
From: Edson Tirelli <tirelli@post.com>
Date: 2010/4/15
Subject: Re: [rules-users] Double Handling
To: Ade Timi <adeyinka.timi@nathean.com>



   Ade,

   There you go:

https://jira.jboss.org/jira/browse/JBRULES-2424

   You have:

   public String setErrorMessage() {


   This problem was fixed in M2 (trunk). Meanwhile, you can rename your method or use a trunk snapshot.



    Edson

 

 

 

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss by Red Hat @ www.jboss.com