[rules-users] RE: Why not retracting?

Anstis, Michael (M.) manstis1 at ford.com
Fri Jan 26 11:56:48 EST 2007


Thanks Jeff - I guess Rules Engines were common New Years resolution
(I'm about 2 weeks in too) ;-)
 
I understood that the LHS side was operated upon when Facts were
asserted which, I think, creates the RHS Activation in the Agenda.
However I also thought that if the RHS modified Facts in the Working
Memory (by retracting, asserting or modifying them) the "Two Phase
Execution" (Agenda, Section 1.6.5) reassessed which rules needed
"firing" (activation?) and hence some of the "Cost - calculate cost for
'Stamping process' on a process" rules (in my example below) would be
disposed of. Is the activation not being dropped (perhaps because the
"machine == ( m )" condition is still met all be it that the Price to
which it relates as been disposed of?). I thought we were encouraged to
write rules that didn't need to be ran in any particular order whereas I
now find myself having to run some before others?
 
I'm not ranting at you Jeff, I'm just confused.
 
Cheers,
 
Mike


________________________________

	From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Grimshaw,
Jeffrey
	Sent: 26 January 2007 16:34
	To: Rules Users List
	Subject: RE: [rules-users] RE: Why not retracting?
	
	
	Hi Michael.  I've only been using JBoss Rules for about 2 weeks,
so keep that in mind when reading my reply.  
	 
	The way I understand it works is that facts are evaluated
against the LHS of all the rules in the ruleset as they are asserted.
That is, when a fact is added to the WorkingMemory, the engine
determines which rules apply to that fact.  You may expect that
evaluation to take place when the rules are "run".  This may have
something to do with the behavior you are seeing.
	 
	For more info on what I'm talking about, see section 1.6.4.2 of
the user docs.  
	
http://labs.jboss.com/file-access/default/members/jbossrules/freezone/do
cs/3.0.5/html/index.html
	 
	Cheers,

	--Jeff 

	 

________________________________

	From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Anstis,
Michael (M.)
	Sent: Friday, January 26, 2007 8:08 AM
	To: Rules Users List
	Subject: [rules-users] RE: Why not retracting?
	
	

	By way of an update; if the retraction is made within a
different Agenda Group the rules work as expected. 

	However the problem of the retraction having no obvious affect
when operated within the same Agenda Group remains. 

	Is this a bug? 

		_____________________________________________ 
		From:   Anstis, Michael (M.)  
		Sent:   26 January 2007 11:32 
		To:     'Rules Users List' 
		Subject:        Why not retracting? 

		Hello, 

		I have the following rules; one removes "Prices" that do
not have the required "Economic Level" from working memory, the other
calculates a "Costs":-

			rule "Cost - remove prices that do not have the
required 'Economic Level'" 
			agenda-group "stamping-costs" 
			//salience 1 
			when 
			        p : Price ( economicLevel != (
Utilities.makeDate(1, 1, 2007) ) ) 
			then 
			        System.out.println("Retracting
"+p.toString()); 
			        retract(p); 
			end 

			rule "Cost - calculate cost for 'Stamping
process' on a process" 
			agenda-group "stamping-costs" 
			//salience 2 
			when 
			        r : ResourceEntry ( m : machine ) 
			        //p : Price ( economicLevel == (
Utilities.makeDate(1, 1, 2007) ), machine == ( m ) ) 
			        p : Price ( machine == ( m ) ) 
			then 
			        Cost cost = new Cost(r, p); 
			        cost.setCost((float) (r.getUsage() *
p.getRate())); 
			        assert(cost); 
			end 

		The problem is that the "Cost" rule still works upon ALL
"Prices" (even those with an incorrect "Economic Level"). 

		If I change the line in the "Cost" rule to also check
the "Economic Level" the rules work as expected (i.e. "Costs" are only
calculated using "Prices" with an "Economic Level" of 01/01/2007).

		I've tried using "salience" levels too (as commented in
the above Rules) but this doesn't have any effect either. 

		What am I doing wrong? 

		Cheers, 

		Mike 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070126/52053716/attachment.html 


More information about the rules-users mailing list