Re: [rules-users] named consequences for an or...

2014-01-21 Thread pmander
laune wrote
 On 20/01/2014, pmander lt;

 paul.s.mander@

 gt; wrote:
 I could do this:

 when
  $t : Transaction((org == us) || (expensive() == 111))
 then
 insert(new Record($t, 1));
 end

 
 Yes, that takes care of the unwanted duplication.
 
 If org is indeed equal to us is it guaranteed that expensive() doesn't
 get
 executed?
 
 You can test this quite easily: add a print to expensive().
 
 -W

I quick related question regarding performance. I now have

rule 3
when
$t : Transaction(
  (
(
  fieldFor(SALES_ORG)==SO10167  
  fieldFor(CHANNEL)==A  
  fieldFor(ONLINE_IND)==N 
  colMatch(rulesMap,3,2000,baseData,PRODUCT,0)
) || 
(
  fieldFor(CHANNEL)==A  
  fieldFor(ONLINE_IND)==N  
  fieldFor(ACCOUNT)
in(A11329,A11330,A11331,A11332,A11333,A11334,A11335,A11336)

  colMatch(rulesMap,3,2000,baseData,PRODUCT,0) 
)
  )
)
then
do something
end

instead of

rule 3
when
$t : (
  Transaction(
fieldFor(CHANNEL)==A, 
fieldFor(ONLINE_IND)==N, 
fieldFor(SALES_ORG)==SO10167, 
colMatch(rulesMap,3,1370,baseData,PRODUCT,0))
  or
  Transaction(
fieldFor(CHANNEL)==A, 
fieldFor(ONLINE_IND)==N, 
fieldFor(ACCOUNT)
in(A11329,A11330,A11331,A11332,A11333,A11334,A11335,A11336),
colMatch(rulesMap,3,2000,baseData,PRODUCT,0)
)
then
do something
end

I would have thought that the first was slight better performance wise as
the second produces twice as many matches which I need to filter out but
putting 20,000 Transactions through this (2400 rules) takes 51 seconds for
option 2 and 200 seconds for option 1.

If I just have the first half of the rule:

$t : (
  Transaction(
fieldFor(CHANNEL)==A, 
fieldFor(ONLINE_IND)==N, 
fieldFor(SALES_ORG)==SO10167, 
colMatch(rulesMap,3,1370,baseData,PRODUCT,0))
then
do something
end

then the performance is 10 seconds. The extra time being taken up with all
those other or mis-matches. 



--
View this message in context: 
http://drools.46999.n3.nabble.com/named-consequences-for-an-or-tp4027775p4027792.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] named consequences for an or...

2014-01-20 Thread pmander
I could do this:

when 
$t : Transaction((org == us) || (expensive() == 111))
then 
insert(new Record($t, 1)); 
end 

If org is indeed equal to us is it guaranteed that expensive() doesn't get
executed? 



--
View this message in context: 
http://drools.46999.n3.nabble.com/named-consequences-for-an-or-tp4027775p402.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Re: [rules-users] named consequences for an or...

2014-01-20 Thread Wolfgang Laun
On 20/01/2014, pmander paul.s.man...@gmail.com wrote:
 I could do this:

 when
   $t : Transaction((org == us) || (expensive() == 111))
 then
 insert(new Record($t, 1));
 end


Yes, that takes care of the unwanted duplication.

 If org is indeed equal to us is it guaranteed that expensive() doesn't
 get
 executed?

You can test this quite easily: add a print to expensive().

-W




 --
 View this message in context:
 http://drools.46999.n3.nabble.com/named-consequences-for-an-or-tp4027775p402.html
 Sent from the Drools: User forum mailing list archive at Nabble.com.
 ___
 rules-users mailing list
 rules-users@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/rules-users

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users