[rules-users] RE: [rules-dev] Multi threading usage best practice

Anstis, Michael (M.) manstis1 at ford.com
Mon Jul 14 09:36:05 EDT 2008


Cross posted for information.
 
Ths subject is more for the user list than the dev' one.
 
Cheers,


________________________________

	From: rules-dev-bounces at lists.jboss.org
[mailto:rules-dev-bounces at lists.jboss.org] On Behalf Of 9Lives 9Lives
	Sent: 14 July 2008 14:33
	To: Rules Dev List
	Subject: RE: [rules-dev] Multi threading usage best practice
	
	
	TnX Mike 4 the quick response.
	 
	I'm afraid that u r right regarding the through-put ;-(
	Using the "synchronized" method will probably solve my problem
but will damage the solution.
	 
	If u have any other thoughts on the matter i would love 2 hear
them.
	 
	Regards
	Dotan
	
	
	
	
	
________________________________


	Subject: RE: [rules-dev] Multi threading usage best practice
	Date: Mon, 14 Jul 2008 14:24:02 +0100
	From: manstis1 at ford.com
	To: rules-dev at lists.jboss.org
	
	
	
	Hi,
	 
	Would synchronising on working memory effectively serialise the
effects of fireAllRules()?

		...
		synchronised(wm) {
		    wm.fireAllRules();
		}
		...

	I don't know whether this would kill your through-put either.
	 
	Cheers,
	 
	Mike


________________________________

		From: rules-dev-bounces at lists.jboss.org
[mailto:rules-dev-bounces at lists.jboss.org] On Behalf Of 9Lives 9Lives
		Sent: 14 July 2008 13:41
		To: rules-dev at lists.jboss.org
		Subject: [rules-dev] Multi threading usage best practice
		
		
		Hello
		 
		I'm using Drools 4.0.7 inside a mail relay application 2
determine the operations that need 2 b executed on each passing message.
		To do this i'm using the following scenario:
		

		1.	
			I have a ruleBase.newStatefulSession().
		2.	
			I have a fixed set of facts.
		3.	
			I have a fixed set of rules.
		4.	
			Each mailer (a thread that is handling a single
message) is inserting the message to the working memory, calls the
"fireAllRules" method and retracts the message.
		5.	
			Rules that r executed change custom attributes
in the message.

		Problem:
		I noticed that sometimes a rule can b executed on the
same message more then once.
		 
		Assumption:
		My guess is that because i'm working is a multi
threading environment but using a stateful session, what happens is:
		

		1.	Thread A is inserting Message A. 
		2.	Thread B is inserting Message B 
		3.	Thread A is calling fireAllRules 
		4.	Rule X is executed on messages A + B. 
		5.	Thread B is calling fireAllRules 
		6.	Rule X is executed on messages A + B 
		7.	Thread A is retracting Message A 
		8.	Thread B is retracting message B

		Question:
		My goal is 2 make sure a rule is executed only once on a
single message.
		Any ideas on how 2 avoid the situation described above?
		 
		TnX
		Dotan
		 
		 
		
		
________________________________

		Invite your mail contacts to join your friends list with
Windows Live Spaces. It's easy! Try it!
<http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.
aspx&mkt=en-us>  


________________________________

	Discover the new Windows Vista Learn more!
<http://search.msn.com/results.aspx?q=windows+vista&mkt=en-US&form=QBRE>


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


More information about the rules-users mailing list