Op 13-02-13 17:00, André Fróes schreef:
Take a look atHello, I am getting an NPE when trying to solve a simple problem with 3 workorder and 3 engineers.------------Exception in thread "main" java.lang.NullPointerExceptionat java.util.ArrayList.addAll(Unknown Source)at org.drools.planner.core.domain.solution.SolutionDescriptor.getAllFacts(SolutionDescriptor.java:178)
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
Looks like your Solution implementation doesn't respect the Solution.getProblemFacts() contract.
at org.drools.planner.core.score.director.drools.DroolsScoreDirector.getWorkingFacts(DroolsScoreDirector.java:88)at org.drools.planner.core.score.director.drools.DroolsScoreDirector.resetWorkingMemory(DroolsScoreDirector.java:81)at org.drools.planner.core.score.director.drools.DroolsScoreDirector.setWorkingSolution(DroolsScoreDirector.java:70)at org.drools.planner.core.solver.scope.DefaultSolverScope.setWorkingSolutionFromBestSolution(DefaultSolverScope.java:158)at org.drools.planner.core.solver.DefaultSolver.solvingStarted(DefaultSolver.java:176)at org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:154)at com.swa.planner.snap1.app.SortWorkOrder.main(SortWorkOrder.java:41)-----------------
the rule for it is simple (adapted from cloudbalancing):
----------rule "requiredWorkTimeTotal"when$engineer : Engineer($worktime : worktime )$requiredEngineerWorktimeTotal : Number(intValue > $worktime) from accumulate(WorkOrder(engineer == $engineer,$requiredWorktime : requiredWorktime ),sum($requiredWorktime))theninsertLogical(new IntConstraintOccurrence("requiredWorkTimeTotal", ConstraintType.NEGATIVE_HARD,$requiredEngineerWorktimeTotal.intValue() - $worktime,$engineer));end----------
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:
-----------List<Engineer> engineerList = new ArrayList<Engineer>();engineerList.add(new Engineer(1l, 8, ABC1, "Fabio"));engineerList.add(new Engineer(2l, 8, ABC2, "Qwert"));engineerList.add(new Engineer(3l, 8, ABC3, "Trewq"));
List<WorkOrder> workOrderList = new ArrayList<WorkOrder>();workOrderList.add(new WorkOrder(101l, 8, ABC1));workOrderList.add(new WorkOrder(102L, 8, ABC2));workOrderList.add(new WorkOrder(103L, 8, ABC3));-----------
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users