<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    The value of a variable of an entity starts out as null during
    construction heuristics, even if it's not nullable.<br>
    <br>
    The usual trick is to add null safe getters:<br>
    <br>
    public class BedDesignation {<br>
    <br>
    &nbsp;&nbsp; // bed is planning variable<br>
    &nbsp; ...<br>
    &nbsp; public Departement getDepartment() {<br>
    &nbsp;&nbsp;&nbsp;&nbsp; if (bed == null) { return null;}<br>
    &nbsp;&nbsp;&nbsp;&nbsp; return bed.getRoom().getDepartement()<br>
    &nbsp; }<br>
    }<br>
    <br>
    <br>
    <div class="moz-cite-prefix">Op 28-01-13 15:13, Andr&eacute; Fr&oacute;es schreef:<br>
    </div>
    <blockquote
cite="mid:CAC8f_wUiJ9hhA3j1f2GUoA+OKgasvRJRsR78WiP0jckiapk78A@mail.gmail.com"
      type="cite">
      <div dir="ltr">I've implemented it to see how it would work, now I
        got another error:
        <div><br>
        </div>
        <div>---------------</div>
        <div><br>
        </div>
        <div>
          <div>12:10:41.357 [main] INFO &nbsp;o.d.p.core.solver.DefaultSolver
            - Solving started: time spend (302), score (null), new best
            score (null), random seed (0).</div>
          <div>Exception in thread "main" Exception executing
            consequence for rule "requiredCpuPowerTotal" in
            com.swa.planner.domain.rule: java.lang.NullPointerException</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1297)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.planner.core.score.director.drools.DroolsScoreDirector.calculateScore(DroolsScoreDirector.java:177)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.planner.core.solver.scope.DefaultSolverScope.calculateScore(DefaultSolverScope.java:92)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.planner.core.phase.AbstractSolverPhaseScope.calculateScore(AbstractSolverPhaseScope.java:120)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.processMove(DefaultGreedyDecider.java:136)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.doMove(DefaultGreedyDecider.java:110)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.decideNextStep(DefaultGreedyDecider.java:82)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.solve(DefaultGreedyFitSolverPhase.java:65)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:190)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:155)</div>
          <div><span class="" style="white-space:pre"> </span>at
            com.swa.planner.domain.CloudTest.main(CloudTest.java:65)</div>
          <div>Caused by: java.lang.NullPointerException</div>
          <div><span class="" style="white-space:pre"> </span>at
            java.lang.String.&lt;init&gt;(Unknown Source)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.mvel2.util.ErrorUtil.rewriteIfNeeded(ErrorUtil.java:12)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:302)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.mvel2.MVEL.compileExpression(MVEL.java:810)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.base.mvel.MVELCompilationUnit.compile(MVELCompilationUnit.java:435)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:238)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.rule.constraint.MvelConstraint.createMvelConditionEvaluator(MvelConstraint.java:206)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:190)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:157)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:137)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.drools.common.SimpleBeliefSystem.insert(SimpleBeliefSystem.java:38)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.common.TruthMaintenanceSystem.addLogicalDependency(TruthMaintenanceSystem.java:204)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.common.TruthMaintenanceSystem.addLogicalDependency(TruthMaintenanceSystem.java:176)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:231)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:903)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:245)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:210)</div>
          <div><span class="" style="white-space:pre"> </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:205)</div>
          <div><span class="" style="white-space:pre"> </span>at
com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bd.defaultConsequence(Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bd.java:14)</div>
          <div><span class="" style="white-space:pre"> </span>at
            com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bdDefaultConsequenceInvokerGenerated.evaluate(Unknown
            Source)</div>
          <div><span class="" style="white-space:pre"> </span>at
            com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bdDefaultConsequenceInvoker.evaluate(Unknown
            Source)</div>
          <div><span class="" style="white-space:pre"> </span>at
            org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)</div>
          <div><span class="" style="white-space:pre"> </span>... 14
            more</div>
        </div>
        <div><br>
        </div>
        <div>-----------------</div>
        <div><br>
        </div>
        <div style="">this one i have no clue&nbsp;</div>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">2013/1/28 Andr&eacute; Fr&oacute;es <span dir="ltr">&lt;<a
              moz-do-not-send="true" href="mailto:arfmoraes@gmail.com"
              target="_blank">arfmoraes@gmail.com</a>&gt;</span><br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr">
              <div>Hello there, i'm getting this error:</div>
              <div><br>
              </div>
              <div>-------------------</div>
              <div>
                <div>
                  11:26:50.394 [main] INFO
                  &nbsp;o.d.p.core.solver.DefaultSolver - Solving started:
                  time spend (187), score (null), new best score (null),
                  random seed (0).</div>
                <div>Exception in thread "main"
                  java.lang.IllegalStateException: The selectionOrder
                  (DECREASING_DIFFICULTY) can not be used on a
                  PlanningEntity (com.swa.planner.domain.CloudProcess)
                  that has no support for difficulty sorting. Check the
                  @PlanningEntity annotation.</div>
                <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.heuristic.selector.entity.PlanningEntitySelector.validate(PlanningEntitySelector.java:53)</div>
                <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.heuristic.selector.entity.PlanningEntitySelector.phaseStarted(PlanningEntitySelector.java:45)</div>
                <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.selector.GreedyPlanningEntitySelector.phaseStarted(GreedyPlanningEntitySelector.java:41)</div>
                <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.phaseStarted(DefaultGreedyFitSolverPhase.java:111)</div>
                <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.solve(DefaultGreedyFitSolverPhase.java:57)</div>
                <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:190)</div>
                <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:155)</div>
                <div><span style="white-space:pre-wrap"> </span>at
                  com.swa.planner.domain.CloudTest.main(CloudTest.java:51)</div>
                <div>-------------------------</div>
                <div><br>
                </div>
                <div>I know why it is happening though (at least i think
                  so), but will I have to implement the comparator to
                  every planner I do or is there any other way to make
                  it work?</div>
                <div><br>
                </div>
                <div>I'm reproducing the example from the guide, when it
                  passes the drools rules it gives that message. I
                  didn't implement CloudComputerStrengthComparator
                  neither&nbsp;CloudProcessDifficultyComparator, will I have
                  to implement those so this example works?</div>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
rules-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<a class="moz-txt-link-freetext" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>