Hi All,
As a first time GIT user... I think I have manager to "pull this off"
and submitted a pull request for a test case in the drools-compiler
project. This should add one file in src/test/ in the package
org.drools.compiler.integration as I deemed that to be the most
appropriate place.
Regards,
Willem
On 10/26/2012 06:37 AM, Mark Proctor wrote:
Would it be possible to submit a small self contains test, as a pull
request. Here a detailed "how to" to get you started.
http://docs.jboss.org/drools/release/5.4.0.Final/droolsjbpm-introduction-...
Thanks
Mark
On 25 Oct 2012, at 12:09, Willem van Asperen <willem(a)van.asperen.org> wrote:
> Hi All,
>
> I have taken the liberty to log this in Jira at
>
https://issues.jboss.org/browse/JBRULES-3670
>
> Regards,
> Willem
>
> On 10/25/2012 12:44 PM, Willem van Asperen wrote:
>> Hi All,
>>
>> The difference between failing or not stems from using insert() and
>> retract() versus insertLogical(). The first two make the package fail to
>> load, the latter seems to work fine.
>>
>> I can create a package that *does* load, by adding a cast to the full
>> class name in the rule:
>>
>> rule "clean up possible slot lock, when no longer to schedule"
>> when
>> $p : PossibleSlotLock( $ship; )
>> not ToScheduleLock( mover == $ship )
>> then
>> retract( (vcm.planner.lock.standard.PossibleSlotLock)$p );
>> end
>>
>> and by stating the full class name in the inserts, like so:
>>
>> insert(new vcm.planner.lock.standard.PossibleSlotLock($ship, $chamber,
>> $side, $schedule, $eta, $schedule.getTick(), "existing"));
>>
>> This way the loading works fine.
>>
>> So this is less about loading compiled files and more about class
>> loading for insert() and retract().
>>
>> Hope this helps!
>>
>> I have also managed to reproduce this in a simple case. jar attached.
>> Notice that when I change rule "now use it B" to have RHS "insert(
new
>> Person( $christianName, null ) );" the loading works. I can imagine the
>> compiler / loader just assumes that a class with constructor Person(
>> String, ExternalClass ) may become available at run time?
>>
>> Regards,
>> Willem
>>
>> On 10/25/2012 11:32 AM, Willem van Asperen wrote:
>>> Hi All,
>>>
>>> To add to this, I've done some further testing.
>>>
>>> It seems that the particular order in which each of the compiled
>>> packages is loaded does not matter.
>>> Not all packages that declare local classes fail... I have now found the
>>> two that do. I cannot see any striking differences between the ones that
>>> do and do not fail...
>>>
>>> What I did find is that removing all the rules from the failing packages
>>> (so only leaving the imports and declare) seems to remove this issue!
>>>
>>> I'll dig 'round some more.
>>>
>>> Regards,
>>> Willem
>>>
>>> On 10/25/2012 01:45 AM, Wolfgang Laun wrote:
>>>> Folks,
>>>> it seems that something new in 5.5.0.CR1 sabotages the ingestion of
>>>> compiled packages.
>>>> -W
>>>>
>>>> ---------- Forwarded message ----------
>>>> From: Willem van Asperen <willem(a)van.asperen.org>
>>>> Date: Thu, 25 Oct 2012 00:04:32 +0200
>>>> Subject: Re: [rules-users] ClassNotFound on class defined in drl with
5.5.0.CR1
>>>> To: Wolfgang Laun <wolfgang.laun(a)gmail.com>, Rules Users List
>>>> <rules-users(a)lists.jboss.org>
>>>>
>>>> Hi,
>>>>
>>>> This was a good idea. Here is my test case:
>>>>
>>>> public class TestCompilation {
>>>>
>>>> private final static FileFilter RULES_FILES_FILTER = new
FileFilter() {
>>>> @Override
>>>> public boolean accept(File pathname) {
>>>> return pathname.getName().endsWith(".drl");
>>>> }
>>>> };
>>>>
>>>> private void testCompilation() throws FileNotFoundException,
>>>> IOException {
>>>> KnowledgeBuilderConfiguration configuration =
>>>> KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
>>>> KnowledgeBuilder kbuilder =
>>>> KnowledgeBuilderFactory.newKnowledgeBuilder(configuration);
>>>>
>>>> File folder = new File("src/main/rules/");
>>>> for (File file : folder.listFiles(RULES_FILES_FILTER)) {
>>>> System.out.println("compiling
"+file.getAbsolutePath());
>>>> kbuilder.add(ResourceFactory.newFileResource(file.getAbsolutePath()),
>>>> ResourceType.DRL);
>>>> }
>>>>
>>>> System.out.println("saving");
>>>> ObjectOutputStream out = new ObjectOutputStream(new
>>>> FileOutputStream("test.drl.compiled"));
>>>> out.writeObject( kbuilder.getKnowledgePackages());
>>>> out.close();
>>>> }
>>>>
>>>> private KnowledgeBase testLoad() throws FileNotFoundException,
>>>> IOException, ClassNotFoundException {
>>>> Properties configProperties = new Properties();
>>>> KnowledgeBaseConfiguration knowledgeBaseConfiguration =
>>>> KnowledgeBaseFactory.newKnowledgeBaseConfiguration(configProperties);
>>>> KnowledgeBase kbase =
>>>> KnowledgeBaseFactory.newKnowledgeBase(knowledgeBaseConfiguration);
>>>>
>>>> ObjectInputStream in = new ObjectInputStream(new
>>>> FileInputStream("test.drl.compiled"));
>>>>
>>>> System.out.println("loading");
>>>> kbase.addKnowledgePackages((Collection<KnowledgePackage>)
in.readObject());
>>>> return kbase;
>>>> }
>>>>
>>>> public static void main(String[] args) throws
>>>> FileNotFoundException, IOException, ClassNotFoundException {
>>>> TestCompilation testCompilation = new TestCompilation();
>>>> testCompilation.testCompilation();
>>>> testCompilation.testLoad();
>>>> }
>>>> }
>>>>
>>>> The folder src/main/rules consists of a number of .drl files.
>>>> Compiling works fine.
>>>> This is the output:
>>>>
>>>> SLF4J: Failed to load class
"org.slf4j.impl.StaticLoggerBinder".
>>>> SLF4J: Defaulting to no-operation (NOP) logger implementation
>>>> SLF4J: See
http://www.slf4j.org/codes.html#StaticLoggerBinder for
>>>> further details.
>>>> compiling
>>>> /home/willem/development/workspace/VCM/src/main/rules/planner-lock.drl
>>>> compiling
>>>>
/home/willem/development/workspace/VCM/src/main/rules/executable-action-selection.drl
>>>> compiling
>>>> /home/willem/development/workspace/VCM/src/main/rules/block-times-3.drl
>>>> compiling
>>>> /home/willem/development/workspace/VCM/src/main/rules/planner-bridge.drl
>>>> compiling
>>>> /home/willem/development/workspace/VCM/src/main/rules/routeplan.drl
>>>> compiling
>>>>
/home/willem/development/workspace/VCM/src/main/rules/shift-management-brabant.drl
>>>> compiling
>>>>
/home/willem/development/workspace/VCM/src/main/rules/plan-first-object-in-route.drl
>>>> compiling
>>>> /home/willem/development/workspace/VCM/src/main/rules/operator-lock.drl
>>>> compiling
>>>>
/home/willem/development/workspace/VCM/src/main/rules/block-times-route-call.drl
>>>> compiling
>>>>
/home/willem/development/workspace/VCM/src/main/rules/shift-management.drl
>>>> compiling
>>>>
/home/willem/development/workspace/VCM/src/main/rules/planner-process-data.drl
>>>> compiling
>>>>
/home/willem/development/workspace/VCM/src/main/rules/plan-last-moment.drl
>>>> compiling
>>>>
/home/willem/development/workspace/VCM/src/main/rules/operator-bridge.drl
>>>> compiling
>>>>
/home/willem/development/workspace/VCM/src/main/rules/operator-management.drl
>>>> saving
>>>> loading
>>>> Exception in thread "main" java.lang.ClassNotFoundException:
>>>> vcm.planner.lock.standard.PossibleSlotLock
>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>>> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>>> at java.security.AccessController.doPrivileged(Native Method)
>>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
>>>> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
>>>> at java.lang.Class.forName0(Native Method)
>>>> at java.lang.Class.forName(Class.java:264)
>>>> at
>>>>
org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:85)
>>>> at
>>>>
org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:97)
>>>> at
>>>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593)
>>>> at
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
>>>> at
java.io.ObjectInputStream.readClass(ObjectInputStream.java:1480)
>>>> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1330)
>>>> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>> at
>>>>
org.drools.rule.ConsequenceMetaData$Statement.readExternal(ConsequenceMetaData.java:61)
>>>> at
>>>> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>> at
>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>> at java.util.ArrayList.readObject(ArrayList.java:733)
>>>> at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
>>>> at
>>>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:601)
>>>> at
>>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
>>>> at
>>>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
>>>> at
>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
>>>> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>> at
>>>>
org.drools.rule.ConsequenceMetaData.readExternal(ConsequenceMetaData.java:19)
>>>> at
>>>> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>> at
>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>> at org.drools.rule.Rule.readExternal(Rule.java:207)
>>>> at
>>>> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>> at
>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>> at
>>>>
org.drools.rule.JavaDialectRuntimeData.readExternal(JavaDialectRuntimeData.java:195)
>>>> at
>>>> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>> at
>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>> at java.util.HashMap.readObject(HashMap.java:1155)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:601)
>>>> at
>>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
>>>> at
>>>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
>>>> at
>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
>>>> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>> at
>>>>
org.drools.rule.DialectRuntimeRegistry.readExternal(DialectRuntimeRegistry.java:58)
>>>> at
>>>> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>> at
>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>> at org.drools.rule.Package.readExternal(Package.java:208)
>>>> at
>>>>
org.drools.definitions.impl.KnowledgePackageImp.readExternal(KnowledgePackageImp.java:157)
>>>> at
>>>> java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>> at
>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>> at java.util.ArrayList.readObject(ArrayList.java:733)
>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>> at
>>>>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>> at
>>>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>> at java.lang.reflect.Method.invoke(Method.java:601)
>>>> at
>>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
>>>> at
>>>> java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
>>>> at
>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
>>>> at
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>> at
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>> at
>>>>
com.paconsulting.pase.test.TestCompilation.testLoad(TestCompilation.java:57)
>>>> at
>>>> com.paconsulting.pase.test.TestCompilation.main(TestCompilation.java:64)
>>>>
>>>> The class PossibleSlotLock is just a locally declared fact class. It is
>>>> only being used in that particular .drl file. Every .drl file has
it's
>>>> own package name.
>>>>
>>>> The head of the .drl file:
>>>>
>>>> package vcm.planner.lock.standard;
>>>>
>>>> import java.util.Set;
>>>>
>>>> import com.paconsulting.pase.core.schedule.CurrentTime;
>>>> import com.paconsulting.pase.core.duration.FixedDuration;
>>>> import com.paconsulting.pase.transport.agents.ScheduleManagingContainer;
>>>> import com.paconsulting.pase.transport.agents.movers.Ship;
>>>> import com.paconsulting.pase.transport.agents.water.Lock;
>>>> import com.paconsulting.pase.transport.agents.water.LockChamber;
>>>> import com.paconsulting.pase.transport.agents.base.WaterLevel;
>>>> import com.paconsulting.pase.transport.components.action.ActionFactory;
>>>> import com.paconsulting.pase.transport.actions.IAction;
>>>> import com.paconsulting.pase.transport.components.action.IActionable;
>>>> import com.paconsulting.pase.transport.actions.NonTransactionAction;
>>>> import com.paconsulting.pase.transport.actions.ExecutableAction;
>>>> import com.paconsulting.pase.transport.components.containing.IContainer;
>>>> import
>>>> com.paconsulting.pase.transport.components.containing.IContainer.UpDown;
>>>> import com.paconsulting.pase.transport.components.moving.IMover;
>>>> import
com.paconsulting.pase.transport.components.moving.TransferSchedule;
>>>> import com.paconsulting.pase.transport.components.moving.ToScheduleLock;
>>>>
>>>> declare PossibleSlotLock
>>>> ship : IMover
>>>> chamber : IContainer
>>>> side : IContainer.UpDown
>>>> schedule : TransferSchedule
>>>> eta : double
>>>> at : double
>>>> cause : String
>>>> end
>>>> ....
>>>>
>>>> Same issue like in my previous email, different class that cannot be
found.
>>>>
>>>> This works in 5.4.0.Final
>>>>
>>>> Any clue?
>>>>
>>>> This seems to me like a really basic thing so either I am missing the
>>>> plot somehow or no-one has yet used a locally declared fact classes -
>>>> which I think is just not true...
>>>>
>>>> Regards,
>>>> Willem
>>>>
>>>> On 10/24/2012 07:29 PM, Wolfgang Laun wrote:
>>>>> It would be interesting to know (and perhaps help to isolate the
problem
>>>>> apparently introduced in 5.5.0) if you could try and compile and
>>>>> serialize into a single file, and load that in a single readObject.
>>>>>
>>>>> -W
>>>>>
>>>>> On 24/10/2012, Willem van Asperen <willem(a)van.asperen.org>
wrote:
>>>>>> Hi Wolfgang,
>>>>>>
>>>>>> Thanks for picking this up. I am indeed compiling these separate
.drl
>>>>>> files into separate .drl.compiled files and then creating a kbase
using
>>>>>> addKnowledgePackages on the individual .drl.compiled files.
>>>>>>
>>>>>> But: the classes declared in some of by .drl files are only going
to be
>>>>>> used in that particular .drl file - not anywhere else.
>>>>>> Also: this did work in 5.4.0.Final but now has given up on me.
>>>>>>
>>>>>> Point is that I need to be flexible in mixing different
.drl.compiled
>>>>>> files into a kbase, based on user specifications.
>>>>>> Alternative is that I do not pre-compile these .drl files and
only
>>>>>> compile them, in combination, in the mix that is required by the
user...
>>>>>> If that would solve the problem... But it seems to be more
cumbersome...
>>>>>>
>>>>>> Regards,
>>>>>> Willem
>>>>>>
>>>>>> On 10/24/2012 03:39 PM, Wolfgang Laun wrote:
>>>>>>> The code you use for loading where you load many .pkg files
isn't
>>>>>>> quite the counterpart for compiling where you compile one
DRL.
>>>>>>>
>>>>>>> Do you compile and output the .drl files one by one?
Apparently you
>>>>>>> load them individually?
>>>>>>>
>>>>>>> Try compiling them all, and then take the
Collection<KnowledgePackage>
>>>>>>> and writeObject it to a single .pkg from which you load them
in one
>>>>>>> go.
>>>>>>>
>>>>>>> Could it be that the type declared in one .drl is used in
another .drl
>>>>>>> in the same package? Reading this in the wrong order might
cause the
>>>>>>> CNF.
>>>>>>>
>>>>>>> -W
>>>>>>>
>>>>>>> On 24/10/2012, Willem van Asperen
<willem(a)van.asperen.org> wrote:
>>>>>>>> Dear All,
>>>>>>>>
>>>>>>>> I use the Drools compiler to compile a set of drl files:
>>>>>>>>
>>>>>>>>
>>>>>>>> KnowledgeBuilder kbuilder =
>>>>>>>>
KnowledgeBuilderFactory.newKnowledgeBuilder(configuration);
>>>>>>>>
kbuilder.add(ResourceFactory.newFileResource(fileName),
>>>>>>>> ResourceType.DRL);
>>>>>>>>
>>>>>>>> KnowledgeBuilderErrors errors =
kbuilder.getErrors();
>>>>>>>> if (errors.size() > 0) {
>>>>>>>> for (KnowledgeBuilderError error:
errors) {
>>>>>>>> logger.error(error);
>>>>>>>> }
>>>>>>>> throw new
IllegalArgumentException("Could not parse
>>>>>>>> knowledge.");
>>>>>>>> }
>>>>>>>>
>>>>>>>> ObjectOutputStream out = new
ObjectOutputStream(new
>>>>>>>> FileOutputStream(fileName+".compiled"));
>>>>>>>> out.writeObject(
kbuilder.getKnowledgePackages());
>>>>>>>> out.close();
>>>>>>>>
>>>>>>>> I then load these *.compiled files into my application:
>>>>>>>>
>>>>>>>>
>>>>>>>> for (String packageName : packages) {
>>>>>>>> InputStream is =
>>>>>>>>
getClass().getResourceAsStream("/"+packageName+".drl.compiled");
>>>>>>>> if (is != null) {
>>>>>>>> logger.debug("adding package
'"+packageName+"'");
>>>>>>>> ObjectInputStream in = new
ObjectInputStream(is);
>>>>>>>>
kbase.addKnowledgePackages((Collection<KnowledgePackage>)
>>>>>>>> in.readObject());
>>>>>>>> in.close();
>>>>>>>> } else
>>>>>>>> throw new
FileNotFoundException("could not find
>>>>>>>> resource for package "+packageName);
>>>>>>>> is.close();
>>>>>>>> }
>>>>>>>>
>>>>>>>> In some of these drl files I declare a class, for
instance:
>>>>>>>>
>>>>>>>> package vcm.selection.standard;
>>>>>>>>
>>>>>>>> import
com.paconsulting.pase.transport.agents.ShiftWorker;
>>>>>>>> import
com.paconsulting.pase.transport.agents.VCMShiftWorker;
>>>>>>>> import
com.paconsulting.pase.transport.actions.ExecutableAction;
>>>>>>>> import
com.paconsulting.pase.transport.agents.ScheduleManagingContainer;
>>>>>>>> import
com.paconsulting.pase.transport.agents.water.Bridge;
>>>>>>>> import
com.paconsulting.pase.transport.agents.movers.AbstractMover;
>>>>>>>> import
com.paconsulting.pase.transport.agents.movers.Ship;
>>>>>>>> import
com.paconsulting.pase.transport.agents.movers.VCMShip;
>>>>>>>>
>>>>>>>> declare RelevantExecutableAction
>>>>>>>> agent : ShiftWorker
>>>>>>>> executableAction : ExecutableAction
>>>>>>>> end
>>>>>>>> ...
>>>>>>>>
>>>>>>>> When running the
>>>>>>>>
kbase.addKnowledgePackages((Collection<KnowledgePackage>)
>>>>>>>> in.readObject()) I get the following ClassNotFound stack
trace:
>>>>>>>>
>>>>>>>> java.lang.ClassNotFoundException:
>>>>>>>> vcm.selection.standard.RelevantExecutableAction
>>>>>>>> at
java.net.URLClassLoader$1.run(URLClassLoader.java:366)
>>>>>>>> at
java.net.URLClassLoader$1.run(URLClassLoader.java:355)
>>>>>>>> at
java.security.AccessController.doPrivileged(Native Method)
>>>>>>>> at
java.net.URLClassLoader.findClass(URLClassLoader.java:354)
>>>>>>>> at
java.lang.ClassLoader.loadClass(ClassLoader.java:423)
>>>>>>>> at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
>>>>>>>> at
java.lang.ClassLoader.loadClass(ClassLoader.java:356)
>>>>>>>> at java.lang.Class.forName0(Native Method)
>>>>>>>> at java.lang.Class.forName(Class.java:264)
>>>>>>>> at
>>>>>>>>
org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:85)
>>>>>>>> at
>>>>>>>>
org.drools.common.DroolsObjectInputStream.resolveClass(DroolsObjectInputStream.java:97)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readClass(ObjectInputStream.java:1480)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1330)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>>>>>> at
>>>>>>>>
org.drools.rule.ConsequenceMetaData$Statement.readExternal(ConsequenceMetaData.java:61)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>>>>>> at
java.util.ArrayList.readObject(ArrayList.java:733)
>>>>>>>> at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>> at
>>>>>>>>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>>>>>> at
>>>>>>>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>> at
java.lang.reflect.Method.invoke(Method.java:601)
>>>>>>>> at
>>>>>>>>
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>>>>>> at
>>>>>>>>
org.drools.rule.ConsequenceMetaData.readExternal(ConsequenceMetaData.java:19)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>>>>>> at
org.drools.rule.Rule.readExternal(Rule.java:207)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>>>>>> at
>>>>>>>>
org.drools.rule.JavaDialectRuntimeData.readExternal(JavaDialectRuntimeData.java:195)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>>>>>> at
java.util.HashMap.readObject(HashMap.java:1155)
>>>>>>>> at
sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
>>>>>>>> at
>>>>>>>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>> at
java.lang.reflect.Method.invoke(Method.java:601)
>>>>>>>> at
>>>>>>>>
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>>>>>> at
>>>>>>>>
org.drools.rule.DialectRuntimeRegistry.readExternal(DialectRuntimeRegistry.java:58)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>>>>>> at
org.drools.rule.Package.readExternal(Package.java:208)
>>>>>>>> at
>>>>>>>>
org.drools.definitions.impl.KnowledgePackageImp.readExternal(KnowledgePackageImp.java:157)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1810)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1769)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>>>>>> at
java.util.ArrayList.readObject(ArrayList.java:733)
>>>>>>>> at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>>>> at
>>>>>>>>
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>>>>>>> at
>>>>>>>>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>>>>> at
java.lang.reflect.Method.invoke(Method.java:601)
>>>>>>>> at
>>>>>>>>
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1004)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1866)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
>>>>>>>> at
>>>>>>>>
java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
>>>>>>>> at
>>>>>>>>
com.paconsulting.pase.core.configuration.runconfig.definition.KnowledgebaseDefinition.addPackages(KnowledgebaseDefinition.java:48)
>>>>>>>> at
>>>>>>>>
com.paconsulting.pase.core.configuration.runconfig.definition.KnowledgebaseDefinition.materialize(KnowledgebaseDefinition.java:59)
>>>>>>>> at
>>>>>>>>
com.paconsulting.pase.core.configuration.runconfig.definition.TeamDefinition.materialize(TeamDefinition.java:97)
>>>>>>>> at
>>>>>>>>
com.paconsulting.pase.core.configuration.runconfig.definition.OperatingModelDefinition.materialize(OperatingModelDefinition.java:36)
>>>>>>>> at
>>>>>>>>
com.paconsulting.pase.core.configuration.runconfig.Run.<init>(Run.java:31)
>>>>>>>> at
>>>>>>>>
com.paconsulting.pase.core.configuration.runconfig.definition.RunDefinition.materialize(RunDefinition.java:53)
>>>>>>>> at
>>>>>>>>
com.paconsulting.pase.core.configuration.runconfig.RunConfigExecutor$ScheduleExecutorWrapper.run(RunConfigExecutor.java:69)
>>>>>>>> ...
>>>>>>>>
>>>>>>>> I'm sure I miss something as this is basic
functionality. Maybe I must
>>>>>>>> tell the kbase where to load the classes...
>>>>>>>>
>>>>>>>> Can someone point me in the right direction?
>>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Willem
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> rules-users mailing list
>>>>>>>> rules-users(a)lists.jboss.org
>>>>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> rules-users mailing list
>>>>>>> rules-users(a)lists.jboss.org
>>>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>> _______________________________________________
>>> rules-dev mailing list
>>> rules-dev(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/rules-dev
> _______________________________________________
> rules-dev mailing list
> rules-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-dev
_______________________________________________
rules-dev mailing list
rules-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev