[rules-users] Drools Dyanmic Class creation Problem

Wolfgang Laun wolfgang.laun at gmail.com
Sat Mar 26 07:21:54 EDT 2011


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 at 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 at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110326/7da5f8b9/attachment.html 


More information about the rules-users mailing list