[rules-users] programmatic manipulation of 4.0 salience?

Mark Proctor mproctor at codehaus.org
Fri Aug 17 18:35:42 EDT 2007


If you look at the impl for SalienceInteger you'll see the parameters 
are ignored, so yes you can do that and it will work for SalienceInteger 
just not for the dynamic saliences.Dynamic salience needs the params, so 
I can't do a getValue() and I don't want api bloat.

We haven't documented the rule api that well, as it's not normally 
something users deal with, however please do submit a patch to help us 
improve this.

Mark
Scott Reed wrote:
> Mark,
>   I think you misunderstood the issue. I know how to set the salience. 
> The problem is that the way to *get* the salience of a SalienceInteger 
> is to pass in a Tuple and WorkingMemory and there is no explanation of 
> where the Tuple and WorkingMemory are supposed to come from. The only 
> way I could figure out how to get the salience as I did in 3.0 is to 
> parse the toString() result value which bites but works for now.
>   As I asked before, will it work to call 
> IntegerSalience.getSalience(null,null) to get a constant salience? If 
> so, it would be helpful to say that in the javadocs. Also helpful, 
> perhaps, would be a IntegerSalience.getValue() method with no args 
> that would wrap Salience.getSalience( null, null ).
>   I find it a little troubling that the API docs are so unreliable 
> that users are expected to read the source code to understand how to 
> use it. It would make some sense if I wanted to use the dynamic 
> salience programmatically but since I am only concerned with the 
> simple, constant case, like most users I expect, it seems like a lot 
> of effort and time for something that should be easy and quick.
>   I can see the benefits of dynamic salience, but I would appreciate 
> the feature more if it hadn't made the simple, static case more complex.
>   Thanks,
>     Scott
>
> Mark Proctor's message received 8/17/2007 5:13 PM:
>> Integer.parseInt( salienceText ) is only needed if your source is a 
>> string, otherwise  new SalienceInteger( 10 ) is fine. Take a look at 
>> the SalienceInteger to understand how it works, tuple, workingMemory 
>> are ignored for non dynamic environments:
>> http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/SalienceInteger.java 
>>
>>
>> Mark
>> Scott Reed wrote:
>>> For lack of any better suggestion I am getting the int salience using
>>> Integer.parse(rule.getPriority().toString()).
>>> Of course this is a huge hack since it depends on the undocumented 
>>> toString() function returning the string value of the integer salience.
>>>
>>> I am still very interested to hear how the designers thought we 
>>> should use the API to get the salience value.
>>>
>>> Scott Reed's message received 8/17/2007 8:52 AM:
>>>> I guess the question here is, where do you get that "salinceText" 
>>>> from?
>>>> I am using DRL to define the rules.
>>>>
>>>> Manjax23's message received 8/17/2007 1:44 AM:
>>>>> Salience salience = new SalienceInteger( Integer.parseInt( 
>>>>> salienceText ) );
>>>>> rule.setSalience( salience );
>>>>>
>>>>> Cheers,
>>>>> manjax23
>>>>>
>>>>>
>>>>> Scott Reed-4 wrote:
>>>>>> My 3.1 app has a mechanism that allowed the user to change the 
>>>>>> salience of
>>>>>> some rules before running them, before loading up WorkingMemory. 
>>>>>> This was quite simple,
>>>>>> rule.getSalience() returned a rule's int salience value and 
>>>>>> rule.setSalience(int) set it. Now in 4.0 I see
>>>>>> salience is no longer just an int, but a Salience object with a 
>>>>>> simple constructor and complicated
>>>>>> getValue(Tuple,WorkingMemory) method to access the int value.
>>>>>>
>>>>>> It appears to be still easy to set the salience of a rule:
>>>>>> rule.setSalience( new SalienceInteger(int)) but getting the int 
>>>>>> salience from a Salience object
>>>>>> seems to have been removed from joe-blow coder's reach.
>>>>>>
>>>>>> I would be very grateful if someone would provide me with an 
>>>>>> example that
>>>>>> gets the int salience associated with a rule. I have no idea 
>>>>>> where or why I need to get the
>>>>>> Tuple and WorkingMemory. Can I just pass nulls in for those two 
>>>>>> arguments?
>>>>>>
>>>>>> Thanks,
>>>>>>    Scott
>>>>>> _______________________________________________
>>>>>> 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
>>>
>>
>> _______________________________________________
>> 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
>




More information about the rules-users mailing list