Using Wolfgang's inline eval epression, I get the following error: "Cannot
use this in a static context" when compiling the rule. I changed
"this" by "$c" and it works. I don't know why we are in a static
context.
The rule that worked for me is:
Rule "Rule1"
when
$c:Cheese(type == "chedar", eval($c.existsInShop ("shopName"))
then
System.out.println("Rule1 is fired");
end
I attached a working test case. Change $c to "*this" *in rule's condition
and you will see the error I mentioned.
Best,
2010/1/4 Wolfgang Laun <wolfgang.laun(a)gmail.com>
What you need is called "inline eval expression" (see the
Drools Expert
manual),
or an eval conditional element. The first one might be written as:
$c:Cheese(type == "chedar", eval( this.existsInShop("shopName") ) )
-W
On Mon, Jan 4, 2010 at 12:49 PM, orchid <maya.pollack(a)gmail.com> wrote:
>
> Hi All,
>
> I'm trying to call a class method from the LHS of a rule in the following
> way:
>
> public class Cheese{
> private string type;
> //setters and getters
> public boolean existsInShop(String shop){
> ...
> return true;
> }
> }
>
> I would like to call the method "existsInShop" from a rule:
>
> Rule "Rule1"
> when
> $c:Cheese(type == "chedar", existsInShop "shopName")
> then
> System.out.println("Rule1 is fired");
> end
>
> I get the compilation error: "no viable alternative at input
"shopName" in
> rule "Rule1" in pattern document". How can I call the method from the
> rule?
>
> Thanks in advance.
>
>
>
> --
> View this message in context:
>
http://n3.nabble.com/Call-class-method-from-LHS-of-a-rule-tp108383p108383...
> Sent from the Drools - User mailing list archive at
Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Esteban Aliverti