Driving License application

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Driving License application

seyfullah
Hello,
I am trying to implement Driving License example application in Drools Documentation Versio 6.0.0.0 Final.
My main method is as below.
                KieServices kieServices = KieServices.Factory.get();
                KieContainer kContainer = kieServices.getKieClasspathContainer();
                StatelessKieSession kSession = kContainer.newStatelessKieSession();
                Applicant applicant = new Applicant("Mr John Smith", 16);

                assertTrue( applicant.isValid() );
                kSession.execute( applicant ) ;
                assertFalse ( applicant.isValid() );

My licenseApplication.drl file is as below:
package MyPackage

import MyPackage.Applicant;

rule "Is of valid age"
when
        $a : Applicant( age < 18 )

then
        $a.setValid ( false );
end

Thanks to assertTrue and asserFalse methods, its output is
It is false as not expected
It is false as expected

Bu when I change age parameter from 16 to 22 its output is same again. I expected that it is true.

I think there is something wrong.
Do you have any idea about this problem?

Regards
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] Driving License application

salaboy
Can you share with us the Applicant class?
because if you have something like: boolean valid; it will be automatically initialized to false, so the rule will not do anything just leave the Applicant as it is


On Tue, Dec 24, 2013 at 10:05 AM, seyfullah <[hidden email]> wrote:
Hello,
I am trying to implement Driving License example application in Drools
Documentation Versio 6.0.0.0 Final.
My main method is as below.
                KieServices kieServices = KieServices.Factory.get();
                KieContainer kContainer = kieServices.getKieClasspathContainer();
                StatelessKieSession kSession = kContainer.newStatelessKieSession();
                Applicant applicant = new Applicant("Mr John Smith", 16);

                assertTrue( applicant.isValid() );
                kSession.execute( applicant ) ;
                assertFalse ( applicant.isValid() );

My licenseApplication.drl file is as below:
package MyPackage

import MyPackage.Applicant;

rule "Is of valid age"
when
        $a : Applicant( age < 18 )

then
        $a.setValid ( false );
end

Thanks to assertTrue and asserFalse methods, its output is
It is false as not expected
It is false as expected

Bu when I change age parameter from 16 to 22 its output is same again. I
expected that it is true.

I think there is something wrong.
Do you have any idea about this problem?

Regards



--
View this message in context: http://drools.46999.n3.nabble.com/Driving-License-application-tp4027403.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users



--
 - MyJourney @ http://salaboy.com
 - Co-Founder @ http://www.jugargentina.org
 - Co-Founder @ http://www.jbug.com.ar
 
 - Salatino "Salaboy" Mauricio -

_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] Driving License application

seyfullah
package MyPackage;
public class Applicant {

        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
        public boolean isValid() {
                return valid;
        }
        public void setValid(boolean valid) {
                this.valid = valid;
        }
        private String name;
        private int age;
        private boolean valid;
        public Applicant(String nameP, int ageP) {
                // TODO Auto-generated constructor stub
                this.name = nameP;
                this.age = ageP;
        }

}
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] Driving License application

salaboy
So, if you don't touch in some way the boolean valid, value in your rules or in your java code it will be false not true.



On Tue, Dec 24, 2013 at 10:15 AM, seyfullah <[hidden email]> wrote:
package MyPackage;
public class Applicant {

        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getAge() {
                return age;
        }
        public void setAge(int age) {
                this.age = age;
        }
        public boolean isValid() {
                return valid;
        }
        public void setValid(boolean valid) {
                this.valid = valid;
        }
        private String name;
        private int age;
        private boolean valid;
        public Applicant(String nameP, int ageP) {
                // TODO Auto-generated constructor stub
                this.name = nameP;
                this.age = ageP;
        }

}




--
View this message in context: http://drools.46999.n3.nabble.com/Driving-License-application-tp4027403p4027405.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users



--
 - MyJourney @ http://salaboy.com
 - Co-Founder @ http://www.jugargentina.org
 - Co-Founder @ http://www.jbug.com.ar
 
 - Salatino "Salaboy" Mauricio -

_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] Driving License application

seyfullah
Ok, I changed my drl file and main method as follows, and it works. Thank you.

package MyPackage

import MyPackage.Applicant;

rule "Is of not valid age"
when
        $a : Applicant( age < 18 )
then
        $a.setValid ( false );
end

rule "Is of valid age"
when
        $a : Applicant( age > 17 )
then
        $a.setValid ( true );
end


                KieServices kieServices = KieServices.Factory.get();
                KieContainer kContainer = kieServices.getKieClasspathContainer();
                StatelessKieSession kSession = kContainer.newStatelessKieSession();
               
                Applicant applicant = new Applicant("Mr John Smith", 16);
                assertFalse( applicant.isValid() );
                kSession.execute( applicant ) ;
                assertFalse ( applicant.isValid() );
               
                Applicant applicant2 = new Applicant("Mr Bill Wayne", 22);
                assertFalse( applicant2.isValid() );
                kSession.execute( applicant2 ) ;
                assertTrue ( applicant2.isValid() );
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] Driving License application

salaboy
Yeah, that will do the work.



On Tue, Dec 24, 2013 at 10:34 AM, seyfullah <[hidden email]> wrote:
Ok, I changed my drl file and main method as follows, and it works. Thank
you.

package MyPackage

import MyPackage.Applicant;

rule "Is of not valid age"
when
        $a : Applicant( age < 18 )
then
        $a.setValid ( false );
end

rule "Is of valid age"
when
        $a : Applicant( age > 17 )
then
        $a.setValid ( true );
end


                KieServices kieServices = KieServices.Factory.get();
                KieContainer kContainer = kieServices.getKieClasspathContainer();
                StatelessKieSession kSession = kContainer.newStatelessKieSession();

                Applicant applicant = new Applicant("Mr John Smith", 16);
                assertFalse( applicant.isValid() );
                kSession.execute( applicant ) ;
                assertFalse ( applicant.isValid() );

                Applicant applicant2 = new Applicant("Mr Bill Wayne", 22);
                assertFalse( applicant2.isValid() );
                kSession.execute( applicant2 ) ;
                assertTrue ( applicant2.isValid() );




--
View this message in context: http://drools.46999.n3.nabble.com/Driving-License-application-tp4027403p4027407.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users



--
 - MyJourney @ http://salaboy.com
 - Co-Founder @ http://www.jugargentina.org
 - Co-Founder @ http://www.jbug.com.ar
 
 - Salatino "Salaboy" Mauricio -

_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] Driving License application

laune
In reply to this post by seyfullah
If you have a property (such as valid) that has N possible values (2
in this case) you should have at least N-1 rules, setting values 1 to
N-1 (as you have) and a default by initialisation equal to the N-th
value (which is missing from your code).

Alternatively, consider using N rules, one for each possible value,
and then you don't have to  worry about initialisation.

-W

On 24/12/2013, seyfullah <[hidden email]> wrote:

> package MyPackage;
> public class Applicant {
>
> public String getName() {
> return name;
> }
> public void setName(String name) {
> this.name = name;
> }
> public int getAge() {
> return age;
> }
> public void setAge(int age) {
> this.age = age;
> }
> public boolean isValid() {
> return valid;
> }
> public void setValid(boolean valid) {
> this.valid = valid;
> }
> private String name;
> private int age;
> private boolean valid;
> public Applicant(String nameP, int ageP) {
> // TODO Auto-generated constructor stub
> this.name = nameP;
> this.age = ageP;
> }
>
> }
>
>
>
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/Driving-License-application-tp4027403p4027405.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> [hidden email]
> https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users