Drools Planner renames to OptaPlanner: Announcing www.optaplanner.org
by Geoffrey De Smet
We’re proud to announce the rename Drools Planner to OptaPlanner
starting with version 6.0.0.Beta1. We’re also happy to unveil its new
website: www.optaplanner.org <http://www.optaplanner.org>.
OptaPlanner optimizes business resource usage. Every organization faces
planning problems: provide products or services with a limited set of
constrainedresources (employees, assets, time and money). OptaPlanner
optimizes such planning to do more business with less resources. Typical
use cases include vehicle routing, employee rostering and equipment
scheduling.
OptaPlanner is a lightweight, embeddable planning engine written in
Java™. It helps normal Java™ programmers solve constraint satisfaction
problems efficiently. Under the hood, it combines optimization
heuristics and metaheuristics with very efficient score calculation.
OptaPlanner is open source software, released under the Apache Software
License <http://www.jboss.org/optaplanner/code/license.html>. It is 100%
pure Java™, runs on the JVM and is available in the Maven Central
Repository <http://www.jboss.org/optaplanner/download/download.html>too.
For more information, visit the new website:
http://www.optaplanner.org
Why change the name?
OptaPlanner is the new name for Drools Planner. OptaPlanner is now
standalone, but can still be optionally combined with the Drools rule
engine for a powerful declarative approach to planning optimization.
*
OptaPlanner has graduated from the Drools
<http://www.jboss.org/drools>project to become a top-level JBoss
Community <http://www.jboss.org/>project.
o
OptaPlanner is not a fork of Drools Planner. We simply renamed it.
o
OptaPlanner (the planning engine) joins its siblings Drools (the
rule engine) and jBPM (the workflow engine) in the KIE group.
*
Our commitment to Drools hasn't changed.
o
The efficient Drools rule engine is still the recommended way to
do score calculation.
o
Alternative score calculation options, such as pure Java
calculation (no Drools), also remain fully supported.
How will this affect your business?
From a business point of view, there's little or no change:
*
The mission remains unchanged:
o
We're still 100% committed to put business resource
optimizationin the hands of normal Java developers.
*
The license remains unchanged (Apache Software License 2.0). It's
still the same open source license.
*
The release lifecycle remains unchanged: OptaPlanner is still
released at the same time as Drools and jBPM.
*
Red Hat is considering support subscription offerings for
OptaPlanner as part of its BRMS
<http://www.redhat.com/products/jbossenterprisemiddleware/business-rules/>and
BPM platforms.
o
A Tech Previewof OptaPlanner is targeted for BRMS 6.0.
What has changed?
*
The website has changed tohttp://www.optaplanner.org
*
The distributions artifacts have changed name:
o
Jar names changes:
+
drools-planner-core-*.jar is now optaplanner-core-*.jar
+
drools-planner-benchmark-*.jar is now
optaplanner-benchmark-*.jar
o
Maven identification groupId's and artifactId's changes:
+
groupId org.drools.planner is now org.optaplanner
+
artifactId drools-planner-core is now optaplanner-core
+
artifactId drools-planner-benchmark is now optaplanner-benchmark
o
As usual, for more information see the Upgrade Recipe in the
download zip.
*
The API's namespace has changed. As usual, see the upgrade recipe
<https://github.com/droolsjbpm/optaplanner/blob/master/optaplanner-distrib...>on
how to deal with this efficiently.
o
Starting from 6.1.0.Final, OptaPlanner will have a 100%
backwards compatible API.
*
OptaPlanner gets its own IRC channels on Freenode
<http://freenode.net/>: #optaplanner and #optaplanner-dev
11 years, 9 months
Re: [rules-users] Structuring rules in Drools
by laune
"To figure out a hierarchical structure among rules" isn't a very clear
definition...
Rules (like many other logical entities in some programming environment) are
written in compilation units - DRL file, which imposes one "hierarchical
structure". Then, they are subordinate to "packages" (much like Java
classes), which creates another "hierarchical structure". A rule attribute
such as "agenda-group" establishes another structure, completely independent
from the aforementioned ones, which is effective at runtime, when rules of
one group are firing exclusively.
Another notion of "hierarchical structure" is introduced by the rule feature
"extends", where you can continue the condition of one rule in several other
rules.
As for interaction: there are many ways you can create "interaction", but
typically it will have to be based on facts inserted by one rule and
recognized by other rules. As people might interact without direct
communication, just by sticking chits on a notice board...
--
View this message in context: http://drools.46999.n3.nabble.com/Structuring-rules-in-Drools-tp4022859p4...
Sent from the Drools: User forum mailing list archive at Nabble.com.
11 years, 9 months
Cannot create XmlPullParser
by André Fróes
I've created another post because that was to big and the exception is now
another. Well, now that exception is happening: Cannot create XmlPullParser
I've seen the bug at jira http://jira.codehaus.org/browse/XSTR-659 about it
but I also noticed that the xtream version is the one that they are saying
it is the one with the corrections. As I said early, the mock works fine,
but when I try to run it from my browser, I receive this exception.
SEVERE: Error Rendering View[/protected/crud/planner.xhtml]
javax.el.ELException: /protected/crud/planner.xhtml:
com.thoughtworks.xstream.io.StreamException: Cannot create XmlPullParser
at
com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:88)
at
com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at
com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at
com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at
com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
at
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
at
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at
org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at
org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at com.my.proj.view.listener.LoginFilter.doFilter(LoginFilter.java:40)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at
com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at
com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at
com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at
com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
Caused by: com.thoughtworks.xstream.io.StreamException: Cannot create
XmlPullParser
at
com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:60)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:895)
at
org.drools.planner.config.XmlSolverFactory.configure(XmlSolverFactory.java:87)
at
org.drools.planner.config.XmlSolverFactory.configure(XmlSolverFactory.java:77)
at com.my.proj.planner.plan.ExecutePlan.doPlan(ExecutePlan.java:217)
at com.my.proj.planner.plan.ExecutePlan.planWorkOrders(ExecutePlan.java:206)
at com.my.proj.planner.plan.ExecutePlan.executePlanning(ExecutePlan.java:86)
at
com.my.proj.view.controller.crud.PlannerCrud.runPlanner(PlannerCrud.java:187)
at
com.my.proj.view.controller.crud.PlannerCrud.attributeResourceById(PlannerCrud.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javax.el.BeanELResolver.invokeMethod(BeanELResolver.java:779)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:528)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:257)
at com.sun.el.parser.AstValue.getValue(AstValue.java:134)
at com.sun.el.parser.AstValue.getValue(AstValue.java:183)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
at
org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
at
com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:227)
at
com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:150)
at
com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:85)
... 52 more
WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service()
for servlet Faces Servlet threw exception
com.thoughtworks.xstream.io.StreamException: Cannot create XmlPullParser
at
com.thoughtworks.xstream.io.xml.AbstractXppDriver.createReader(AbstractXppDriver.java:60)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:895)
at
org.drools.planner.config.XmlSolverFactory.configure(XmlSolverFactory.java:87)
at
org.drools.planner.config.XmlSolverFactory.configure(XmlSolverFactory.java:77)
at com.my.proj.planner.plan.ExecutePlan.doPlan(ExecutePlan.java:217)
at com.my.proj.planner.plan.ExecutePlan.planWorkOrders(ExecutePlan.java:206)
at com.my.proj.planner.plan.ExecutePlan.executePlanning(ExecutePlan.java:86)
at
com.my.proj.view.controller.crud.PlannerCrud.runPlanner(PlannerCrud.java:187)
at
com.my.proj.view.controller.crud.PlannerCrud.attributeResourceById(PlannerCrud.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at javax.el.BeanELResolver.invokeMethod(BeanELResolver.java:779)
at javax.el.BeanELResolver.invoke(BeanELResolver.java:528)
at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:257)
at com.sun.el.parser.AstValue.getValue(AstValue.java:134)
at com.sun.el.parser.AstValue.getValue(AstValue.java:183)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
at
org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
at
com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:227)
at
com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:150)
at
com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:85)
at
com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at
com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at
com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at
com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
at
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at
javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
at
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at
org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at
org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at com.my.proj.view.listener.LoginFilter.doFilter(LoginFilter.java:40)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at
com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at
com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at
com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at
com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)
11 years, 9 months
Re: [rules-users] Structuring rules in Drools
by abhinay_agarwal
Hey Sandra,
Basically, if your question is can rules interact, I would say "yes", but
not in the general method like functions do i.e. calling one rule from
another.
Some basic things that can be done to initiate interaction is :
1. Facts inside one rule can be changed such that the next rule's condition
become true and it gets fired.
2. What we can do is we can put rules in different groups i.e. agenda-group
and focus can be set from one group to another.
3. We can provide ordering (salience) to rules. This gives us the control
over order of execution of the rules.
But, though i consider this to be interaction, many of us over here may
disagree with. They are also correct because one rule is totally indepent of
another, unless we control them with some rule attributes.
Regards,
Abhinay
--
View this message in context: http://drools.46999.n3.nabble.com/Structuring-rules-in-Drools-tp4022859p4...
Sent from the Drools: User forum mailing list archive at Nabble.com.
11 years, 9 months