The kagent error is because you probably don&#39;t have the jar with your model in kagent&#39;s classpath and you are using the DRL version of your package. The agent will try to compile your DRL, but if you don&#39;t have your pojos in the classpath, it will fail. You could use the compiled version of your package instead of the DRL. <div>

<br></div><div>If your model are Java Pojos, then you only need to do this in order to insert them to a ksession:</div><div><br></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">AmountPojo ap = new </span><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">AmountPojo();</span></div>

<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">ksession.insert(ap);</span></div>

<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">And that&#39;s it. The kbase.getFactType() approach is used only when you declare you model inside the drl (as far as i know).</span></div>

<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br></span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Best,</span></div>

<meta http-equiv="content-type" content="text/html; charset=utf-8"><div><br clear="all"><br>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br><br>Esteban Aliverti<br>- Developer @ <a href="http://www.plugtree.com" target="_blank">http://www.plugtree.com </a><br>

- Blog @ <a href="http://ilesteban.wordpress.com" target="_blank">http://ilesteban.wordpress.com</a><br>
<br><br><div class="gmail_quote">2010/8/21 Swapnil Sawant <span dir="ltr">&lt;<a href="mailto:Swapnil.Sawant@lntinfotech.com">Swapnil.Sawant@lntinfotech.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<br>
Hi,<br>
<br>
PFA the model jar and decision table that I have created .<br>
<br>
myTest.jar contains my model class &#39;AmountPojo&#39; and currently I have written only one PF rule using this &#39;AmountPojo&#39; class<br>
<br>
I have done following things successfully on guvnor GUI :<br>
<br>
        - uploading of model jar in a package(named Test)<br>
        - uploading decision table xls in same package<br>
        - &#39;save and validate configuration&#39; and &#39;building package&#39;after above steps<br>
        - Creating test scenario for testing that my rule is working fine<br>
<br>
<br>
Now, I wish to utilize this package in my application through changeset.xml. For this, I wrote something like :<br>
<br>
      &lt;change-set xmlns=&#39;<a href="http://drools.org/drools-5.0/change-set" target="_blank">http://drools.org/drools-5.0/change-set</a>&#39;<br>
                  xmlns:xs=&#39;<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>&#39;<br>
                   xs:schemaLocation=&#39;<a href="http://drools.org/drools-5.0/change-set" target="_blank">http://drools.org/drools-5.0/change-set</a> drools-change-set-5.0.xsd&#39; &gt;<br>
                      &lt;add&gt;<br>
            &lt;resource source=&#39;<a href="https://ofbiz.apache.org:8443/drools-guvnor/org.drools.guvnor.Guvnor/package/Test/LATEST.drl" target="_blank">https://ofbiz.apache.org:8443/drools-guvnor/org.drools.guvnor.Guvnor/package/Test/LATEST.drl</a>&#39;  type=&#39;DRL&#39; /&gt;<br>


                      &lt;/add&gt;<br>
      &lt;/change-set&gt;<br>
<br>
Also, in my code I have created knowledge agent like dis :<br>
<br>
<br>
            kagent = KnowledgeAgentFactory.newKnowledgeAgent( &quot;MyRuleAgent&quot; );<br>
            String changesetUrl = &quot;file:&quot;+currentWorkingDirectory+&quot;/framework/drools/config/changeset.xml&quot;;<br>
            kagent.applyChangeSet( ResourceFactory.newUrlResource( changesetUrl ) );<br>
<br>
<br>
Using this &#39;kagent&#39; I have created knowledge base like dis :<br>
<br>
            if(kbase==null){<br>
                 kbase = kagent.getKnowledgeBase();<br>
            }<br>
<br>
<br>
When kagent.applychaneset line executes, it throws following error :<br>
<br>
<br>
            [Error: Failed to compile: 4 compilation error(s):<br>
 - (1,9) unqualified type in strict mode for: amtEntity<br>
 - (1,9) unqualified type in strict mode for: amtEntity<br>
 - (1,15) unqualified type in strict mode for: basic<br>
 - (1,40) unable to resolve method using strict-mode: java.lang.Object.setHra(java.lang.Object)]<br>
[Near : {... Unknown ....}]<br>
             ^<br>
