[rules-users] RuntimeDroolsException as Solver concludes execution

Geoffrey De Smet ge0ffrey.spam at gmail.com
Thu Apr 22 13:29:03 EDT 2010


Looks like an NPE in your rule.
Maybe maintenanceSlot or something is null.

You should raise an issue with drools-core (drools expert) that it 
should give a better runtime error to show on which line it NPE'ed.

With kind regards,
Geoffrey De Smet


dweppenaar schreef:
> Hi.
> 
> I am experiencing the following exception:
> org.drools.RuntimeDroolsException: Exception executing ReturnValue
> constraint org.drools.rule.ReturnValueRestriction at a5f6c234 :
> java.lang.NullPointerException.
> 
> The rule that is causing the exception to occur is the following:
> 
> rule "spreadOvertime"
> 
>     when
>         $violatingTask :
> MaintenanceTask(eval(maintenanceSlot.getAvailability() == 1), motor != null,
> maintenanceTechnician != null, $overtimeTaskID : id);
> 
>         ArrayList( $numberOfViolations : size ) from collect(
> MaintenanceTask(
>                     id == ($overtimeTaskID + 1) ||
>                     id == ($overtimeTaskID + 2) ||
>                     id == ($overtimeTaskID - 1) ||
>                     id == ($overtimeTaskID - 2),
>                     eval(maintenanceSlot.getAvailability() >= 1) ) );
> 
>     then
>         insertLogical(new IntConstraintOccurrence("spreadOvertime",
> ConstraintType.NEGATIVE_SOFT,
>             $numberOfViolations, $violatingTask, $numberOfViolations));
>         //System.out.println("Rule Fired: spreadOvertime ( number of
> violations:" + $numberOfViolations + " for task " + $violatingTask + ")");
> 
> end
> 
> The purpose of the rule is to spread the closer to normal maintenance
> shifts.
> 
> Just to clarrify what the objects are:
> 
> MaintenanceTask: Consists of a MaintenanceSlot, MaintenanceTechnician and
> Motor
> MaintenanceSlot: Day, Timeslot, Availability and Index
> 
> The 'availability' of a MaintenanceSlot specifies whether it is considered
> Overtime, ProductionTime or Normal Maintenance
> 
> This exception is thrown at the end of solving as the solver (I presume) is
> supposed to return the best solution. The score is calculating and updating
> but at the end of the specified step count, this exception occurs.
> 
> If I comment this rule out, no exception.
> 
> Any help would be appreciated!
> 
> Regards,
> De Ville




More information about the rules-users mailing list