Edson Tirelli schrieb: > > Andre, > > The misunderstanding here is that the LHS, except for code blocks > like "eval", "return value expressions" and "accumulate code blocks", > are all "Drools Language". When you use the "dialect" attribute in a > rule or package you are telling the compiler what dialect (MVEL or Java) > you will use inside these code blocks mentioned previously + the > language for the RHS.
Good that you clear that up, thanks. > In other words: > > Map( this["type"] == "Point", $x : this["x"], size == 5 ) I thought this is only possible when one declares the dialect MVEL. Now I understand that what you just wrote also results in a valid rule, even when MVEL is not set. In your code above you: 1. check if this.get("type").equals("Point") 2. you set $x to the value of this.get("x") 3. check if this.size == 5 where I interpret 3. as calling the size() method of java.util.Map. Was that right so far? > Everything you see in the previous expression is "Drools language", > does not matter if you set the dialect to java or mvel in the rule. It > happens that Drools uses the same map syntax as MVEL (and a lot of other > scripting languages). Also, we know, that drools implementation will > resolve the first 2 above expressions in MVEL behind the scenes, and the > 3rd will be resolved nativelly, but that is not something users should > have to worry about, since they are writing it in "Drools Language". Yes, I understand. Only with the middle part I still have some problems. As you used it, $x : this["x"] it works for me. A minor issue I have with this, but we can ignore that for now, is, that this will be interpreted. The real problem for me is: it only works when between the brackets there is a literal string. I however can't do that, because my lib should support the general case, where between the brackets there could be any type of object (which I would pass in via a global var). > If they write an eval, THEN they need to differentiate between MVEL > and Java according to the chosen dialect. > > rule xyz > dialect "mvel" > when > eval( ...here you write MVEL code... ) > then > // here you write MVEL code > end > > rule xyz2 > dialect "java" > when > eval( ...here you write JAVA code... ) > then > // here you write JAVA code > end Very good, thanks again for clearing this up. André -- _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users