[rules-users] Weighted rules / scoring

Sarish Jain sarish.jain at gmail.com
Mon Jun 8 14:32:15 EDT 2009


I think your issue is resolved Chris, but just curious would putting the
rule like below make it more efficient?

rule "Myscoreincreaserule"
  dialect "mvel"
  when
      a : Applicant( name == "chris",$score:score )
  then
      a.setScore( $score + 2 );
end

--Sarish

"Shoot for the moon. Even if you miss it you will land among the stars." -
Les Brown

On Mon, Jun 8, 2009 at 11:06 AM, Chris Strachan
<chris.strac at googlemail.com>wrote:

>
> Hi,
>
> Don't think I intended to create a new instance, just modify the one
> matched in the rule.  The following seems to have got it working.
>
> rule "Myscoreincreaserule"
>   dialect "mvel"
>   when
>       a : Applicant( name == "chris" )
>   then
>       a.setScore( a.score + 2 );
> end
>
> Thanks for pointing me in the right direction.
>
>
> Greg Barton wrote:
>
>> 1) Where is the variable "score" initialized? If it's not a global the
>> rule wouldn't compile.
>>
>> 2) Is your intent to create a new Applicant instance, or modify the one
>> matched in the rule?  (Or maybe you want to gather the score from the
>> matched instance and put it (+2) into a new instance?
>>
>> --- On Sun, 6/7/09, Chris Strachan <chris.strac at googlemail.com> wrote:
>>
>>
>>
>>> From: Chris Strachan <chris.strac at googlemail.com>
>>> Subject: [rules-users] Weighted rules / scoring
>>> To: rules-users at lists.jboss.org
>>> Date: Sunday, June 7, 2009, 1:11 PM
>>> Hi,
>>>
>>>
>>>
>>> I want to be able to use drools / guvnor brms to store
>>> weighted rules
>>>
>>> (scoring), however I can't seem to find a way to do
>>> this.
>>>
>>>
>>>
>>> I attempted the following,
>>>
>>>
>>>
>>> rule "Myscoreincreaserule"
>>>
>>>        dialect "mvel"
>>>
>>>        when
>>>
>>>                Applicant( name ==
>>> "chris" )
>>>
>>>        then
>>>
>>>                Applicant fact0 = new Applicant();
>>>
>>>                fact0.setScore( score + 2 );
>>>
>>>                insert(fact0 );
>>>
>>> end
>>>
>>>
>>>
>>> drools didn't seem to like the way I did this.
>>>  Perhaps this isn't
>>>
>>> permitted, in effect I am trying to do - score = score +
>>> 2.
>>>
>>>
>>>
>>> Upon validation I get the following error.
>>>
>>>
>>>
>>>        [Myscoreincreaserule] Unable to build
>>> expression for 'consequence': Failed
>>>
>>> to compile: 1 compilation error(s): - (1,3) unqualified
>>> type in strict mode
>>>
>>> for: age ' Applicant fact0 = new Applicant();
>>> fact0.setScore( score + 2 );
>>>
>>> insert(fact0 ); '
>>>
>>>
>>>
>>> Any ideas on how I should be approaching this?
>>>
>>>
>>>
>>> Thanks,
>>>
>>>
>>> -----Inline Attachment Follows-----
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>>
>>
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090608/c6980785/attachment.html 


More information about the rules-users mailing list