<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.defaultConsequence(Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.java:14)
    <span class="" style="white-space:pre"><br>
      What's in the then side of Rule_requiredCpuPowerTotal ?<br>
      <br>
    </span>
    <div class="moz-cite-prefix">Op 28-01-13 16:00, Andr&eacute; Fr&oacute;es schreef:<br>
    </div>
    <blockquote
cite="mid:CAC8f_wUn5_OW80-RWAR5G=DuukD9p1=RZniOgDjceBD5mB-9PQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">Even adding that, the error still
        <div><br>
        </div>
        <div>--------------</div>
        <div>
          <div>12:57:41.050 [main] INFO &nbsp;o.d.p.core.solver.DefaultSolver
            - Solving started: time spend (152), 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:67)</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_0a10acbeca924206a3becab080617987.defaultConsequence(Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.java:14)</div>
          <div><span class="" style="white-space:pre"> </span>at
            com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987DefaultConsequenceInvokerGenerated.evaluate(Unknown
            Source)</div>
          <div><span class="" style="white-space:pre"> </span>at
            com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987DefaultConsequenceInvoker.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="">I added to cloudprocess computer variable:</div>
        <div style="">--------------</div>
        <div style="">
          <div>package com.swa.planner.domain;</div>
          <div><br>
          </div>
          <div>import
            org.drools.planner.api.domain.entity.PlanningEntity;</div>
          <div>import
            org.drools.planner.api.domain.variable.PlanningVariable;</div>
          <div>import org.drools.planner.api.domain.variable.ValueRange;</div>
          <div>import
            org.drools.planner.api.domain.variable.ValueRangeType;</div>
          <div>import
            org.drools.planner.examples.common.domain.AbstractPersistable;</div>
          <div><br>
          </div>
          <div>@PlanningEntity(difficultyComparatorClass =
            CloudProcessDifficultyComparator.class)</div>
          <div>public class CloudProcess extends AbstractPersistable{</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>private
            int requiredCpuPower;</div>
          <div><span class="" style="white-space:pre"> </span>private
            int requiredMemory;</div>
          <div><span class="" style="white-space:pre"> </span>private
            int requiredNetworkBandwidth;</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>private
            CloudComputer computer;</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>public
            CloudProcess(long id, int requiredCpuPower, int
            requiredMemory,</div>
          <div><span class="" style="white-space:pre"> </span>int
            requiredNetworkBandwidth) {</div>
          <div><span class="" style="white-space:pre"> </span>super();</div>
          <div><span class="" style="white-space:pre"> </span>setId(id);</div>
          <div><span class="" style="white-space:pre"> </span>this.requiredCpuPower
            = requiredCpuPower;</div>
          <div><span class="" style="white-space:pre"> </span>this.requiredMemory
            = requiredMemory;</div>
          <div><span class="" style="white-space:pre"> </span>this.requiredNetworkBandwidth
            = requiredNetworkBandwidth;</div>
          <div><span class="" style="white-space:pre"> </span>}</div>
          <div><span class="" style="white-space:pre"> </span></div>
          <div><span class="" style="white-space:pre"> </span>public
            CloudProcess() {<span class="" style="white-space:pre"> </span>}</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>public
            int getRequiredCpuPower() {</div>
          <div><span class="" style="white-space:pre"> </span>return
            requiredCpuPower;</div>
          <div><span class="" style="white-space:pre"> </span>}</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>public
            void setRequiredCpuPower(int requiredCpuPower) {</div>
          <div><span class="" style="white-space:pre"> </span>this.requiredCpuPower
            = requiredCpuPower;</div>
          <div><span class="" style="white-space:pre"> </span>}</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>public
            int getRequiredMemory() {</div>
          <div><span class="" style="white-space:pre"> </span>return
            requiredMemory;</div>
          <div><span class="" style="white-space:pre"> </span>}</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>public
            void setRequiredMemory(int requiredMemory) {</div>
          <div><span class="" style="white-space:pre"> </span>this.requiredMemory
            = requiredMemory;</div>
          <div><span class="" style="white-space:pre"> </span>}</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>public
            int getRequiredNetworkBandwidth() {</div>
          <div><span class="" style="white-space:pre"> </span>return
            requiredNetworkBandwidth;</div>
          <div><span class="" style="white-space:pre"> </span>}</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>public
            void setRequiredNetworkBandwidth(int
            requiredNetworkBandwidth) {</div>
          <div><span class="" style="white-space:pre"> </span>this.requiredNetworkBandwidth
            = requiredNetworkBandwidth;</div>
          <div><span class="" style="white-space:pre"> </span>}</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>public
            String getLabel() {</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; return "Process " + id;</div>
          <div>&nbsp; &nbsp; }</div>
          <div><span class="" style="white-space:pre"> </span></div>
          <div><span class="" style="white-space:pre"> </span>@PlanningVariable(strengthComparatorClass
            = CloudComputerStrengthComparator.class)</div>
          <div><span class="" style="white-space:pre"> </span>@ValueRange(type
            = ValueRangeType.FROM_SOLUTION_PROPERTY, solutionProperty =
            "computerList")</div>
          <div><span class="" style="white-space:pre"> </span>public
            CloudComputer getComputer() {</div>
          <div><span class="" style="white-space:pre"> </span>if
            (computer == null) { return null; }</div>
          <div><span class="" style="white-space:pre"> </span>return
            computer;</div>
          <div><span class="" style="white-space:pre"> </span>}</div>
          <div><br>
          </div>
          <div><span class="" style="white-space:pre"> </span>public
            void setComputer(CloudComputer computer) {</div>
          <div><span class="" style="white-space:pre"> </span>this.computer
            = computer;</div>
          <div><span class="" style="white-space:pre"> </span>}</div>
          <div><span class="" style="white-space:pre"> </span></div>
          <div><span class="" style="white-space:pre"> </span>public
            CloudProcess clone(){</div>
          <div><span class="" style="white-space:pre"> </span>CloudProcess
            clone = new CloudProcess();</div>
          <div><span class="" style="white-space:pre"> </span><a
              moz-do-not-send="true" href="http://clone.id">clone.id</a>
            = id;</div>
          <div><span class="" style="white-space:pre"> </span>clone.requiredCpuPower
            = requiredCpuPower;</div>
          <div><span class="" style="white-space:pre"> </span>clone.requiredMemory
            = requiredMemory;</div>
          <div><span class="" style="white-space:pre"> </span>clone.requiredNetworkBandwidth
            = requiredNetworkBandwidth;</div>
          <div><span class="" style="white-space:pre"> </span>clone.computer
            = computer;</div>
          <div><span class="" style="white-space:pre"> </span>return
            clone;</div>
          <div><span class="" style="white-space:pre"> </span>}</div>
          <div><span class="" style="white-space:pre"> </span></div>
          <div><span class="" style="white-space:pre"> </span>public
            int getRequiredMultiplicand() {</div>
          <div>&nbsp; &nbsp; &nbsp; &nbsp; return requiredCpuPower * requiredMemory *
            requiredNetworkBandwidth;</div>
          <div>&nbsp; &nbsp; }</div>
          <div>}</div>
          <div>--------------<br>
          </div>
          <div><br>
          </div>
          <div style="">this is what i'm doing to run the example:</div>
          <div style=""><br>
          </div>
          <div style="">-------------</div>
          <div style="">
            <div>package com.swa.planner.domain;</div>
            <div><br>
            </div>
            <div>import java.io.ByteArrayInputStream;</div>
            <div>import java.util.ArrayList;</div>
            <div>import java.util.List;</div>
            <div><br>
            </div>
            <div>import org.drools.planner.config.SolverFactory;</div>
            <div>import org.drools.planner.config.XmlSolverFactory;</div>
            <div>import org.drools.planner.core.Solver;</div>
            <div><br>
            </div>
            <div>public class CloudTest {</div>
            <div><span class="" style="white-space:pre"> </span>public
              static void main(String[] args) {</div>
            <div><span class="" style="white-space:pre"> </span>String
              t = "&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+
              "&lt;solver&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ "
&nbsp;&lt;solutionClass&gt;com.swa.planner.domain.CloudBalance&lt;/solutionClass&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ "
&nbsp;&lt;planningEntityClass&gt;com.swa.planner.domain.CloudProcess&lt;/planningEntityClass&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ "
              &nbsp;&lt;scoreDirectorFactory&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp;
              &nbsp;&lt;scoreDefinitionType&gt;HARD_AND_SOFT&lt;/scoreDefinitionType&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp;
&nbsp;&lt;scoreDrl&gt;/com/swa/planner/domain/rule/cloudBalancingScoreRules.drl&lt;/scoreDrl&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ "
              &nbsp;&lt;/scoreDirectorFactory&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ "
              &nbsp;&lt;termination&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp;
              &nbsp;&lt;maximumSecondsSpend&gt;120&lt;/maximumSecondsSpend&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ "
              &nbsp;&lt;/termination&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ "
              &nbsp;&lt;constructionHeuristic&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp;
&nbsp;&lt;constructionHeuristicType&gt;FIRST_FIT_DECREASING&lt;/constructionHeuristicType&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp;
&nbsp;&lt;constructionHeuristicPickEarlyType&gt;FIRST_LAST_STEP_SCORE_EQUAL_OR_IMPROVING&lt;/constructionHeuristicPickEarlyType&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ "
              &nbsp;&lt;/constructionHeuristic&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ "
              &nbsp;&lt;localSearch&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp;
              &nbsp;&lt;acceptor&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp; &nbsp;
&nbsp;&lt;planningEntityTabuSize&gt;7&lt;/planningEntityTabuSize&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp;
              &nbsp;&lt;/acceptor&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp;
              &nbsp;&lt;forager&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp; &nbsp;
&nbsp;&lt;minimalAcceptedSelection&gt;1000&lt;/minimalAcceptedSelection&gt;"</div>
            <div><span class="" style="white-space:pre"> </span>+ " &nbsp;
              &nbsp;&lt;/forager&gt;"&nbsp;</div>
            <div><span class="" style="white-space:pre"> </span>+ "
              &nbsp;&lt;/localSearch&gt;"&nbsp;</div>
            <div><span class="" style="white-space:pre"> </span>+
              "&lt;/solver&gt;";</div>
            <div><br>
            </div>
            <div><span class="" style="white-space:pre"> </span>byte
              b[] = t.getBytes();</div>
            <div><span class="" style="white-space:pre"> </span>ByteArrayInputStream
              bt = new ByteArrayInputStream(b);</div>
            <div><span class="" style="white-space:pre"> </span>SolverFactory
              solverFactory = new XmlSolverFactory().configure(bt);</div>
            <div><span class="" style="white-space:pre"> </span>Solver
              solver = solverFactory.buildSolver();</div>
            <div><br>
            </div>
            <div><span class="" style="white-space:pre"> </span>List&lt;CloudComputer&gt;
              computerList = new ArrayList&lt;CloudComputer&gt;();</div>
            <div><span class="" style="white-space:pre"> </span>computerList.add(new
              CloudComputer(1L, "Computador 1", 3, 2, 2, 110));</div>
            <div><span class="" style="white-space:pre"> </span>computerList.add(new
              CloudComputer(2L, "Computador 2", 12, 8, 3, 400));</div>
            <div><span class="" style="white-space:pre"> </span>computerList.add(new
              CloudComputer(3L, "Computador 3", 6, 6, 4, 300));</div>
            <div><span class="" style="white-space:pre"> </span>computerList.add(new
              CloudComputer(4L, "Computador 4", 18, 12, 8, 1000));</div>
            <div><span class="" style="white-space:pre"> </span>computerList.add(new
              CloudComputer(5L, "Computador 5", 8, 4, 6, 800));</div>
            <div><span class="" style="white-space:pre"> </span>computerList.add(new
              CloudComputer(6L, "Computador 6", 9, 7, 9, 1000));</div>
            <div><br>
            </div>
            <div><span class="" style="white-space:pre"> </span>List&lt;CloudProcess&gt;
              processList = new ArrayList&lt;CloudProcess&gt;();</div>
            <div><span class="" style="white-space:pre"> </span>processList.add(new
              CloudProcess(11L, 2, 2, 2));</div>
            <div><span class="" style="white-space:pre"> </span>processList.add(new
              CloudProcess(12L, 4, 4, 2));</div>
            <div><span class="" style="white-space:pre"> </span>processList.add(new
              CloudProcess(13L, 1, 1, 3));</div>
            <div><span class="" style="white-space:pre"> </span>processList.add(new
              CloudProcess(14L, 7, 3, 5));</div>
            <div><span class="" style="white-space:pre"> </span>processList.add(new
              CloudProcess(15L, 5, 8, 3));</div>
            <div><span class="" style="white-space:pre"> </span>processList.add(new
              CloudProcess(16L, 9, 2, 2));</div>
            <div><span class="" style="white-space:pre"> </span>processList.add(new
              CloudProcess(17L, 6, 5, 6));</div>
            <div><br>
            </div>
            <div><span class="" style="white-space:pre"> </span>CloudBalance
              cloudBalance = new CloudBalance();</div>
            <div><span class="" style="white-space:pre"> </span>cloudBalance.setId(0L);</div>
            <div><span class="" style="white-space:pre"> </span>cloudBalance.setComputerList(computerList);</div>
            <div><span class="" style="white-space:pre"> </span>cloudBalance.setProcessList(processList);</div>
            <div><br>
            </div>
            <div><span class="" style="white-space:pre"> </span>//
              Solve the problem</div>
            <div><span class="" style="white-space:pre"> </span>solver.setPlanningProblem(cloudBalance);</div>
            <div><span class="" style="white-space:pre"> </span>solver.solve();</div>
            <div><span class="" style="white-space:pre"> </span>CloudBalance
              solvedCloudBalance = (CloudBalance)
              solver.getBestSolution();</div>
            <div><br>
            </div>
            <div><span class="" style="white-space:pre"> </span>//
              Display the result</div>
            <div><span class="" style="white-space:pre"> </span>System.out.println("\nSolved
              cloudBalance with 5 computers and 6 processes:\n"</div>
            <div><span class="" style="white-space:pre"> </span>+
              toDisplayString(solvedCloudBalance));</div>
            <div><span class="" style="white-space:pre"> </span>}</div>
            <div><br>
            </div>
            <div><span class="" style="white-space:pre"> </span>public
              static String toDisplayString(CloudBalance cloudBalance) {</div>
            <div><span class="" style="white-space:pre"> </span>StringBuilder
              displayString = new StringBuilder();</div>
            <div><span class="" style="white-space:pre"> </span>for
              (CloudProcess process : cloudBalance.getProcessList()) {</div>
            <div><span class="" style="white-space:pre"> </span>CloudComputer
              computer = process.getComputer();</div>
            <div><span class="" style="white-space:pre"> </span>displayString.append("
              &nbsp;").append(process.getLabel())</div>
            <div><span class="" style="white-space:pre"> </span>.append("
              -&gt; ")</div>
            <div><span class="" style="white-space:pre"> </span>.append(computer
              == null ? null : computer.getLabel())</div>
            <div><span class="" style="white-space:pre"> </span>.append("\n");</div>
            <div><span class="" style="white-space:pre"> </span>}</div>
            <div><span class="" style="white-space:pre"> </span>return
              displayString.toString();</div>
            <div><span class="" style="white-space:pre"> </span>}</div>
            <div>}</div>
            <div><br>
            </div>
          </div>
          <div style="">-------------</div>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">2013/1/28 Geoffrey De Smet <span
            dir="ltr">&lt;<a moz-do-not-send="true"
              href="mailto:ge0ffrey.spam@gmail.com" target="_blank">ge0ffrey.spam@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 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>Op 28-01-13 15:13, Andr&eacute; Fr&oacute;es schreef:<br>
              </div>
              <blockquote 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 style="white-space:pre-wrap"> </span>at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1297)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.score.director.drools.DroolsScoreDirector.calculateScore(DroolsScoreDirector.java:177)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.solver.scope.DefaultSolverScope.calculateScore(DefaultSolverScope.java:92)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.phase.AbstractSolverPhaseScope.calculateScore(AbstractSolverPhaseScope.java:120)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.processMove(DefaultGreedyDecider.java:136)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.doMove(DefaultGreedyDecider.java:110)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.decider.DefaultGreedyDecider.decideNextStep(DefaultGreedyDecider.java:82)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.planner.core.constructionheuristic.greedyFit.DefaultGreedyFitSolverPhase.solve(DefaultGreedyFitSolverPhase.java:65)</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:65)</div>
                    <div>Caused by: java.lang.NullPointerException</div>
                    <div><span style="white-space:pre-wrap"> </span>at
                      java.lang.String.&lt;init&gt;(Unknown Source)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.mvel2.util.ErrorUtil.rewriteIfNeeded(ErrorUtil.java:12)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.mvel2.compiler.ExpressionCompiler._compile(ExpressionCompiler.java:302)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.mvel2.compiler.ExpressionCompiler.compile(ExpressionCompiler.java:62)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
                      org.mvel2.MVEL.compileExpression(MVEL.java:810)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.base.mvel.MVELCompilationUnit.compile(MVELCompilationUnit.java:435)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.base.mvel.MVELCompilationUnit.getCompiledExpression(MVELCompilationUnit.java:238)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.rule.constraint.MvelConstraint.createMvelConditionEvaluator(MvelConstraint.java:206)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:190)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.rule.constraint.MvelConstraint.isAllowed(MvelConstraint.java:157)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:137)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.SimpleBeliefSystem.insert(SimpleBeliefSystem.java:38)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.TruthMaintenanceSystem.addLogicalDependency(TruthMaintenanceSystem.java:204)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.TruthMaintenanceSystem.addLogicalDependency(TruthMaintenanceSystem.java:176)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:231)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:903)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:245)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:210)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.base.DefaultKnowledgeHelper.insertLogical(DefaultKnowledgeHelper.java:205)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bd.defaultConsequence(Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bd.java:14)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
                      com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bdDefaultConsequenceInvokerGenerated.evaluate(Unknown

                      Source)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
                      com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_d2d9e4332c804bacac7861ac867eb4bdDefaultConsequenceInvoker.evaluate(Unknown

                      Source)</div>
                    <div><span style="white-space:pre-wrap"> </span>at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)</div>
                    <div><span style="white-space:pre-wrap"> </span>...
                      14 more</div>
                  </div>
                  <div><br>
                  </div>
                  <div>-----------------</div>
                  <div><br>
                  </div>
                  <div>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></fieldset>
                <br>
                <pre>_______________________________________________
rules-users mailing list
<a moz-do-not-send="true" href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>
<a moz-do-not-send="true" 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 moz-do-not-send="true"
              href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
            <a moz-do-not-send="true"
              href="https://lists.jboss.org/mailman/listinfo/rules-users"
              target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
            <br>
          </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>