1) The only difference appears to be the use of presumably a global. Do define this in your DRL and set its value before invoking fireAllRules?

2) The error messages states "txn cannot be resolved to a type" however "txn" does not appear in your pasted rule. Is something missing?

2011/3/26 Wolfgang Laun <wolfgang.laun@gmail.com>
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@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@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users