Hi,

 

I finally got around to get my hands dirty. And I run into some problem. The results I’m getting are not the ones I expected to get J.

 

I have a rule:

 

rule "FC.93"

      when

            r1: Record( psc == "101", fundType == "1", $pa1: pa == "7111010", sa matches "F1202[0-9]" )

            r2: Record( psc == "101", fundType == "1", pa == $pa1, sa matches "F1202[0-9]" )

      then

            System.out.println( "rule FC.93 has been activated" );

            System.out.println( "r1: " + r1 );

            System.out.println( "r2: " + r2 );

            System.out.println();

end

 

 

and the following set of facts:

 

1:    new Record("101", "0942", "1", "7111010", "F12020")

2:    new Record("101", "0942", "1", "7111010", "F12022")

3:    new Record("101", "0942", "1", "7111010", "F12024")

4:    new Record("101", "0942", "1", "7111020", "F12020")

5:    new Record("101", "0942", "1", "7111020", "F12022")

 

 

With the rule above I expected to get only tuples

 

1,2 1,3 2,3

 

Or the printout:

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12020

r2: pa = 7111010, sa = F12022

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12020

r2: pa = 7111010, sa = F12024

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12022

r2: pa = 7111010, sa = F12024

 

 

 

Ie, get only 3 activations of the rule.

 

For some reason I’m getting all possible combinations (or is it permutations?...):

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12024

r2: pa = 7111010, sa = F12024

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12022

r2: pa = 7111010, sa = F12024

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12024

r2: pa = 7111010, sa = F12022

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12020

r2: pa = 7111010, sa = F12024

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12024

r2: pa = 7111010, sa = F12020

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12022

r2: pa = 7111010, sa = F12022

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12020

r2: pa = 7111010, sa = F12022

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12022

r2: pa = 7111010, sa = F12020

 

rule FC.93 has been activated

r1: pa = 7111010, sa = F12020

r2: pa = 7111010, sa = F12020

 

 

 

I recall Edson mentioned that DROOLS would not select the same two facts in the tuple, but that what seems to be happening…. I think I must be doing smth wrong. How the rule should be modified to achieve the result I expect?

 

Also, for some reason regex “F1202\\d” doesn’t return any matches as well, while, supposedly the same pattern “F1202[0-9]” does…

 

Thanks. Any hints are very appreciated!

 

 

Vlad

 

PS: I’m using DROOLS 3.1M on JDK 1.5.0_11 under the 3.1M Eclipse plugin.