I have been out of the loop for the past few weeks, but I believe a bug was found in the xor group feature, which has been fixed and should be out with "2.5". Perhaps this is showing the bug... (can't remember the jira off the top of my head).
-----Original Message----- From: Karr, David [mailto:[EMAIL PROTECTED] Sent: Monday, 21 November 2005 3:07 AM To: user@drools.codehaus.org Subject: [drools-user] RE: [spam]::RE: [drools-user] Is order of "rule" elements in "rule-set" the load-order? 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: user@drools.codehaus.org > > 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: user@drools.codehaus.org > > 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. > > > > > >