I think I understand salience, but I still don't understand xor-groups.
>From what I thought I understood, what I described doesn't match your
description, particularly related to your statement "then the other rule
will not as it is in the same XOR group".  In my test case, it executed
the consequence for both rules in the same xor-group.  How does that
jive with your statement?

Perhaps my misunderstanding about this has to do with what "fire" means.
I thought this referred to the checking of the parameters and conditions
on a rule.  Your statements seem to imply that's not the case.

> -----Original Message-----
> From: Michael Neale [mailto:[EMAIL PROTECTED] 
> 
> Salience "2" will fire first, as salience is priority 
> (numerically). XOR means that once rule with salience 2 
> fires, then the other rule will not as it is in the same XOR group.
> 
> Salience and XOR have no direct interaction, you only need 
> salience if order of firing is important (order of firing 
> *consequences* of course - it is hard to predict when 
> conditions will be evaluated). 
> 
> Make sense? (ie what you described is to be expected). 
> 
> -----Original Message-----
> From: Karr, David [mailto:[EMAIL PROTECTED] 
> 
> I just tried to set this up in a prototype, and I must be 
> misunderstanding something about xor-group, because it didn't 
> work the way I expected.
> 
> I defined two rules, both of which would match the input 
> based on their parameters and conditions.  I set the first 
> one to salience "1" and the second to "2".  I set them both 
> to have the same xor-group value.  In my consequence, I just 
> added a print statement, so I would know which one it matched.
> 
> What I saw is that it matched both rules, and it matched the 
> one with salience "2" first.
> 
> What do I have to do to have it match only a single rule (or 
> none) in an xor-group?
> 
> > -----Original Message-----
> > From: Michael Neale [mailto:[EMAIL PROTECTED]
> > Sent: Saturday, November 19, 2005 5:59 PM
> > To: [email protected]
> > Subject: [spam]::RE: [drools-user] RE: [spam]::RE:
> > [drools-user] RE: [spam]::Re: [drools-user] Is order of "rule" 
> > elements in "rule-set" the load-order?
> > 
> > 
> > No if salience (priority) is not set, then it is not necessarily as
> > simple as top to bottom in the XML (as I am sure you read 
> in the doco 
> > on it).
> > 
> > If you care about the order in the xor group, you need to 
> set salience
> > accordingly.
> > 
> > If you have very special needs for ordering, you can write 
> and plug in
> > your own conflict resolver of course.
> > 
> > -----Original Message-----
> > From: Karr, David [mailto:[EMAIL PROTECTED]
> > Sent: Sunday, 20 November 2005 11:53 AM
> > To: [email protected]
> > Subject: [drools-user] RE: [spam]::RE: [drools-user] RE:
> > [spam]::Re: [drools-user] Is order of "rule" elements in "rule-set" 
> > the load-order?
> > 
> > So are you saying that rules definitely fire (checking
> > conditions) in the order they are in in the XML, ignoring for the
> > moment any conflict resolution settings (like salience)?
> > If that's the case, then that might give me what I need, if I order 
> > the rules in order of priority in each xor-group.
> > 
> > > -----Original Message-----
> > > From: Michael Neale [mailto:[EMAIL PROTECTED]
> > > 
> > > No the ordering works over the whole ruleset with nothing 
> to do with
> > > xor grouping.
> > > 
> > > The rules inside an xor group would follow the ordering of
> > rule firing
> > > of the whole rule set, the xor group having no effect on
> > this (the xor
> > > group simply only allows one of the rules to fire).
> > > 
> > > -----Original Message-----
> > > From: Karr, David [mailto:[EMAIL PROTECTED]
> > > 
> > > > -----Original Message-----
> > > > From: Geoffrey Wiseman [mailto:[EMAIL PROTECTED]
> > > > 
> > > > On 11/19/05, Karr, David <[EMAIL PROTECTED]> wrote:
> > > > > I'm trying to figure out how I can make only one rule
> > in a set of
> > > > > rules fire, and have it check the rules in a certain order.
> > > > >
> > > > > I see that using the "xor-group" attribute deals with the
> > > > "only one"
> > > > > part, but I'm not sure how to specify the order it checks
> > > > the rules in
> > > > > an xor-group. Is that what "salience" is for? In a particular
> > > > > xor-group, will the rule with the highest salience be
> > > checked first?
> > > > 
> > > > Salience is a factor, yes; that's the easiest way to control the
> > > > firing of rules. There's a page on the Drools site 
> about Conflict 
> > > > Resolution that should help clarify somewhat.
> > > 
> > > Yes, I saw that section.  I wasn't certain from that
> > exactly what the
> > > semantics would be in the context of xor-groups.
> > > Would the saliency ordering in a particular xor-group be 
> completely
> > > independent of the saliency ordering in a different 
> xor-group, even 
> > > for identical saliency values across xor-groups?
> > > 
> > > I want to use salience within xor-groups because I want 
> each rule in
> > > an xor-group to have a condition which checks to see whether a 
> > > particular code value "isPresent()" in a list, but each 
> particular 
> > > code value has a "priority", so I'll set the salience for
> > that rule to
> > > the priority for the code value.
> > 
> > 
> 
> 

Reply via email to