[rules-users] Type Declaration upgrade

delete boyun.yuriy at gmail.com
Mon Feb 14 06:41:35 EST 2011


Hi.
I have such declaration of type
declare Contact
  firstName : String
end

then I want to add new property to this type. so the  next version is
declare Contact
  firstName : String
  newField : String
end

this type declaration is in separate drl file.
then I add this new type to current KnowledgeBase.
but when I execute knowledgeBase.getFactType("test.package", "Contact");
I get old version of Contact.

During debugging I found the place where is should be upgraded in the
KnowledgeBase.
org.drools.common.AbstractRuleBase.mergePackage
there is 
// merge the type declarations
        if ( newPkg.getTypeDeclarations() != null ) {
            // add type declarations
            for ( TypeDeclaration type :
newPkg.getTypeDeclarations().values() ) {
                // @TODO should we allow overrides? only if the class is not
in use.
                if ( !pkg.getTypeDeclarations().containsKey(
type.getTypeName() ) ) {
                    // add to package list of type declarations
                    pkg.addTypeDeclaration( type );
                }
            }
        }

so according this comments it's not possible to upgrade Type on the fly.

Am I missing something? 
Does someone had such problems or know the workaround.

Thanks in advance,
Yuriy
  
-- 
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Type-Declaration-upgrade-tp2491975p2491975.html
Sent from the Drools - User mailing list archive at Nabble.com.



More information about the rules-users mailing list