If there is a package header on a DRL file it defines a package the same way
it does for a Java source file. Also, visibility of classes works the same
way: if a class is in the same package as the DRL, you don't have to import
it; otherwise you have to.
-W
2011/3/26 saurabh maheshwari <maheshwari.saurabh03(a)gmail.com>
Hi sir ,
I am facing one issue regarding dyamic class cretion and inserting it's
object into drools memory.
i have created a dyanmic class test and loads it like that
MyClassLoader clr =new
MyClassLoader(Obj.getClass().getClassLoader());
Obj.clazz= clr.loadClass("test");
//Drools Configuration
KnowledgeBuilderConfiguration kbc =
KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null,clazz.getClassLoader());
KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder(kbc);
String path = System.getProperty("user.dir");
StringBuilder drlFile = new StringBuilder(path);
drlFile.append(System.getProperty("file.separator")).append("myRule.drl");
kbuilder.add(ResourceFactory.newFileResource(drlFile.toString()),
ResourceType.DRL);
if (kbuilder.hasErrors())
{
System.out.println(kbuilder.getErrors());
return;
}
KnowledgeBaseConfiguration kbaseConfig
=KnowledgeBaseFactory.newKnowledgeBaseConfiguration(null,
clazz.getClassLoader());
kbase = KnowledgeBaseFactory.newKnowledgeBase(kbaseConfig);
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
ksession = kbase.newStatefulKnowledgeSession();
Now my drl file is like that
package dyanmicclass;
dialect "java"
rule mytest1
when
$tx : test($pp : name )
then
globalArrayList.add($tx);
System.out.println($tx );
end
this is giving me a error
KnowledgeBuilder created.
Unable to generate rule invoker. : [Rule name='mytest1']
dyanmicclass/Rule_mytest1_0DefaultConsequenceInvoker.java (22:886)
: test cannot be resolved to a type
dyanmicclass/Rule_mytest1_0DefaultConsequenceInvoker.java (22:898)
: test cannot be resolved to a type
Rule Compilation error : [Rule name='mytest1']
dyanmicclass/Rule_mytest1_0.java (6:214) : txn cannot be resolved
to a type
but while i am doing like that
dialect "java"
rule mytest1
when
$tx : test($pp : name )
then
System.out.println($pp );
end
it gives no error .
I am not able to find the cause of the problem .
am i wrong in any configuaration.
Thanks
Saurabh
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users