Hi Richard, Glad I can be of help (this forum as a whole is actually very helpful). Reading your email you understand me correctly (you even picked up on the implicit AND between pattern matches). With a bit of imagination complex problems can be solved with Drools; just like programming you need to adjust your mindset sometimes and try a different tact. Personally, if your rules are not user-facing, I wouldn't worry about DSL - even if they do don't worry for the time being! Make sure to read the excellent manual, many people have put a lot of work into this and it is invaluable. Read about "dialect" to answer your question about rule language, to save me copy and pasting. Good luck, Mike
_____ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Richard Bremner Sent: 02 May 2008 11:38 To: Rules Users List Subject: Re: [rules-users] newbie question on "when" condition syntax 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 2008/5/2 Anstis, Michael (M.) <[EMAIL PROTECTED]>: 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" when Test( $y : y ) Test( x == ($y + 1) ) then System.out.println("Rule 1 matches"); end By default both patterns can match the same object, so test data:- A : x = 1, y = 1 B : x = 2, y = 1 Will cause the rule to activate twice:- A and B B and B With kind regards, Mike _____ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Richard Bremner Sent: 02 May 2008 08:53 To: [email protected] Subject: [rules-users] newbie question on "when" condition syntax Hi, 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 [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
