Okay Wolfgang ... you asked for it. Here's a version which takes it pretty much to the
minimum.
The error I see is "Unable to resolve method using strict-mode:
mypackage.CloneMessage.cloneMessage(mypackage.Message)"
However, the error is only seen when I use mvel dialect. The working Java dialect rule is
also included below.
Note that when I re-wrote the example function to take a common type such as String as
argument, then the mvel version worked. It's when the argument is a declared type that
it fails.
Thanks for taking a look,
Steve
file - MessageFact.drl
package mypackage
declare Message
Text: String
end
file - CloneMessage.drl
package mypackage
function Message cloneMessage(Message originalMessage) {
Message newMessage = new Message();
newMessage.setText(originalMessage.getText());
return newMessage;
}
file - SayHelloRuleJava.drl
package mypackage
rule "Say hello"
dialect "java"
lock-on-active true
when
# Always
then
Message originalMessage = new Message();
originalMessage.setText("Hello, World!");
Message clonedMessage = cloneMessage(originalMessage);
insert(clonedMessage);
end
file - SayHelloRuleMvel.drl
package mypackage
rule "Say hello"
dialect "mvel"
lock-on-active true
when
# Always
then
Message originalMessage = new Message();
originalMessage.Text = "Hello, World!";
Message clonedMessage = cloneMessage(originalMessage);
insert(clonedMessage);
end
On Jun 19, 2012, at 12:27 PM, Wolfgang Laun <wolfgang.laun(a)gmail.com> wrote:
Can you please provide an example where and how you import and use a
DRL function so that it works/doesn't work with MVEL/Java?
-W
On 19/06/2012, Stephen Masters <stephen.masters(a)me.com> wrote:
Hi folks,
Is it possible to refer to DRL functions from a DRL when the dialect is
mvel?
I have been working on unit tests for a rule that were consistently failing
due to not being able to find the function that should be imported. Having
tried various formats (the documentation is rather unhelpful here) for the
import, I thought I'd see what happened if I just switched to the Java
dialect. Suddenly it worked without even needing an import statement.
Unfortunately, this forces me to switch from the neat ...
newFact.Property = otherFact.Property
... to the rather ugly Java-style
newFact.setProperty(otherFact.getProperty())
So I would quite like to know if there is an undocumented (or
well-hidden-documented) mechanism for using functions when in mvel dialect.
Or am I stuck with switching to Java?
Thanks in advance for any pointers anybody can provide,
Steve
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users