Hello,
I'm encountering an NPE when attempting to use and expression timer in my
rule.
env:
Drools 6.0.1.Final
OS Maverick
IDE Intellij Idea
Java 7
Given the ebb and flow nature of the facts in the system, we want to be able
to control the cycles dynamically. Hence the desire to use the expression
timer.
The expression that I tried is based on the 6.0.1 documentation.
That is, something of the form *Timer(expr: $d, $p)*
In an effort to get beyond the NPE, I tried playing around with the
parameters by using combinations of both longs and appropriately formatted
strings (e.g. 10s, 1m, etc), and using only the delay.
I saw mention that a semicolon should follow the expression. That equally
failed.
The interval and cron timer variations, however, both work.
The .drl and exception are:
declare SystemControlData
isEnabled : boolean = false
delay : long = 30
period : long = 60000
maxCallQueueDepth : int = 1
end
rule "If the system is enabled start campaign check at specified interval"
agenda-group "system_criteria"
// auto-focus true
salience 20
// timer( expr: $d, $p ) throws NPE
// timer( expr: $d; ) throws NPE
timer(cron:0/5 * * * * ?)
when
SystemControlData(isEnabled==true, $d: delay, $p:period,
maxCallQueueDepth>0)
then
drools.setFocus( "campaign_criteria" );
end
Exception in thread "SimpleAsyncTaskExecutor-1"
java.lang.NullPointerException
at
org.drools.core.base.mvel.MVELCompilationUnit.createFactory(MVELCompilationUnit.java:262)
at
org.drools.core.base.mvel.MVELCompilationUnit.getFactory(MVELCompilationUnit.java:276)
at
org.drools.core.base.mvel.MVELObjectExpression.getValue(MVELObjectExpression.java:76)
at org.drools.core.time.TimeUtils.evalTimeExpression(TimeUtils.java:140)
at
org.drools.core.time.impl.ExpressionIntervalTimer.createTrigger(ExpressionIntervalTimer.java:151)
at
org.drools.core.phreak.PhreakTimerNode.createTrigger(PhreakTimerNode.java:260)
at
org.drools.core.phreak.PhreakTimerNode.scheduleLeftTuple(PhreakTimerNode.java:230)
at
org.drools.core.phreak.PhreakTimerNode.doLeftInserts(PhreakTimerNode.java:93)
at org.drools.core.phreak.PhreakTimerNode.doNode(PhreakTimerNode.java:69)
at
org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:357)
at
org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:161)
at
org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:116)
at
org.drools.core.phreak.RuleExecutor.reEvaluateNetwork(RuleExecutor.java:200)
at
org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:67)
at
org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:935)
at
org.drools.core.common.DefaultAgenda.fireUntilHalt(DefaultAgenda.java:1160)
at
org.drools.core.common.AbstractWorkingMemory.fireUntilHalt(AbstractWorkingMemory.java:1002)
at
org.drools.core.common.AbstractWorkingMemory.fireUntilHalt(AbstractWorkingMemory.java:978)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireUntilHalt(StatefulKnowledgeSessionImpl.java:273)
--
View this message in context:
http://drools.46999.n3.nabble.com/Expression-Timer-NPE-Drools-6-0-1-Final...
Sent from the Drools: Developer (committer) mailing list mailing list archive at
Nabble.com.