<div dir="ltr">As suggested, I wrote some tests based on methods defined in the given class. That is, I extend from CommonTestMethodBase and used &quot;loadKnowledgeBaseFromString(str)&quot; to define the base for my KieSession. I was unable to reproduce the exception. I went through several cycles altering initializations, stripping down the rule, so forth but still to no avail. <div>
<br></div><div>Some of the steps I followed: </div><div>- Eliminate test harness. I added a main in my test class and simply instantiated that class and called the method directly.</div><div>- Executed in different environment. Changed from Intellij Idea IDE, to Eclipse IDE. Have not tried command line.</div>
<div>- In my application, I create the declared class externally and inject it into the engine The test method, on the other hand, injects the declared class via a high salience &quot;init&quot; rule. As such, I tried same approach in my application.</div>
<div>- In my application, removed all other rules, global, unused declarations. Further, I pruned down the offending rule to rudimentary instructions. </div><div><br></div><div>I have yet to dive into the drools/kie code to identify the differences, if any, between the test and application engine and rule initialization paths. Before I do, are there any suggestions on what other route I might take?</div>
<div><br></div><div>Thank you,</div><div><br></div><div>Roger</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, May 10, 2014 at 11:06 AM, Mark Proctor <span dir="ltr">&lt;<a href="mailto:mproctor@codehaus.org" target="_blank">mproctor@codehaus.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">We have a number of unit tests for expressions:<br>
<a href="https://github.com/droolsjbpm/drools/blob/master/drools-compiler/src/test/java/org/drools/compiler/integrationtests/TimerAndCalendarTest.java" target="_blank">https://github.com/droolsjbpm/drools/blob/master/drools-compiler/src/test/java/org/drools/compiler/integrationtests/TimerAndCalendarTest.java</a><br>

<br>
Could you add a unit test to demonstrate your problem, and submit it as a pull request?<br>
<a href="http://docs.jboss.org/drools/release/5.5.0.Final/droolsjbpm-introduction-docs/html/gettingstarted.html" target="_blank">http://docs.jboss.org/drools/release/5.5.0.Final/droolsjbpm-introduction-docs/html/gettingstarted.html</a><br>

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

&gt; Sent from the Drools: Developer (committer) mailing list mailing list archive at Nabble.com.<br>
&gt; _______________________________________________<br>
&gt; rules-dev mailing list<br>
&gt; <a href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a><br>
<br>
<br>
_______________________________________________<br>
rules-dev mailing list<br>
<a href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-dev</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Roger Lefebvre<div>President, Precipice Technologies Inc.</div><div>(e) <a href="mailto:roger@precipicetech.com" target="_blank">roger@precipicetech.com</a></div>
<div>(c) 403 466 2622</div><div>(f) 403 475 0566</div></div>
</div>