Nicholas,

   I assume that you are using your classes not only in the consequence, but in the LHS of the rules as well, right? In this case, a knowledge base recompilation will be necessary. That is because Drools must indeed keep references to your class in order to be able to properly match incoming facts, extract their attribute values, etc. Drools already provides re-wiring for most of its artifacts, but providing the same to user defined classes would be close to recompile the knowledge base again.

   Now, I am curious about your use case? why do you need to re-load your classes?

   []s
   Edson

2009/10/14 Nicholas Hemley <nic.hemley@sidonis.com>

Hello,

 

I am using various classes in the consequences of my rules and I would like to dynamically re-load the classes.

 

Currently, I include the following code snippet which sets the class loader:

 

KnowledgeBaseConfiguration kbConf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(properties, MyClassLoader.getInstance());

KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(kbConf);

 

However, if I change the underlying jar and inform my classloader of this change, the old class is still used in the rule consequences.

 

I therefore assume that Drools is storing a reference to the old class in the previously created KnowledgeBases so MyClassLoader.loadClass() is only invoked the first time the class is required.

 

My question is thus: Is there any way to force a class reload on a KnowledgeBase or do I have to re-create the Knowledgebase?

 

If so, would it be a case of getAllFactHandles() (or similar) and assert these into a newly created KnowledgeBase with a new instance of MyClassloader?

 

Cheerio,

Nic

 

Nicholas Hemley

Senior Developer

Sidonis | Powering a New Generation of Service Assurance


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss by Red Hat @ www.jboss.com