<div dir="ltr"><div>My intent was to have a single LastReading, updated with the latest Reading - hence no constraint in the rule responsible for creating this singleton fact.<br></div>-W<br></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On 11 June 2013 21:37, Greg Barton <span dir="ltr">&lt;<a href="mailto:greg_barton@yahoo.com" target="_blank">greg_barton@yahoo.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div style="font-size:12pt;font-family:times new roman,new york,times,serif"><div><span><div style="color:rgb(69,69,69);font-family:&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;font-size:12px"><div><div><div><div>
rule &quot;first Reading&quot;<br>when<br></div>   $r: Reading()<br></div>   not LastReading( <span style="font-weight:bold">this == $r</span> )<br></div>then<br></div>   insert( new LastReading( $r ) );<br></div><span style="color:rgb(69,69,69);font-family:&#39;Helvetica Neue&#39;,Helvetica,Arial,sans-serif;font-size:12px">end</span></span></div>
<div><br></div>  <div style="font-family:&#39;times new roman&#39;,&#39;new york&#39;,times,serif;font-size:12pt"> <div style="font-family:&#39;times new roman&#39;,&#39;new york&#39;,times,serif;font-size:12pt"> <div dir="ltr">
 <hr size="1">  <font face="Arial"> <b><span style="font-weight:bold">From:</span></b> Wolfgang
 Laun &lt;<a href="mailto:wolfgang.laun@gmail.com" target="_blank">wolfgang.laun@gmail.com</a>&gt;<br> <b><span style="font-weight:bold">To:</span></b> Rules Users List &lt;<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>&gt; <br>
 <b><span style="font-weight:bold">Sent:</span></b> Tuesday, June 11, 2013 12:07 PM<br> <b><span style="font-weight:bold">Subject:</span></b> Re: [rules-users] Monitoring sensor parameter change<br> </font> </div> <div><br>

<div><div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div>Basically a good approach.<br><br></div><div>declare LastReading<br></div><div>  last : Reading<br>end<br></div><div><br></div><div>// fire once, to set up LastReading with the very first Reading<br>

</div>rule &quot;first Reading&quot;<br>
when<br></div>   $r: Reading()<br></div>   not LastReading()<br></div>then<br></div>   insert( new LastReading( $r ) );<br></div>end<br><br></div><div>// based on the existence of a previous reading...<br></div><div>rule &quot;next Reading&quot;<br>

when<br>  $lr: LastReading( $last: last )<br>
  Reading( this == $last, $pp: power )<br></div><div>then<br>end<br><br></div><div>// ...detect and handle an increment beyond the threshold<br></div>rule &quot;next Reading, big increment&quot;<br>extends &quot;next Reading&quot;<br>

when<br></div>  $new: Reading( $np: power &gt; $pp + 2 )<br></div></div>then<br></div><div>  update( $lr ){ setLast( $new ) }<br></div><div>  ... code for big increment<br></div><div>
end<br><br></div><div>// ...detect and handle an increment below the threshold</div><div>rule &quot;next Reading, small increment&quot;<br>extends &quot;next Reading&quot;<br>when<br>
   $new: Reading( this != $last, $np: power &lt;= $pp + 2 )<br>
then<br>
<div>  update( $lr ){ setLast( $new ) }<br>
</div>end<br>
<br></div><div>All of this is untested and may contain syntax errors. - The additional constraint (this != $last) in the last rule avoids looping. <br></div><div>-W<br></div></div></div><div><div><div><div><div><div><div>

<div><div><div><div><div><div><div><div><div><br><br><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div><br><br><div>On 11 June 2013 14:46, rjr201 <span dir="ltr">&lt;<a rel="nofollow" href="mailto:rich.j.riley@gmail.com" target="_blank">rich.j.riley@gmail.com</a>&gt;</span> wrote:<br>

<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">If I understand your question right, you could create a class called<br>
LastReading( SensorRead() ) and then your rules would look something like:<br>
<br>
rule 1 //check to see if the increase is &gt; 2<br>
when<br>
   $last : LastReading( SensorRead($lastPower : power) )<br>
   SensorRead( $lastPower - power &gt; 2)<br>
then<br>
   System.out.println(&quot;Power increased more than 2&quot;)<br>
end<br>
<br>
rule2 //update which sensor read is the lastest reading<br>
salience 100<br>
when<br>
   $last : LastReading( )<br>
   $new : SensorRead()<br>
then<br>
   retract($last)<br>
   insert(new LastReading($new))<br>
end<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://drools.46999.n3.nabble.com/rules-users-Monitoring-sensor-parameter-change-tp4024242p4024243.html" target="_blank">http://drools.46999.n3.nabble.com/rules-users-Monitoring-sensor-parameter-change-tp4024242p4024243.html</a><br>


Sent from the Drools: User forum mailing list archive at <a href="http://nabble.com/" target="_blank">Nabble.com</a>.<br>
<div><div>_______________________________________________<br>
rules-users mailing list<br>
<a rel="nofollow" href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br>
<a rel="nofollow" href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</div></div></blockquote></div><br></div>
</div><br>_______________________________________________<br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></div> </div> </div>  </div></div><br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></blockquote></div><br></div>