[rules-users] NPE at distribution [Planner]

Geoffrey De Smet ge0ffrey.spam at gmail.com
Wed Feb 13 11:44:37 EST 2013


Op 13-02-13 17:00, André Fróes schreef:
> Hello, I am getting an NPE when trying to solve a simple problem with 
> 3 workorder and 3 engineers.
> ------------
> Exception in thread "main" java.lang.NullPointerException
> at java.util.ArrayList.addAll(Unknown Source)
> at 
> org.drools.planner.core.domain.solution.SolutionDescriptor.getAllFacts(SolutionDescriptor.java:178)
Take a look at
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)
>         )
>     then
>         insertLogical(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 at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20130213/bdef3f1d/attachment.html 


More information about the rules-users mailing list