[Line: 1, Column: 0]<br>
        at org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:78)<br>
        at org.drools.base.mvel.MVELCompilationUnit.compile(MVELCompilationUnit.java:365)<br>
        at org.drools.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:288)<br>
        at org.drools.base.mvel.MVELConsequence.compile(MVELConsequence.java:49)<br>
        at org.drools.rule.builder.dialect.mvel.MVELConsequenceBuilder.build(MVELConsequenceBuilder.java:107)<br>
        at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:86)<br>
        at org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:1168)<br>
        at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:654)<br>
        at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:291)<br>
        at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:489)<br>
        at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:25)<br>
        at org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:387)<br>
        at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:121)<br>
        at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:110)<br>
        at org.ofbiz.drools.event.drool.RuleIntegrate.createKnowledgeBase(RuleIntegrate.java:46)<br>
        at org.ofbiz.drools.event.drool.RuleIntegrate.createWorkingMemory(RuleIntegrate.java:29)<br>
        at org.ofbiz.payroll.DroolsRule.callRuleJava(DroolsRule.java:42)<br>
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br>
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br>
        at java.lang.reflect.Method.invoke(Method.java:597)<br>
        at org.ofbiz.service.engine.StandardJavaEngine.serviceInvoker(StandardJavaEngine.java:100)<br>
        at org.ofbiz.service.engine.StandardJavaEngine.runSync(StandardJavaEngine.java:57)<br>
        at org.ofbiz.service.ModelServiceReader$GenericInvokerImpl.runSync(ModelServiceReader.java:761)<br>
        at _$gen.file_58$.D_58$.Swapnil_95$Data.ofbiz_95$trunk_95$06_95$22.applications.payroll.servicedef.services_46$xml_3<br>
        at org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:399)<br>
        at org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:226)<br>
        at org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:165)<br>
        at org.ofbiz.webapp.event.ServiceEventHandler.invoke(ServiceEventHandler.java:336)<br>
        at org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:633)<br>
        at org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:379)<br>
        at org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:224)<br>
        at org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:87)<br>
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)<br>
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)<br>
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)<br>
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br>
        at org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:271)<br>
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br>
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br>
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)<br>
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br>
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)<br>
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br>
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br>
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555)<br>
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)<br>
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)<br>
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)<br>
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)<br>
        at java.lang.Thread.run(Thread.java:619)<br>
[2010:08:233 16:08:734:debug] KnowledgeAgent building resource=[UrlResource path=&#39;<a href="https://ofbiz.apache.org:8443/drools-guvno" target="_blank">https://ofbiz.apache.org:8443/drools-guvno</a><br>
[2010:08:233 16:08:359:debug] KnowledgeAgent has KnowledgeBuilder errors  object=Unable to resolve ObjectType &#39;AmountPojo&#39; :<br>
Unable to resolve ObjectType &#39;AmountPojo&#39; : [Rule name=&#39;HRA rule&#39;]<br>
Unable to build expression for &#39;consequence&#39;: Failed to compile: 4 compilation error(s):<br>
 - (1,9) unqualified type in strict mode for: amtEntity<br>
 - (1,9) unqualified type in strict mode for: amtEntity<br>
 - (1,15) unqualified type in strict mode for: basic<br>
 - (1,40) unable to resolve method using strict-mode: java.lang.Object.setHra(java.lang.Object) &#39;       amtEntity.setHra( am<br>
&#39; : [Rule name=&#39;HRA rule&#39;]<br>
Error importing : &#39;com.sample.AmountPojo&#39;Error importing : &#39;com.sample.PFRules&#39;Error importing : &#39;com.sample.SpreadsheetComp<br>
        Test/Rule_PF_Rules_11_0.java (2:22) : Only a type can be imported. com.sample.SpreadsheetCompiler resolves to a pack<br>
        Test/Rule_PF_Rules_11_0.java (2:60) : Only a type can be imported. com.sample.AmountPojo resolves to a package<br>
        Test/Rule_PF_Rules_11_0.java (2:89) : Only a type can be imported. com.sample.PFRules resolves to a package<br>
        Test/Rule_PF_Rules_11_0.java (7:371) : a cannot be resolved<br>
        Test/Rule_PF_Rules_11_0.java (7:379) : a cannot be resolved<br>
        Test/Rule_PF_Rules_11_0.java (8:460) : a cannot be resolved<br>
<br>
<br>
<br>
It seems that it is not  able to recognize &#39;AmountPojo&#39; class.thereby considering it as &#39;Object&#39; type and applying setHra() on it.<br>
<br>
Any idea why this is occuring ? How to communicate about &#39;AmountPojo&#39; Type in code ?<br>
<br>
<br>
Also,<br>
<br>
After this, I wanted to know the steps for &#39;inserting fact type object for AmountPojo&#39; in the session created.<br>
<br>
For this I read in docs  that use following lines of code :<br>
<br>
<br>
                        // Retrieve the generated fact type<br>
                               FactType cheeseFact = ruleBase.getFactType( &quot;org.drools.generatedbeans.Cheese&quot; );<br>
<br>
                       // Create a new Fact instance<br>
                               Object cheese = cheeseFact.newInstance();<br>
<br>
                               cheeseFact.set( cheese,<br>
                                &quot;type&quot;,<br>
                          &quot;stilton&quot; );<br>
<br>
<br>
But, I didnt find any method like KnowledgeBase.getFactType(String fullyQualifiedfactTypePath) . There is only one KnowledgeBase.getFactType(String pckname,String factTypeName) method in it<br>
<br>
<br>
Please let me the know the right way of achieving this .<br>
<br>
<br>
<br>
Thanks,<br>
<br>
Swapnil Sawant<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
This Email may contain confidential or privileged information for the intended recipient (s) If you are not the intended recipient, please do not use or disseminate the information, notify the sender and delete it from your system.<br>


<br>
______________________________________________________________________<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br></div>