<div dir="ltr">Nevermind, just found the source of the problem :D</div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/2/13 André Fróes <span dir="ltr"><<a href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">In this case should I try another version of planner (snapshot) or is some condition that i'm not fulfilling here? </div>
<div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">2013/2/13 Geoffrey De Smet <span dir="ltr"><<a href="mailto:ge0ffrey.spam@gmail.com" target="_blank">ge0ffrey.spam@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<br>
<div>Op 13-02-13 17:00, André Fróes schreef:<br>
</div><div>
<blockquote type="cite">
<div dir="ltr">Hello, I am getting an NPE when trying to solve a
simple problem with 3 workorder and 3 engineers.
<div>------------</div>
<div>
<div>Exception in thread "main" java.lang.NullPointerException</div>
<div>
<span style="white-space:pre-wrap"> </span>at
java.util.ArrayList.addAll(Unknown Source)</div>
<div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.domain.solution.SolutionDescriptor.getAllFacts(SolutionDescriptor.java:178)</div>
</div>
</div>
</blockquote></div>
Take a look at<br>
<a href="https://github.com/droolsjbpm/drools-planner/blob/5.5.x/drools-planner-core/src/main/java/org/drools/planner/core/domain/solution/SolutionDescriptor.java#L178" target="_blank">https://github.com/droolsjbpm/drools-planner/blob/5.5.x/drools-planner-core/src/main/java/org/drools/planner/core/domain/solution/SolutionDescriptor.java#L178</a><br>
Looks like your Solution implementation doesn't respect the
Solution.getProblemFacts() contract.<br>
<blockquote type="cite"><div><div>
<div dir="ltr">
<div>
<div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.score.director.drools.DroolsScoreDirector.getWorkingFacts(DroolsScoreDirector.java:88)</div>
<div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.score.director.drools.DroolsScoreDirector.resetWorkingMemory(DroolsScoreDirector.java:81)</div>
<div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.score.director.drools.DroolsScoreDirector.setWorkingSolution(DroolsScoreDirector.java:70)</div>
<div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.solver.scope.DefaultSolverScope.setWorkingSolutionFromBestSolution(DefaultSolverScope.java:158)</div>
<div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.solver.DefaultSolver.solvingStarted(DefaultSolver.java:176)</div>
<div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:154)</div>
<div><span style="white-space:pre-wrap"> </span>at
com.swa.planner.snap1.app.SortWorkOrder.main(SortWorkOrder.java:41)</div>
</div>
<div>-----------------</div>
<div><br>
</div>
<div>the rule for it is simple (adapted from
cloudbalancing):</div>
<div><br>
</div>
<div>----------</div>
<div>
<div>rule "requiredWorkTimeTotal"</div>
<div> when</div>
<div> $engineer : Engineer($worktime : worktime )</div>
<div> $requiredEngineerWorktimeTotal : Number(intValue
> $worktime) from accumulate(</div>
<div> WorkOrder(</div>
<div> engineer == $engineer,</div>
<div> $requiredWorktime : requiredWorktime ),</div>
<div> sum($requiredWorktime)</div>
<div> )</div>
<div> then</div>
<div> insertLogical(new
IntConstraintOccurrence("requiredWorkTimeTotal",
ConstraintType.NEGATIVE_HARD,</div>
<div> $requiredEngineerWorktimeTotal.intValue()
- $worktime,</div>
<div> $engineer));</div>
<div>end</div>
<div>----------</div>
<div><br>
</div>
<div>I'm rebuilding the app bit by bit and then
evolve it. The skill is not considered yet to make the
comparison, just worktime. This is the data i'm working with
right now:</div>
<div><br>
</div>
<div>-----------</div>
<div>
<div>List<Engineer> engineerList = new
ArrayList<Engineer>();</div>
<div>engineerList.add(new Engineer(1l, 8, ABC1, "Fabio"));</div>
<div>engineerList.add(new Engineer(2l, 8, ABC2, "Qwert"));</div>
<div>engineerList.add(new Engineer(3l, 8, ABC3, "Trewq"));</div>
<div><br>
</div>
<div>List<WorkOrder> workOrderList = new
ArrayList<WorkOrder>();</div>
<div>workOrderList.add(new WorkOrder(101l, 8, ABC1));</div>
<div>workOrderList.add(new WorkOrder(102L, 8, ABC2));</div>
<div>workOrderList.add(new WorkOrder(103L, 8, ABC3));</div>
<div>-----------</div>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
</div></div><pre>_______________________________________________
rules-users mailing list
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a></pre>
</blockquote>
<br>
</div>
<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>