[rules-users] Smart Templates

ChrisMu christopher.mullard at credit-suisse.com
Wed Jun 1 04:35:38 EDT 2011


So in essence, there's no way to use a function to insert a string
literal into a rule from a template?

________________________________

From: FrankVhh [via Drools]
[mailto:ml-node+3006773-799208963-404175 at n3.nabble.com] 
Sent: 31 May 2011 17:20
To: Mullard, Christopher
Subject: RE: Smart Templates


But then that would call the service.getType() method when the rule is 
run wouldn't it? 
-> Yes 
  
I'm trying create explicit, simple rules to avoid doing extra work when 
running data through them. 
-> OK, in essence, I like that :-) 
  
How would you use a rule to set the value within another rule? 
-> I am not sure that I follow you here... 
If you want to avoid to execute the getType()-service at rule execution,
then you would need to add an attribute name to your object, and call
getType() before creating the rules. 

Alternatively, you can insert an intermediate value whose value will be
set by another rule and then use this intermediate value in your DC
rules. 

When 
Service(value = "AAA") 
Then 
String name = "Type1"; 
insert(name); 

Something like this... but make sure not to create a loop :-) 

Regards, 
Frank 



	ChrisMu wrote:
	But then that would call the service.getType() method when the
rule is 
	run wouldn't it? 
	  
	I'm trying create explicit, simple rules to avoid doing extra
work when 
	running data through them. 
	  
	How would you use a rule to set the value within another rule? 
	  
	Thanks 
	Chris 
	
	________________________________ 
	
	From: FrankVhh [via Drools] 
	[mailto:[hidden email]] 
	Sent: 31 May 2011 16:48 
	To: Mullard, Christopher 
	Subject: Re: Smart Templates 
	
	
	Hi, 
	
	The way I see it, this is the way your template should look
like. I do 
	not see the need to use eval() at all. 
	
	rule "DC_0" 
	when 
	    $service: Service(name == "@{service}", value == "@{value}")

	    $riskType: RiskType() 
	then 
	    $riskType.setName($service.getType("@{value}")); 
	    $riskType.setAtt(0,"@{value}"); 
	end 
	
	I am assuming that RiskType is already inserted in WM, but you
could 
	just as well create a new object in the then-part of the rule. 
	
	In stead of using the java-function to determine the name, you
might 
	actually just as well create an other rule that sets the name
according 
	to the value, thus putting the entire decision logic in rules. 
	
	Hope this helps. 
	
	Regards, 
	Frank 
	
	
	
	        ChrisMu wrote: 
	        Hi, 
	        
	         I'm trying to get a template (.drt) to generate 2 rules
(.drl) 
	from 2 datasets but by doing a little bit more work than direct 
	substitution. 
	        
	        Data (service,value): 
	        DC, AAA 
	        DC, XYZ 
	        
	        Idea for the template - if value is of type1 then create
Type 
	object with 'Type1' as name. If value is of type2, use 'Type2'
as name: 
	        
	        rule "DC_@{row.rowNumber}" 
	        when 
	            Service(name == "DC")     
	        then 
	            Type.setName(eval(Service.getType(@{value}))) 
	            Type.setAtt(0,@{value}) 
	        end template 
	        
	        eval(Service.getType(@{arg0})) should take 'AAA' or
'XYZ' etc as 
	arg and return a string Type1/Type2 etc. 
	        
	        This would then generate 2 rules that look like: 
	        
	        rule "DC_0" 
	        when 
	            Service(name == "DC", value == "AAA")     
	        then 
	            RiskType.setName("Type1") 
	            RiskType.setAtt(0,"AAA") 
	        
	        rule "DC_1" 
	        when 
	            Service(name == "DC", value == "XYZ")     
	        then 
	            RiskType.setName("Type2") 
	            RiskType.setAtt(0,"XYZ") 
	        
	        ...is this possible at all? I'm trying to avoid the eval
step 
	being done in the actual rule (.drl) . 
	        
	        Thanks 
	        
	        Chris 
	
	
	
	________________________________ 
	
	If you reply to this email, your message will be added to the
discussion 
	below: 
	
http://drools.46999.n3.nabble.com/Smart-Templates-tp3006479p3006589.html
	
	To unsubscribe from Smart Templates, click here 
	
<http://drools.46999.n3.nabble.com/template/NamlServlet.jtp?macro=unsubs
	
cribe_by_code&node=3006479&code=Y2hyaXN0b3BoZXIubXVsbGFyZEBjcmVkaXQtc3Vp

	c3NlLmNvbXwzMDA2NDc5fDE5NzczMDY1MzE=> . 
	
	
========================================================================
======= 
	Please access the attached hyperlink for an important electronic
communications disclaimer: 
	http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html  
	
========================================================================
======= 



________________________________

If you reply to this email, your message will be added to the discussion
below:
http://drools.46999.n3.nabble.com/Smart-Templates-tp3006479p3006773.html

To unsubscribe from Smart Templates, click here
<http://drools.46999.n3.nabble.com/template/NamlServlet.jtp?macro=unsubs
cribe_by_code&node=3006479&code=Y2hyaXN0b3BoZXIubXVsbGFyZEBjcmVkaXQtc3Vp
c3NlLmNvbXwzMDA2NDc5fDE5NzczMDY1MzE=> . 

=============================================================================== 
Please access the attached hyperlink for an important electronic communications disclaimer: 
http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html 
=============================================================================== 



--
View this message in context: http://drools.46999.n3.nabble.com/Smart-Templates-tp3006479p3009838.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110601/bd112344/attachment.html 


More information about the rules-users mailing list