[rules-users] Drools Planner: Exception on createSolver method

Geoffrey De Smet ge0ffrey.spam at gmail.com
Mon Apr 12 12:52:39 EDT 2010


The environmentMode property is new on trunk.
It is not part of drools-planner (drools-solver at the time) 5.0.1 or 
5.1.0.M1.
It will be part of 5.2.0.M2.

Note that a drools-core/compiler M2 snapshot is unstable at the moment 
(that's why they call it trunk :).
What you can do - in theory - is combine drools-core/compiler 5.0.1 or 
5.1.0.M1 with drools-planner 5.1.0.M2-SNAPSHOT (that's pretty stable atm 
even if it's trunk).

With kind regards,
Geoffrey De Smet


dweppenaar schreef:
> Hi,
> 
> I am new to Drools in general so please excuse my noobness with some of the
> concepts. I am in the process of creating a maintenance scheduling system.
> As Geoffrey suggested, I have based my application heavily on the curriculum
> course example included in the solver (planner) examples. I have created
> most of the classes used by the example and will be implementing my gui.
> 
> I use an XmlSolverConfigurer to read the configuration from xml. The solver
> config xml path is correct as I get another exception due to the file not
> being found when I change the path. When the solver tries to load the xml
> configuration the following exception occurs:
> 
> Exception in thread "AWT-EventQueue-0"
> com.thoughtworks.xstream.converters.ConversionException: environmentMode :
> environmentMode : environmentMode : environmentMode
> ---- Debugging information ----
> message             : environmentMode : environmentMode
> cause-exception     :
> com.thoughtworks.xstream.mapper.CannotResolveClassException
> cause-message       : environmentMode : environmentMode
> class               :
> org.drools.solver.config.localsearch.LocalSearchSolverConfig
> required-type       :
> org.drools.solver.config.localsearch.LocalSearchSolverConfig
> line number         : 12
> -------------------------------
>         at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:89)
>         at
> com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
>         at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
>         at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
>         at
> com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
>         at
> com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
>         at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
>         at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
>         at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
>         at
> org.drools.solver.config.XmlSolverConfigurer.configure(XmlSolverConfigurer.java:68)
>         at
> org.drools.solver.config.XmlSolverConfigurer.configure(XmlSolverConfigurer.java:59)
>         at
> org.drools.solver.config.XmlSolverConfigurer.configure(XmlSolverConfigurer.java:52)
>         at
> za.co.rgems.projects.imms.swing.gui.ImmsGui.createSolver(ImmsGui.java:95)
>         at
> za.co.rgems.projects.imms.swing.gui.ImmsGui.createSolutionBusiness(ImmsGui.java:103)
>         at
> za.co.rgems.projects.imms.swing.gui.ImmsGui.btnSolveActionPerformed(ImmsGui.java:76)
>         at
> za.co.rgems.projects.imms.swing.gui.ImmsGui.access$000(ImmsGui.java:23)
>         at
> za.co.rgems.projects.imms.swing.gui.ImmsGui$1.actionPerformed(ImmsGui.java:50)
>         at
> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
>         at
> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
>         at
> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
>         at
> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
>         at
> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
>         at java.awt.Component.processMouseEvent(Component.java:6263)
>         at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
>         at java.awt.Component.processEvent(Component.java:6028)
>         at java.awt.Container.processEvent(Container.java:2041)
>         at java.awt.Component.dispatchEventImpl(Component.java:4630)
>         at java.awt.Container.dispatchEventImpl(Container.java:2099)
>         at java.awt.Component.dispatchEvent(Component.java:4460)
>         at
> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
>         at
> java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
>         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
>         at java.awt.Container.dispatchEventImpl(Container.java:2085)
>         at java.awt.Window.dispatchEventImpl(Window.java:2475)
>         at java.awt.Component.dispatchEvent(Component.java:4460)
>         at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
>         at
> java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
>         at
> java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
>         at
> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
>         at
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
>         at
> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
>         at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
> Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException:
> environmentMode : environmentMode
>         at
> com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:86)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:96)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
>         at
> com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:52)
>         at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.determineType(AbstractReflectionConverter.java:347)
>         at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:208)
>         at
> com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:162)
>         at
> com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
>         ... 41 more
> 
> Here is the contents of my XML configuration file:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <localSearchSolver>
>     <environmentMode>REPRODUCIBLE</environmentMode>
>     <scoreDrl>/za/co/rgems/projects/imms/drl/immsRules.drl</scoreDrl>
>     <scoreDefinition>
>         <scoreDefinitionType>HARD_AND_SOFT</scoreDefinitionType>
>     </scoreDefinition>
>     <termination>
>         <scoreAttained>0hard/-5000soft</scoreAttained>
>     </termination>
>    
> <startingSolutionInitializerClass>za.co.rgems.projects.imms.solution.initialiser.ImmsStartingSolutionInitialiser</startingSolutionInitializerClass>
>     <finish>
>         <maximumSecondsSpend>300</maximumSecondsSpend>        
>     </finish>
>     <selector>
>         <selector>
>             <topSize>10</topSize>
>         </selector>
>         <selector>
>            
> <moveFactoryClass>za.co.rgems.projects.imms.move.factory.MaintenanceSlotMoveFactory</moveFactoryClass>
>             <relativeSelection>0.002</relativeSelection>
>         </selector>
>         <selector>
>            
> <moveFactoryClass>za.co.rgems.projects.imms.move.factory.MaintenanceTaskSwitchFactory</moveFactoryClass>
>             <relativeSelection>0.002</relativeSelection>
>         </selector>
>         <selector>
>            
> <moveFactoryClass>za.co.rgems.projects.imms.move.factory.MaintenanceTechnicianChangeMoveFactory</moveFactoryClass>
>             <relativeSelection>0.002</relativeSelection>
>         </selector>
>         <selector>
>            
> <moveFactoryClass>za.co.rgems.projects.imms.move.factory.MotorChangeMoveFactory</moveFactoryClass>
>             <relativeSelection>0.002</relativeSelection>
>         </selector>
>     </selector>
>     <accepter>
>         <completePropertyTabuSize>10</completePropertyTabuSize>
>         <completeSolutionTabuSize>1500</completeSolutionTabuSize>
>     </accepter>
>     <forager>
>         <foragerType>MAX_SCORE_OF_ALL</foragerType>
>     </forager>
> </localSearchSolver>
> 
> I am not sure why this occurs and I have also searched the forums/mailing
> list to no avail. I have been through the documentation on the configuration
> file as well as several of the example applications' config files, but fail
> to see what is the cause.
> 
> Thank you in advance!
> 
> Regards,
> De Ville Weppenaar




More information about the rules-users mailing list