Cette question a été mentionnée pour une migration de drools 3.06 à 4.0.7 Quelle version d'Eclipse et de Drools utilisez-vous ?
Cela pourrait être lié à un problème de chemin de classe :
En utilisant le débogueur, je me suis rendu compte que les Drools PackageBuilder
a essayé de charger les classes à partir du
Thread.currentThread().getContextClassLoader();
Ce site ClassLoader
ne contient pas mes classes d'agents ! Même le chargeur de classes du système ne contient pas mes classes.
La solution était :
Au lieu de créer de simples PackageBuilder
y RuleBase
il faut les créer avec une PackageBuilderConfiguration
et un RuleBaseConfiguration
à la fois avec l'actuel classLoader
configuré :
ClassLoader classLoader = this.getClass().getClassLoader();
PackageBuilderConfiguration configuration = new PackageBuilderConfiguration();
configuration.setClassLoader(classLoader);
PackageBuilder builder = new PackageBuilder(configuration);
builder.addPackageFromDrl(source);
RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration();
ruleBaseConfiguration.setClassLoader(classLoader);
ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration);
ruleBase.addPackage(builder.getPackage());