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] 
Sent: Sunday, 20 November 2005 3:22 PM
To: [email protected]
Subject: Re: [drools-user] Is order of "rule" elements in "rule-set" the
load-order?

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