Hi Edson, and thanks for answering
? - are the fact types (classes) in the same package or different packages?
Different packages. But I tried this on my little sample (put the sub-class in another
package than the mother class), and this works
? - Are the declaration(s)/rules in the same file or different files?
Same file (DRL)
? - Are you using a single kbuilder to build the whole thing on your application or using
different kbuilders?
? - Is the order in which you are loading the files into the kbuilder and the order you
add packages in your kbase the same on your application and your test?
My kbase has a unique package, got from a single DRL file, built by a single (new)
kbuilder.
But I use one kbuilder per package, only for build time, and I have other packages /
kbases, for other rule sessions ...
Here I create 3 packages (and 3 kbases), using one new kbuilder for each. These 3 packages
don't have any fusion construction in them.
Then I build the 4th package / kbase, using one new kbuilder, and this is this package
which contains some fusion rules.
Does kbuilders can collide in some way ? May be that as the 3 first package don't use
any fusion, all the classes are tagged as "not event", kept somewhere, and
reused in the 4th kbuilder, that only update the explicitely "event" classes ? I
will try to load the fusion kb first to see what happend ... but I am sceptic, as the 3
first package don't use the ***Event objects ...
There is another difference on my package build process.
My little test is built over the Hello World sample. My app uses more sophisticated way of
getting resources, but finally calls the same kbuilder.add ... magic method ...
The only difference is that :
- HelloWorld sample, and my little test, uses kbuilder.add( newClassPathResource(...) ,
ResourceType.DRL) to get resources that are located in a eclipse source folder
- My application uses kbuilder.add( newFileResource(...) , ResourceType.DRL) to fetch
resources in the file system
I am quite sure that the difference cannot be here for real ... I guess that all of these
methods finally result in opening a InputStream that contains DRL raw text to feed a
parser, which don't care about how the inputStream was created ...
? - Also, which version of Drools are you using? Did you tried with latest snapshot from
the 5.3.x branch or with master branch (5.4.x)?
5.3.Final official stable version. and before that the 5.2.Final version (problem is there
too).
Did not tried with any "not official" version (I already experienced problem
when migrating guvnor repos from candidates releases ...).
? - Any additional information you can give us might help us figure out the problem.
Ok. The problem here is that I can't provide you the full code, and anyway you
won't go into this code for some mysterious bug ...
The two sub classes (InitEvent, and DisposeEvent) are very basic derivated classes. They
only use "extends ChantierEvent" and nothing more (no interfaces).
They have a different constructor signature than their parent, but I also test that with
my little sample and this is not the problem .. .
These classes have attributes that links to other classes in the project. By transitivity,
all business objects are loaded (by the class loader). These BO contains annotations for
DB persistance (but they are attributes, the ***Event classes does not have any
annotations).
I don't know what to add ...
I will go on testing a bit, and report back here.
Thanks !