<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<font face="Verdana">Hi</font> <br>
i have a problem that seems to me quite similar to this
<a class="moz-txt-link-freetext" href="http://drools.46999.n3.nabble.com/rules-users-Exception-when-using-retract-td4023520.html">http://drools.46999.n3.nabble.com/rules-users-Exception-when-using-retract-td4023520.html</a>
(i cannot reply to this post, don't Know why)<br>
<br>
In my case exception is<br>
<br>
java.lang.NullPointerException<br>
at
ConditionEvaluator9935e5dba4084774a05641a0448cd694.evaluate(Unknown
Source)<br>
at
org.drools.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:200)<br>
at
org.drools.rule.constraint.MvelConstraint.isAllowedCachedLeft(MvelConstraint.java:169)<br>
at
org.drools.common.DoubleBetaConstraints.isAllowedCachedLeft(DoubleBetaConstraints.java:88)<br>
at org.drools.reteoo.NotNode.assertLeftTuple(NotNode.java:78)<br>
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:232)<br>
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:89)<br>
at
org.drools.reteoo.JoinNode.propagateFromLeft(JoinNode.java:107)<br>
at org.drools.reteoo.JoinNode.assertLeftTuple(JoinNode.java:95)<br>
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:232)<br>
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.createAndPropagateAssertLeftTuple(CompositeLeftTupleSinkAdapter.java:116)<br>
at
org.drools.reteoo.LeftInputAdapterNode.assertObject(LeftInputAdapterNode.java:154)<br>
at
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:497)<br>
at
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:382)<br>
at
org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:235)<br>
at
org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:240)<br>
at
org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:350)<br>
at
org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:311)<br>
at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:903)<br>
at
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:847)<br>
at
org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:269)<br>
at
it.eximia.meerkat.re.core.RuleEngine.executeSession(RuleEngine.java:212)<br>
at it.eximia.meerkat.re.core.RuleEngine.run(RuleEngine.java:180)<br>
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)<br>
at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)<br>
at
java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)<br>
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)<br>
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)<br>
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)<br>
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)<br>
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)<br>
at java.lang.Thread.run(Thread.java:662)<br>
|#]<br>
<br>
[#|2014-06-07T04:05:11.418+0200|WARNING|sun-appserver2.1|RuleEngine|_ThreadID=25;_ThreadName=pool-5-thread-1;_RequestID=b189af67-c681-411d-ad8c-44f1ec1646bf;|errore
nel Rule Engine<br>
Exception executing consequence for rule "temperatura normale" in
it.sure.template: java.lang.NullPointerException<br>
at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)<br>
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1297)<br>
at
org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221)<br>
at
org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456)<br>
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710)<br>
at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674)<br>
at
org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:230)<br>
at
it.eximia.meerkat.re.core.RuleEngine.executeSession(RuleEngine.java:215)<br>
at it.eximia.meerkat.re.core.RuleEngine.run(RuleEngine.java:180)<br>
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)<br>
at
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)<br>
at
java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)<br>
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)<br>
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)<br>
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)<br>
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)<br>
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)<br>
at java.lang.Thread.run(Thread.java:662)<br>
Caused by: java.lang.NullPointerException<br>
at
org.drools.core.util.index.LeftTupleIndexHashTable.remove(LeftTupleIndexHashTable.java:370)<br>
at org.drools.reteoo.NotNode.retractLeftTuple(NotNode.java:214)<br>
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateRetractLeftTuple(CompositeLeftTupleSinkAdapter.java:250)<br>
at
org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateRetractRightTuple(CompositeLeftTupleSinkAdapter.java:165)<br>
at
org.drools.reteoo.JoinNode.retractRightTuple(JoinNode.java:184)<br>
at
org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:283)<br>
at
org.drools.reteoo.EntryPointNode.retractObject(EntryPointNode.java:354)<br>
at
org.drools.common.NamedEntryPoint.retract(NamedEntryPoint.java:568)<br>
at
org.drools.base.DefaultKnowledgeHelper.retract(DefaultKnowledgeHelper.java:357)<br>
at
it.sure.template.Rule_temperatura_normale_53fab538df67455491288390ebd5c29c.defaultConsequence(Rule_temperatura_normale_53fab538df67455491288390ebd5c29c.java:49)<br>
at
it.sure.template.Rule_temperatura_normale_53fab538df67455491288390ebd5c29cDefaultConsequenceInvokerGenerated.evaluate(Unknown
Source)<br>
at
it.sure.template.Rule_temperatura_normale_53fab538df67455491288390ebd5c29cDefaultConsequenceInvoker.evaluate(Unknown
Source)<br>
at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287)<br>
... 16 more<br>
|#]<br>
<br>
<br>
<br>
i'm using drools 5.5.0 Final<br>
<br>
here is the rule, (i removed some statements don't seems relevant)<br>
<br>
<br>
rule "temperatura normale"<br>
salience -2<br>
when<br>
$nowTimestamp : ExecutionTimestamp()<br>
$event: ScalarEvent(name == "TEMPERATURE_EVENT", $creation:
creationDateTime, $uuid : sensorUUID ) from entry-point "event"<br>
not(ScalarEvent(name == "TEMPERATURE_EVENT",
creationDateTime.time < $creation.getTime(), sensorUUID == $uuid)
from entry-point "event") <br>
$sensor: EnvironmentalSensor(sensorUUID == $event.sensorUUID,
$sensor.type.keyId == "TEMP_ENV_TYPE", $sensor.assessable == true)<br>
$temperature1: Number( floatValue >=
Float.valueOf($sensor.getPropertyValue("min")) ) from $event.measure<br>
$temperature2: Number( floatValue <=
Float.valueOf($sensor.getPropertyValue("max")) ) from $event.measure<br>
$sensorInAlarm: SensorInAlarm (sensorUUID == $uuid) <br>
then<br>
ConcurrentHashMap<String, String>
statusInfo = sensorCache.get($sensor.getId().toString());<br>
SimpleDateFormat formatter = new
SimpleDateFormat("yyyy-MM-dd HH:mm:ss");<br>
long sensorId = $sensor.getId();<br>
Date alarmTimestamp =
$event.getCreationDateTime();<br>
String measure = $event.getMeasure() + "";<br>
String alarmType = "TEMPERATURE_OK";<br>
statusInfo.put("eventMeasure", measure);<br>
statusInfo.put("eventTimestamp",
formatter.format(alarmTimestamp));<br>
$sensorInAlarm.setEventTimestamp(alarmTimestamp);<br>
$sensorInAlarm.setEventMeasure(measure); <br>
update($sensorInAlarm);<br>
sensorCache.update($sensor.getId().toString(),
statusInfo);<br>
RuleEngineLogger.log(RuleEngineLoggerLevel.INFO,
"normale");<br>
retract($event);<br>
end<br>
<br>
<br>
<br>
<br>
<span style="color: rgb(0, 0, 0); font-family: Verdana, Geneva,
Helvetica, Arial, sans-serif; font-size: 13px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: auto; text-align: start;
text-indent: 0px; text-transform: none; white-space: normal;
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;
display: inline !important; float: none; background-color:
rgb(255, 255, 255);"> The exception does not immediately occur
sometimes it takes days before occurs<br>
<br>
Rule is fire when event </span><span style="color: rgb(0, 0, 0);
font-family: Verdana, Geneva, Helvetica, Arial, sans-serif;
font-size: 13px; font-style: normal; font-variant: normal;
font-weight: normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline
!important; float: none; background-color: rgb(255, 255, 255);">TEMPERATURE_EVENT
occurs. </span><span style="color: rgb(0, 0, 0); font-family:
Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans: auto;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-stroke-width: 0px; display: inline !important; float:
none; background-color: rgb(255, 255, 255);"><span style="color:
rgb(0, 0, 0); font-family: Verdana, Geneva, Helvetica, Arial,
sans-serif; font-size: 13px; font-style: normal; font-variant:
normal; font-weight: normal; letter-spacing: normal;
line-height: normal; orphans: auto; text-align: start;
text-indent: 0px; text-transform: none; white-space: normal;
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;
display: inline !important; float: none; background-color:
rgb(255, 255, 255);">TEMPERATURE_EVENT is a measure from a
thermometer, i have a dispather that simultaneously sends 10
measures (coming from 10 different sensors), then dispatcher
stops sending data for few minutes then it sends again new 10
measures, an so on.</span><br>
<br>
<br>
Same situation for me: When the exception is thrown, it looks like
that the event is not removed from the knowledge base (I watch the
number of events in the knowledge base – fact count)<br>
<br>
I more than 10 rules, fired every 1s<br>
<br>
Any help would be appreciated<br>
<br>
Sara<br>
<br>
</span><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<div class="moz-signature">-- <br>
<div>
<div>
<table style="border:0px solid #ecdece" cellpadding="4"
cellspacing="0" width="640" bgcolor="#FFFFFF" border="0"
height="50">
<tbody>
<tr>
<td>
<table style="border:1px solid #ecdece">
<tbody>
<tr>
<td style="padding-left:2px" width="200"> <a
href="http://www.eximia.it" target="_blank"><img
src="cid:part1.02020307.07060308@eximia.it" alt="Eximia Srl" width="118"
border="0" height="168"></a> </td>
<td
style="font-family:Helvetica;font-size:10px;line-height:14px"
width="240"> <br>
<span
style="font-family:Helvetica;font-size:12px;line-height:14px;font-weight:bold">Sara
Didaci</span><br>
<span
style="font-family:Helvetica;font-size:10px;line-height:16px;font-style:italic">Application
Engineer</span><br>
Eximia S.r.l.<br>
Via Sassari, 3<br>
09123 Cagliari - Italy<br>
Tel +39 070 7966776<br>
Fax +39 070 680904<br>
Mob +39 328 4660322<br>
Email <a href="mailto:sara.didaci@eximia.it"
target="_blank"><span class="il">sara.didaci@eximia.it</span></a><br>
Web <a href="http://www.eximia.it"
target="_blank">www.eximia.it</a><br>
<br>
</td>
</tr>
</tbody>
</table>
</td>
<td style="padding-right:2px" width="260" align="right">
<span
style="font-family:Helvetica;font-size:9px;line-height:14px;color:#aaaaaa">Eximia
č un'azienda certificata ISO 9001</span><br>
<img src="cid:part5.05060606.09060209@eximia.it"
alt="Image" align="right" hspace="6"> </td>
</tr>
<tr>
<td colspan="3"
style="font-family:Helvetica;font-size:9px;color:#aaaaaa;font-style:italic;line-height:12px">Il
contenuto di questa e-mail e dei file allegati č
RISERVATO e da considerarsi utilizzabile solamente
dalla persona o ente al quale č indirizzato. Se avete
ricevuto questa e-mail per errore, siete pregati di
rimandarla al mittente e di eliminarla. (Legge
italiana 196/2003).<br>
<br>
The content of this e-mail and any files is
CONFIDENTIAL and intended solely for the use of the
individual or entity to whom it is addressed. If you
have received this e-mail in error, please return it
to the sender and delete it. (Italian Law 196/2003). </td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>