<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
We'll need to know the real exception in order to reproduce the
problem here and fix the eating issue.<br>
So let us know the real exception, even if it's a simple typo.<br>
<blockquote type="cite">put a debug breakpoint here to figure out
what the real exception is:<br>
<span style="white-space:pre-wrap"></span>
org.mvel2.util.ErrorUtil.rewriteIfNeeded(ErrorUtil.java:12)</blockquote>
<br>
<div class="moz-cite-prefix">Op 28-01-13 17:08, André Fróes schreef:<br>
</div>
<blockquote
cite="mid:CAC8f_wVaxyjYVj-YtfhsdVYgvJL3MUnHDy-HRU2oHRZS+6_L2Q@mail.gmail.com"
type="cite">
<div dir="ltr">I'm sending a screenshot of my libs, all from the
bundle downloaded from site. Also sending the full proj if u
want to analyze.
<div><br>
</div>
<div><img src="cid:part1.00040102.03070701@gmail.com"
alt="Imagem inline 1" height="547" width="747"><br>
</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/1/28 Geoffrey De Smet <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:ge0ffrey.spam@gmail.com" target="_blank">ge0ffrey.spam@gmail.com</a>></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"> Which mvel2 jar
version?<br>
<br>
Provided that the mvel version is correct, it looks like
the real exception gets eaten...<br>
<blockquote type="cite">
<div>Caused by: java.lang.NullPointerException</div>
<div><span style="white-space:pre-wrap"> </span>at
java.lang.String.<init>(Unknown Source)</div>
<div><span style="white-space:pre-wrap"> </span>at
org.mvel2.util.ErrorUtil.rewriteIfNeeded(ErrorUtil.java:12)</div>
</blockquote>
If that's true, we need to open a jira. Pinging Mario on
this.<br>
<br>
In any case, the exception message should be much clearer
as to what's the problem is.<br>
<br>
<div>Op 28-01-13 16:51, André Fróes schreef:<br>
</div>
<blockquote type="cite">
<div dir="ltr">5.5.0.Final both</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/1/28 Geoffrey De Smet <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:ge0ffrey.spam@gmail.com"
target="_blank">ge0ffrey.spam@gmail.com</a>></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"> Which
version of planner (drools-planner-core) and
drools (drools-core, drools-compiler)?<br>
<div>Op 28-01-13 16:40, André Fróes schreef:<br>
</div>
<div>
<div>
<blockquote type="cite">
<div dir="ltr">I'm comparing both the
example and my implementation, can't see
anything different from each other
except that example uses that
CloudBalancingGenerator. Even the drl
rule remains the same, i wrote it and
then fixed the errors until reach that
point.</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/1/28 André
Fróes <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:arfmoraes@gmail.com"
target="_blank">arfmoraes@gmail.com</a>></span><br>
<blockquote class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">this is the full drl
file:
<div><br>
</div>
<div>------------</div>
<div><br>
</div>
<div>
<div>package
com.swa.planner.domain.rule;</div>
<div><br>
</div>
<div>import
org.drools.planner.core.score.buildin.hardandsoft.HardAndSoftScoreHolder;</div>
<div>import
org.drools.planner.core.score.constraint.IntConstraintOccurrence;</div>
<div>import
org.drools.planner.core.score.constraint.ConstraintType;</div>
<div><br>
</div>
<div>import
com.swa.planner.domain.CloudBalance;</div>
<div>import
com.swa.planner.domain.CloudComputer;</div>
<div>import
com.swa.planner.domain.CloudProcess;</div>
<div><br>
</div>
<div>global
HardAndSoftScoreHolder
scoreHolder;</div>
<div><br>
</div>
<div>rule
"requiredCpuPowerTotal"</div>
<div><span
style="white-space:pre-wrap">
</span>when</div>
<div><span
style="white-space:pre-wrap">
</span>$computer :
CloudComputer($cpuPower :
cpuPower)</div>
<div><span
style="white-space:pre-wrap">
</span>$requiredCpuPowerTotal
: Number(intValue >
$cpuPower) from accumulate(</div>
<div><span
style="white-space:pre-wrap">
</span>CloudProcess (</div>
<div><span
style="white-space:pre-wrap">
</span>computer == $computer, </div>
<div><span
style="white-space:pre-wrap">
</span>$requiredCpuPower :
requiredCpuPower),</div>
<div><span
style="white-space:pre-wrap">
</span>sum($requiredCpuPower)</div>
<div><span
style="white-space:pre-wrap">
</span>)</div>
<div><span
style="white-space:pre-wrap">
</span>then</div>
<div><span
style="white-space:pre-wrap">
</span>insertLogical(new
IntConstraintOccurrence("requiredCpuPowerTotal",
ConstraintType.NEGATIVE_HARD,</div>
<div><span
style="white-space:pre-wrap">
</span>$requiredCpuPowerTotal.intValue()
- $cpuPower,</div>
<div><span
style="white-space:pre-wrap">
</span>$computer));</div>
<div>end</div>
<div><br>
</div>
<div>rule "requiredMemoryTotal"</div>
<div><span
style="white-space:pre-wrap">
</span>when</div>
<div><span
style="white-space:pre-wrap">
</span>$computer :
CloudComputer($memory :
memory)</div>
<div><span
style="white-space:pre-wrap">
</span>$requiredMemoryTotal :
Number(intValue > $memory)
from accumulate(</div>
<div><span
style="white-space:pre-wrap">
</span>CloudProcess ( </div>
<div><span
style="white-space:pre-wrap">
</span>computer == $computer, </div>
<div><span
style="white-space:pre-wrap">
</span>$requiredMemory :
requiredMemory),</div>
<div><span
style="white-space:pre-wrap">
</span>sum($requiredMemory)</div>
<div><span
style="white-space:pre-wrap">
</span>)</div>
<div><span
style="white-space:pre-wrap">
</span>then</div>
<div><span
style="white-space:pre-wrap">
</span>insertLogical(new
IntConstraintOccurrence("requiredMemoryTotal",
ConstraintType.NEGATIVE_HARD,</div>
<div><span
style="white-space:pre-wrap">
</span>$requiredMemoryTotal.intValue()
- $memory, </div>
<div><span
style="white-space:pre-wrap">
</span>$computer));</div>
<div>end</div>
<div><br>
</div>
<div>rule
"requiredNetworkBandwidth"</div>
<div><span
style="white-space:pre-wrap">
</span>when</div>
<div><span
style="white-space:pre-wrap">
</span>$computer :
CloudComputer($networkBandwidth
: networkBandwidth)</div>
<div><span
style="white-space:pre-wrap">
</span>$requiredNetworkBandwidthTotal
: Number(intValue >
$networkBandwidth) from
accumulate(</div>
<div><span
style="white-space:pre-wrap">
</span>CloudProcess (</div>
<div><span
style="white-space:pre-wrap">
</span>computer == $computer,</div>
<div><span
style="white-space:pre-wrap">
</span>$requiredNetworkBandwidth
: requiredNetworkBandwidth)</div>
<div><span
style="white-space:pre-wrap">
</span>sum($requiredNetworkBandwidth)</div>
<div><span
style="white-space:pre-wrap">
</span>)</div>
<div><span
style="white-space:pre-wrap">
</span>then</div>
<div> <span
style="white-space:pre-wrap">
</span>insertLogical(new
IntConstraintOccurrence("requiredNetworkBandwidth",
ConstraintType.NEGATIVE_HARD, </div>
<div><span
style="white-space:pre-wrap">
</span>$requiredNetworkBandwidthTotal.intValue()
- $networkBandwidth, </div>
<div><span
style="white-space:pre-wrap">
</span>$computer));</div>
<div>end</div>
<div><br>
</div>
<div>rule "hardConstraintBroken"</div>
<div><span
style="white-space:pre-wrap">
</span>salience -1</div>
<div> <span
style="white-space:pre-wrap">
</span>when</div>
<div><span
style="white-space:pre-wrap">
</span>$hardTotal : Number()
from accumulate(</div>
<div><span
style="white-space:pre-wrap">
</span>IntConstraintOccurrence(constraintType
==
ConstraintType.NEGATIVE_HARD,
$weight : weight)</div>
<div><span
style="white-space:pre-wrap">
</span>sum($weight)</div>
<div><span
style="white-space:pre-wrap">
</span>)</div>
<div><span
style="white-space:pre-wrap">
</span>then</div>
<div><span
style="white-space:pre-wrap">
</span>scoreHolder.setHardConstraintsBroken($hardTotal.intValue());</div>
<div>end</div>
<div><br>
</div>
<div><br>
</div>
<div>// Soft constraint</div>
<div><br>
</div>
<div>rule "computerCost"</div>
<div><span
style="white-space:pre-wrap">
</span>when</div>
<div><span
style="white-space:pre-wrap">
</span>$computer :
CloudComputer($cost : cost)</div>
<div><span
style="white-space:pre-wrap">
</span>exists
CloudProcess(computer ==
$computer)</div>
<div><span
style="white-space:pre-wrap">
</span>then</div>
<div><span
style="white-space:pre-wrap">
</span>insertLogical(new
IntConstraintOccurrence("computerCost",
ConstraintType.NEGATIVE_SOFT,</div>
<div><span
style="white-space:pre-wrap">
</span>$cost,</div>
<div><span
style="white-space:pre-wrap">
</span>$computer));</div>
<div>end</div>
<div><br>
</div>
<div>rule "softConstraintBroken"</div>
<div><span
style="white-space:pre-wrap">
</span>salience -1</div>
<div><span
style="white-space:pre-wrap">
</span>when</div>
<div><span
style="white-space:pre-wrap">
</span>$softTotal : Number()
from accumulate(</div>
<div><span
style="white-space:pre-wrap">
</span>IntConstraintOccurrence(ConstraintType
==
ConstraintType.NEGATIVE_SOFT,
$weight : weight)</div>
<div><span
style="white-space:pre-wrap">
</span>sum($weight)</div>
<div><span
style="white-space:pre-wrap">
</span>)</div>
<div><span
style="white-space:pre-wrap">
</span>then</div>
<div><span
style="white-space:pre-wrap">
</span>scoreHolder.setHardConstraintsBroken($softTotal.intValue());</div>
<div>end</div>
</div>
</div>
<div>
<div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/1/28
Geoffrey De Smet <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:ge0ffrey.spam@gmail.com"
target="_blank">ge0ffrey.spam@gmail.com</a>></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">
com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.defaultConsequence(Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.java:14)
<span
style="white-space:pre-wrap"><br>
What's in the then
side of
Rule_requiredCpuPowerTotal
?<br>
<br>
</span>
<div>Op 28-01-13 16:00,
André Fróes schreef:<br>
</div>
<div>
<div>
<blockquote
type="cite">
<div dir="ltr">Even
adding that, the
error still
<div><br>
</div>
<div>--------------</div>
<div>
<div>12:57:41.050
[main] INFO
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
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:67)</div>
<div>Caused
by:
java.lang.NullPointerException</div>
<div><span
style="white-space:pre-wrap">
</span>at
java.lang.String.<init>(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_0a10acbeca924206a3becab080617987.defaultConsequence(Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987.java:14)</div>
<div><span
style="white-space:pre-wrap">
</span>at
com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987DefaultConsequenceInvokerGenerated.evaluate(Unknown
Source)</div>
<div><span
style="white-space:pre-wrap">
</span>at
com.swa.planner.domain.rule.Rule_requiredCpuPowerTotal_0a10acbeca924206a3becab080617987DefaultConsequenceInvoker.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>I added to
cloudprocess
computer
variable:</div>
<div>--------------</div>
<div>
<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
style="white-space:pre-wrap">
</span>private
int
requiredCpuPower;</div>
<div><span
style="white-space:pre-wrap">
</span>private
int
requiredMemory;</div>
<div><span
style="white-space:pre-wrap">
</span>private
int
requiredNetworkBandwidth;</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>private
CloudComputer
computer;</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>public
CloudProcess(long
id, int
requiredCpuPower,
int
requiredMemory,</div>
<div><span
style="white-space:pre-wrap">
</span>int
requiredNetworkBandwidth)
{</div>
<div><span
style="white-space:pre-wrap">
</span>super();</div>
<div><span
style="white-space:pre-wrap">
</span>setId(id);</div>
<div><span
style="white-space:pre-wrap">
</span>this.requiredCpuPower
=
requiredCpuPower;</div>
<div><span
style="white-space:pre-wrap">
</span>this.requiredMemory
=
requiredMemory;</div>
<div><span
style="white-space:pre-wrap">
</span>this.requiredNetworkBandwidth
=
requiredNetworkBandwidth;</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><span
style="white-space:pre-wrap">
</span></div>
<div><span
style="white-space:pre-wrap">
</span>public
CloudProcess()
{<span
style="white-space:pre-wrap">
</span>}</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>public
int
getRequiredCpuPower()
{</div>
<div><span
style="white-space:pre-wrap">
</span>return
requiredCpuPower;</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>public
void
setRequiredCpuPower(int
requiredCpuPower)
{</div>
<div><span
style="white-space:pre-wrap">
</span>this.requiredCpuPower
=
requiredCpuPower;</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>public
int
getRequiredMemory()
{</div>
<div><span
style="white-space:pre-wrap">
</span>return
requiredMemory;</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>public
void
setRequiredMemory(int
requiredMemory)
{</div>
<div><span
style="white-space:pre-wrap">
</span>this.requiredMemory
=
requiredMemory;</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>public
int
getRequiredNetworkBandwidth()
{</div>
<div><span
style="white-space:pre-wrap">
</span>return
requiredNetworkBandwidth;</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>public
void
setRequiredNetworkBandwidth(int
requiredNetworkBandwidth)
{</div>
<div><span
style="white-space:pre-wrap">
</span>this.requiredNetworkBandwidth
=
requiredNetworkBandwidth;</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>public
String
getLabel() {</div>
<div>
return
"Process " +
id;</div>
<div> }</div>
<div><span
style="white-space:pre-wrap">
</span></div>
<div><span
style="white-space:pre-wrap">
</span>@PlanningVariable(strengthComparatorClass
=
CloudComputerStrengthComparator.class)</div>
<div><span
style="white-space:pre-wrap">
</span>@ValueRange(type
=
ValueRangeType.FROM_SOLUTION_PROPERTY,
solutionProperty
=
"computerList")</div>
<div><span
style="white-space:pre-wrap">
</span>public
CloudComputer
getComputer()
{</div>
<div><span
style="white-space:pre-wrap">
</span>if
(computer ==
null) { return
null; }</div>
<div><span
style="white-space:pre-wrap">
</span>return
computer;</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>public
void
setComputer(CloudComputer
computer) {</div>
<div><span
style="white-space:pre-wrap">
</span>this.computer
= computer;</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><span
style="white-space:pre-wrap">
</span></div>
<div><span
style="white-space:pre-wrap">
</span>public
CloudProcess
clone(){</div>
<div><span
style="white-space:pre-wrap">
</span>CloudProcess
clone = new
CloudProcess();</div>
<div><span
style="white-space:pre-wrap">
</span><a
moz-do-not-send="true"
href="http://clone.id" target="_blank">clone.id</a> = id;</div>
<div><span
style="white-space:pre-wrap">
</span>clone.requiredCpuPower
=
requiredCpuPower;</div>
<div><span
style="white-space:pre-wrap">
</span>clone.requiredMemory
=
requiredMemory;</div>
<div><span
style="white-space:pre-wrap">
</span>clone.requiredNetworkBandwidth
=
requiredNetworkBandwidth;</div>
<div><span
style="white-space:pre-wrap">
</span>clone.computer
= computer;</div>
<div><span
style="white-space:pre-wrap">
</span>return
clone;</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><span
style="white-space:pre-wrap">
</span></div>
<div><span
style="white-space:pre-wrap">
</span>public
int
getRequiredMultiplicand()
{</div>
<div>
return
requiredCpuPower
*
requiredMemory
*
requiredNetworkBandwidth;</div>
<div> }</div>
<div>}</div>
<div>--------------<br>
</div>
<div><br>
</div>
<div>this is
what i'm doing
to run the
example:</div>
<div><br>
</div>
<div>-------------</div>
<div>
<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
style="white-space:pre-wrap">
</span>public
static void
main(String[]
args) {</div>
<div><span
style="white-space:pre-wrap">
</span>String
t = "<?xml
version=\"1.0\"
encoding=\"UTF-8\"?>"</div>
<div><span
style="white-space:pre-wrap">
</span>+
"<solver>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<solutionClass>com.swa.planner.domain.CloudBalance</solutionClass>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<planningEntityClass>com.swa.planner.domain.CloudProcess</planningEntityClass>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<scoreDirectorFactory>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<scoreDefinitionType>HARD_AND_SOFT</scoreDefinitionType>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<scoreDrl>/com/swa/planner/domain/rule/cloudBalancingScoreRules.drl</scoreDrl>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
</scoreDirectorFactory>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<termination>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<maximumSecondsSpend>120</maximumSecondsSpend>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
</termination>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<constructionHeuristic>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<constructionHeuristicPickEarlyType>FIRST_LAST_STEP_SCORE_EQUAL_OR_IMPROVING</constructionHeuristicPickEarlyType>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
</constructionHeuristic>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<localSearch>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<acceptor>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<planningEntityTabuSize>7</planningEntityTabuSize>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
</acceptor>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<forager>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
<minimalAcceptedSelection>1000</minimalAcceptedSelection>"</div>
<div><span
style="white-space:pre-wrap">
</span>+ "
</forager>" </div>
<div><span
style="white-space:pre-wrap">
</span>+ "
</localSearch>" </div>
<div><span
style="white-space:pre-wrap">
</span>+
"</solver>";</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>byte
b[] =
t.getBytes();</div>
<div><span
style="white-space:pre-wrap">
</span>ByteArrayInputStream
bt = new
ByteArrayInputStream(b);</div>
<div><span
style="white-space:pre-wrap">
</span>SolverFactory
solverFactory
= new
XmlSolverFactory().configure(bt);</div>
<div><span
style="white-space:pre-wrap">
</span>Solver
solver =
solverFactory.buildSolver();</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>List<CloudComputer>
computerList =
new
ArrayList<CloudComputer>();</div>
<div><span
style="white-space:pre-wrap">
</span>computerList.add(new
CloudComputer(1L,
"Computador
1", 3, 2, 2,
110));</div>
<div><span
style="white-space:pre-wrap">
</span>computerList.add(new
CloudComputer(2L,
"Computador
2", 12, 8, 3,
400));</div>
<div><span
style="white-space:pre-wrap">
</span>computerList.add(new
CloudComputer(3L,
"Computador
3", 6, 6, 4,
300));</div>
<div><span
style="white-space:pre-wrap">
</span>computerList.add(new
CloudComputer(4L,
"Computador
4", 18, 12, 8,
1000));</div>
<div><span
style="white-space:pre-wrap">
</span>computerList.add(new
CloudComputer(5L,
"Computador
5", 8, 4, 6,
800));</div>
<div><span
style="white-space:pre-wrap">
</span>computerList.add(new
CloudComputer(6L,
"Computador
6", 9, 7, 9,
1000));</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>List<CloudProcess>
processList =
new
ArrayList<CloudProcess>();</div>
<div><span
style="white-space:pre-wrap">
</span>processList.add(new
CloudProcess(11L,
2, 2, 2));</div>
<div><span
style="white-space:pre-wrap">
</span>processList.add(new
CloudProcess(12L,
4, 4, 2));</div>
<div><span
style="white-space:pre-wrap">
</span>processList.add(new
CloudProcess(13L,
1, 1, 3));</div>
<div><span
style="white-space:pre-wrap">
</span>processList.add(new
CloudProcess(14L,
7, 3, 5));</div>
<div><span
style="white-space:pre-wrap">
</span>processList.add(new
CloudProcess(15L,
5, 8, 3));</div>
<div><span
style="white-space:pre-wrap">
</span>processList.add(new
CloudProcess(16L,
9, 2, 2));</div>
<div><span
style="white-space:pre-wrap">
</span>processList.add(new
CloudProcess(17L,
6, 5, 6));</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>CloudBalance
cloudBalance =
new
CloudBalance();</div>
<div><span
style="white-space:pre-wrap">
</span>cloudBalance.setId(0L);</div>
<div><span
style="white-space:pre-wrap">
</span>cloudBalance.setComputerList(computerList);</div>
<div><span
style="white-space:pre-wrap">
</span>cloudBalance.setProcessList(processList);</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>//
Solve the
problem</div>
<div><span
style="white-space:pre-wrap">
</span>solver.setPlanningProblem(cloudBalance);</div>
<div><span
style="white-space:pre-wrap">
</span>solver.solve();</div>
<div><span
style="white-space:pre-wrap">
</span>CloudBalance
solvedCloudBalance
=
(CloudBalance)
solver.getBestSolution();</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>//
Display the
result</div>
<div><span
style="white-space:pre-wrap">
</span>System.out.println("\nSolved
cloudBalance
with 5
computers and
6
processes:\n"</div>
<div><span
style="white-space:pre-wrap">
</span>+
toDisplayString(solvedCloudBalance));</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><br>
</div>
<div><span
style="white-space:pre-wrap">
</span>public
static String
toDisplayString(CloudBalance
cloudBalance)
{</div>
<div><span
style="white-space:pre-wrap">
</span>StringBuilder
displayString
= new
StringBuilder();</div>
<div><span
style="white-space:pre-wrap">
</span>for
(CloudProcess
process :
cloudBalance.getProcessList())
{</div>
<div><span
style="white-space:pre-wrap">
</span>CloudComputer
computer =
process.getComputer();</div>
<div><span
style="white-space:pre-wrap">
</span>displayString.append("
").append(process.getLabel())</div>
<div><span
style="white-space:pre-wrap">
</span>.append("
-> ")</div>
<div><span
style="white-space:pre-wrap">
</span>.append(computer
== null ? null
:
computer.getLabel())</div>
<div><span
style="white-space:pre-wrap">
</span>.append("\n");</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div><span
style="white-space:pre-wrap">
</span>return
displayString.toString();</div>
<div><span
style="white-space:pre-wrap">
</span>}</div>
<div>}</div>
<div><br>
</div>
</div>
<div>-------------</div>
</div>
</div>
<div
class="gmail_extra"><br>
<br>
<div
class="gmail_quote">2013/1/28
Geoffrey De
Smet <span
dir="ltr"><<a
moz-do-not-send="true" href="mailto:ge0ffrey.spam@gmail.com"
target="_blank">ge0ffrey.spam@gmail.com</a>></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>
// bed is
planning
variable<br>
...<br>
public
Departement
getDepartment()
{<br>
if (bed
== null) {
return null;}<br>
return
bed.getRoom().getDepartement()<br>
}<br>
}<br>
<br>
<br>
<div>Op
28-01-13
15:13, André
Fró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
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.<init>(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 </div>
</div>
<div
class="gmail_extra"><br>
<br>
<div
class="gmail_quote">2013/1/28
André Fróes <span
dir="ltr"><<a
moz-do-not-send="true" href="mailto:arfmoraes@gmail.com" target="_blank">arfmoraes@gmail.com</a>></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
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 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" target="_blank">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></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>
</div>
</div>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:rules-users@lists.jboss.org" target="_blank">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>
</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>
</div>
</div>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:rules-users@lists.jboss.org"
target="_blank">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></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>