Hi Mike,
Thanks very much, after a few minutes of staring I think I have understood your very well put answer!
If I understand you right, what is happening is:
Test( $y : y
)
This means, WHEN there is an instance of Test, assign the value of its "y" property to $y
AND
WHEN there is an instance of Test where it's "x" property is equal to $y + 1
THEN fire.
I think I understand that. I am going to need to do this with some pretty complicated formulae, containing up to 8 different variables. I have a fixed data set and need to find certain patterns in them based on the formulae. I have most of the program figured out, my only trouble is expressing my formulae in the correct syntax. I will try to extend this principle you have explained to me and hope it can cope with the extra complication... unless there would be a better way to achieve this?
I am really sorry but I am totally new to drools - but am committed to using it on a project so I guess I'm going to get to know it pretty well :-)
I read briefly that one can define a DSL, I might look at this eventually to build an easier mechanism for expressing my formulae - if that can be achieved using a DSL.
Can the whole rule be defined in Groovy/Java - if so I might be easier doing that. I have so much work to do!
many thanks
Richard
Hi Richard,The "when" section matches fact (object) patterns, so your requirement could be written as:-when there is a Test Fact 'A' and another Test Fact 'B' where "the 'x' property of 'A'" equals "the 'y' property of fact 'B' plus 1" then.....This would become:-rule "Rule 1"whenTest( $y : y )Test( x == ($y + 1) )thenSystem.out.println("Rule 1 matches");endBy default both patterns can match the same object, so test data:-A : x = 1, y = 1B : x = 2, y = 1Will cause the rule to activate twice:-A and BB and BWith kind regards,Mike
From: rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org] On Behalf Of Richard Bremner
Sent: 02 May 2008 08:53
To: rules-users@lists.jboss.org
Subject: [rules-users] newbie question on "when" condition syntaxHi,
say I have a class with two fields, x and y:
public class Test {
int x = 1;
int y = 2;
getters/setters...
}
I would like a rule which fires when y = x + 1
my initial thought would be something like:
rule "Rule 1"
when
test : Test (y == x + 1)
then
System.out.println("Rule 1 matches.");
end
but this is invalid syntax and I can not find any examples of such a rule. I'm doing my best but reading the manual etc. I'm struggling with the syntax here and can't figure it out.
any help really appreciated!
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users