For the KnowledgeAgent, a resource of type PKG is a single KnowledgePackage object; reading is done like this, according to KnoledgeAgentImpl<br><br> InputStream is = null;<br> KnowledgePackageImp kpkg = null;<br>
try {<br>
is = resource.getInputStream();<br> Object object = DroolsStreamUtils.streamIn( is );<br> if ( object instanceof KnowledgePackageImp ) {<br> kpkg = ((KnowledgePackageImp) object);<br>
} else {<br> kpkg = new KnowledgePackageImp( (Package) object );<br> }<br> for ( Rule rule : kpkg.pkg.getRules() ) {<br> rule.setResource( resource );<br>
}<br><br> } catch ( Exception ex ) {<br> ...<br> } finally {<br> ...<br> }<br> return kpkg;<br><br>-W<br><br><div class="gmail_quote">2011/6/14 Lisa Horton <span dir="ltr"><<a href="mailto:LHorton@abclegal.com" target="_blank">LHorton@abclegal.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div link="blue" vlink="purple" lang="EN-US">
<div>
<p class="MsoNormal">Drools 5.1.1</p>
<p class="MsoNormal">I create a package from a decision table:</p>
<p class="MsoNormal"> ObjectOutputStream
out;</p>
<p class="MsoNormal"> try
{</p>
<p class="MsoNormal"> out
= new ObjectOutputStream(new FileOutputStream(“venue.pkg”));</p>
<p class="MsoNormal"> out.writeObject(knowledgeBase.getKnowledgePackages());
// knowledgeBase previously loaded from spreadsheet</p>
<p class="MsoNormal"> out.close();</p>
<p class="MsoNormal"> }
catch (IOException ex) {</p>
<p class="MsoNormal"> logger.debug(ex.getMessage());</p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">I can load this package directly into a knowledge base and
run rules with no errors:</p>
<p class="MsoNormal"> ObjectInputStream
in;</p>
<p class="MsoNormal"> Collection<KnowledgePackage>
packages = null;</p>
<p class="MsoNormal"> try
{</p>
<p class="MsoNormal"> in
= new ObjectInputStream(new FileInputStream(“venue.pkg”));</p>
<p class="MsoNormal"> packages
= (Collection<KnowledgePackage>) in.readObject();</p>
<p class="MsoNormal"> in.close();</p>
<p class="MsoNormal"> }
catch (Exception ex) {</p>
<p class="MsoNormal"> logger.debug(ex.getMessage());</p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal"> knowledgeBase.addKnowledgePackages(packages);</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">HOWEVER if I try to load the same package using a knowledge
agent:</p>
<p class="MsoNormal"> KnowledgeAgent
kagent = KnowledgeAgentFactory.newKnowledgeAgent("TheAgent");</p>
<p class="MsoNormal"> kagent.applyChangeSet(ResourceFactory.newFileResource(“ChangeSet.xml”));</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">The package does not load. Any idea of the cause of
these exceptions?</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">[2011:06:165 10:06:159:info] ResourceChangeNotification
created</p>
<p class="MsoNormal">[2011:06:165 10:06:161:info] ResourceChangeScanner
reconfigured with interval=60</p>
<p class="MsoNormal">[2011:06:165 10:06:161:info] ResourceChangeScanner created
with default interval=60</p>
<p class="MsoNormal">[2011:06:165 10:06:162:debug] ResourceChangeNotification
monitor added monitor=org.drools.io.impl.ResourceChangeScannerImpl@5c73a7ab</p>
<p class="MsoNormal">[2011:06:165 10:06:163:debug] KnowledgeAgent building
resource map</p>
<p class="MsoNormal">[2011:06:165 10:06:163:info] KnowledegAgent has started listening
for ChangeSet notifications</p>
<p class="MsoNormal">[2011:06:165 10:06:163:info] KnowledgeAgent created, with
configuration:</p>
<p class="MsoNormal">monitorChangeSetEvents=true scanResources=true
scanDirectories=true newInstance=true</p>
<p class="MsoNormal">[2011:06:165 10:06:413:info] KnowledgeAgent applying ChangeSet</p>
<p class="MsoNormal">[2011:06:165 10:06:415:debug] KnowledgeAgent notifier
subscribing to resource=[ClassPathResource
path='com/abclegal/rules/resources/venue.pkg']</p>
<p class="MsoNormal">[2011:06:165 10:06:415:debug] ResourceChangeNotification
subscribing listener=org.drools.agent.impl.KnowledgeAgentImpl@5fe0f2f6 to
resource=[ClassPathResource path='com/abclegal/rules/resources/venue.pkg']</p>
<p class="MsoNormal">[2011:06:165 10:06:416:debug] ResourceChangeScanner
subcribing notifier=org.drools.io.impl.ResourceChangeNotifierImpl@296f25a7 to
resource=[ClassPathResource path='com/abclegal/rules/resources/venue.pkg']</p>
<p class="MsoNormal">[2011:06:165 10:06:416:debug] KnowledgeAgent rebuilding
KnowledgeBase using ChangeSet</p>
<p class="MsoNormal">[2011:06:165 10:06:556:exception]</p>
<p class="MsoNormal">java.lang.RuntimeException: KnowledgeAgent exception while
trying to deserialize KnowledgeDefinitionsPackage </p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.createPackageFromResource(KnowledgeAgentImpl.java:664)</p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:889)</p>
<p class="MsoNormal"> at org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:704)</p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:584)</p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:185)</p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:168)</p>
<p class="MsoNormal"> at
com.abclegal.rules.RulesUtilities.createKnowledgeBaseUsingAgent(RulesUtilities.java:91)</p>
<p class="MsoNormal"> at
com.abclegal.rules.RulesBenchmarks.benchmarkVenueSelection(RulesBenchmarks.java:39)</p>
<p class="MsoNormal"> at
com.abclegal.rules.RulesBenchmarks.main(RulesBenchmarks.java:33)</p>
<p class="MsoNormal">Caused by: java.lang.ClassCastException: [B cannot be cast
to org.drools.rule.DialectRuntimeRegistry</p>
<p class="MsoNormal"> at
org.drools.rule.Package.readExternal(Package.java:197)</p>
<p class="MsoNormal"> at
org.drools.definitions.impl.KnowledgePackageImp.readExternal(KnowledgePackageImp.java:115)</p>
<p class="MsoNormal"> at
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1791)</p>
<p class="MsoNormal"> at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)</p>
<p class="MsoNormal"> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)</p>
<p class="MsoNormal"> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)</p>
<p class="MsoNormal"> at
java.util.ArrayList.readObject(ArrayList.java:593)</p>
<p class="MsoNormal"> at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</p>
<p class="MsoNormal"> at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)</p>
<p class="MsoNormal"> at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)</p>
<p class="MsoNormal"> at
java.lang.reflect.Method.invoke(Method.java:597)</p>
<p class="MsoNormal"> at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)</p>
<p class="MsoNormal"> at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)</p>
<p class="MsoNormal"> at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)</p>
<p class="MsoNormal"> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)</p>
<p class="MsoNormal"> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)</p>
<p class="MsoNormal"> at
org.drools.core.util.DroolsStreamUtils.streamIn(DroolsStreamUtils.java:205)</p>
<p class="MsoNormal"> at
org.drools.core.util.DroolsStreamUtils.streamIn(DroolsStreamUtils.java:174)</p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.createPackageFromResource(KnowledgeAgentImpl.java:653)</p>
<p class="MsoNormal"> ... 8 more</p>
<p class="MsoNormal">[2011:06:165 10:06:856:debug] KnowledgeAgent obtaining pkg
resource=[ClassPathResource path='com/abclegal/rules/resources/venue.pkg']</p>
<p class="MsoNormal">[2011:06:165 10:06:856:exception]</p>
<p class="MsoNormal">java.lang.RuntimeException: KnowledgeAgent exception while
trying to deserialize KnowledgeDefinitionsPackage </p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:914)</p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:704)</p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:584)</p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:185)</p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:168)</p>
<p class="MsoNormal"> at
com.abclegal.rules.RulesUtilities.createKnowledgeBaseUsingAgent(RulesUtilities.java:91)</p>
<p class="MsoNormal"> at
com.abclegal.rules.RulesBenchmarks.benchmarkVenueSelection(RulesBenchmarks.java:39)</p>
<p class="MsoNormal"> at
com.abclegal.rules.RulesBenchmarks.main(RulesBenchmarks.java:33)</p>
<p class="MsoNormal">Caused by: java.lang.NullPointerException</p>
<p class="MsoNormal"> at
org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:906)</p>
<p class="MsoNormal"> ... 7 more</p>
<p class="MsoNormal">[2011:06:165 10:06:865:info] KnowledgeAgent new
KnowledgeBase now built and in use</p>
<p class="MsoNormal">[2011:06:165 10:06:865:debug] KnowledgeAgent finished
rebuilding KnowledgeBase using ChangeSet</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
</div>
</div>
<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">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>