You aren't showing all of your code, or not the code you're actually using.
It's remarkable that you can compile your DRL (without the function)
when the dynamically created class "drools.dynamic.MyDynamicClass"
isn't there yet.
Is the function logMessage declared in the DRL where the error is thrown?
You can't import a DRL function into another DRL file.
-W
On 16/05/2012, Ayush <ayush.vatsyayan(a)alcatel-lucent.com> wrote:
Hello,
I'm trying to build a rule which accepts the dynamic facts. The dynamic
facts are created using the javassist API. The rule works fine when I'm
adding a single rule but as soon as I declare any function in the drl file
the rule doesn't compile.
*Following is the code sample for creating the dynamic facts.*
// creating class object
final ClassPool pool = ClassPool.getDefault ();
CtClass evalClass = pool.makeClass ("drools.dynamic.MyDynamicClass");
// creating class field
final CtField nameField = new CtField (CtClass.intType, "Count",
evalClass);
nameField.setModifiers (Modifier.PRIVATE);
evalClass.addField (nameField);
// creating getter for the above created field.
final CtMethod getter = CtNewMethod.getter ("getCount", nameField);
evalClass.addMethod (getter);
// creating setter for the above created field.
final CtMethod setter = CtNewMethod.setter ("setCount", nameField);
evalClass.addMethod (setter);
// finally creating class
final Class tempClass = evalClass.toClass ();
// creating class object
Object obj = tempClass.newInstance()
// inserting it in drools
droolsSession.insert(obj)
*Following is the rule *
rule "DynamicFactRule"
dialect "mvel"
when
$obj : MyDynamicClass()
then
$obj.setCount(8);
System.out.println("Count set is: "+$obj.getCount(8));
end
*This rule works fine but when I'm adding a function in drl file then it
throws error: *
1) Unable to resolve ObjectType 'MyDynamicClass'
2)Error importing : 'defaultpkg.LogMessage.logMessage'
*The function I added is*
function void logMessage() {
System.out.println("This is log message");
}
*Following is the environment I'm using*
- Drools 5.3.0
- JBoss 6.x
- JDK6
I looked at many approaches but I'm confused and out of soln, as none of it
is working. I also tried looking at Drools trait but it's going over my head
I'll highly appreciate if someone can please suggest what should be the
ideal approach to solve it.
--
View this message in context:
http://drools.46999.n3.nabble.com/Drools-function-not-working-with-Javass...
Sent from the Drools: User forum mailing list archive at
Nabble.com.
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users