<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><span><div style="color: rgb(69, 69, 69); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; "><div><div><div><div>rule "first Reading"<br>when<br></div>&nbsp;&nbsp; $r: Reading()<br></div>&nbsp;&nbsp; not LastReading( <span style="font-weight: bold;">this == $r</span> )<br></div>then<br></div>&nbsp;&nbsp; insert( new LastReading( $r ) );<br></div><span style="color: rgb(69, 69, 69); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; ">end</span></span></div><div><br></div>  <div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "> <div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt; "> <div dir="ltr"> <hr size="1">  <font size="2" face="Arial"> <b><span style="font-weight:bold;">From:</span></b> Wolfgang
 Laun &lt;wolfgang.laun@gmail.com&gt;<br> <b><span style="font-weight: bold;">To:</span></b> Rules Users List &lt;rules-users@lists.jboss.org&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 class="y_msg_container"><br>
<div id="yiv618555882"><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>&nbsp; last : Reading<br>end<br></div><div><br></div><div>// fire once, to set up LastReading with the very first Reading<br>
</div>rule "first Reading"<br>
when<br></div>&nbsp;&nbsp; $r: Reading()<br></div>&nbsp;&nbsp; not LastReading()<br></div>then<br></div>&nbsp;&nbsp; insert( new LastReading( $r ) );<br></div>end<br><br></div><div>// based on the existence of a previous reading...<br></div><div>rule "next Reading"<br>
when<br>&nbsp; $lr: LastReading( $last: last )<br>
&nbsp; 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 "next Reading, big increment"<br>extends "next Reading"<br>
when<br></div>&nbsp; $new: Reading( $np: power &gt; $pp + 2 )<br></div></div>then<br></div><div>&nbsp; update( $lr ){ setLast( $new ) }<br></div><div>&nbsp; ... code for big increment<br></div><div>
end<br><br></div><div>// ...detect and handle an increment below the threshold</div><div>rule "next Reading, small increment"<br>extends "next Reading"<br>when<br>
&nbsp;&nbsp; $new: Reading( this != $last, $np: power &lt;= $pp + 2 )<br>
then<br>
<div>&nbsp; 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 class="yiv618555882gmail_extra"><br><br><div class="yiv618555882gmail_quote">On 11 June 2013 14:46, rjr201 <span dir="ltr">&lt;<a rel="nofollow" ymailto="mailto:rich.j.riley@gmail.com" target="_blank" href="mailto:rich.j.riley@gmail.com">rich.j.riley@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="yiv618555882gmail_quote" 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>
&nbsp; &nbsp;$last : LastReading( SensorRead($lastPower : power) )<br>
&nbsp; &nbsp;SensorRead( $lastPower - power &gt; 2)<br>
then<br>
&nbsp; &nbsp;System.out.println("Power increased more than 2")<br>
end<br>
<br>
rule2 //update which sensor read is the lastest reading<br>
salience 100<br>
when<br>
&nbsp; &nbsp;$last : LastReading( )<br>
&nbsp; &nbsp;$new : SensorRead()<br>
then<br>
&nbsp; &nbsp;retract($last)<br>
&nbsp; &nbsp;insert(new LastReading($new))<br>
end<br>
<br>
<br>
<br>
--<br>
View this message in context: http://drools.46999.n3.nabble.com/rules-users-Monitoring-sensor-parameter-change-tp4024242p4024243.html<br>

Sent from the Drools: User forum mailing list archive at <a target="_blank" href="http://nabble.com/">Nabble.com</a>.<br>
<div class="yiv618555882HOEnZb"><div class="yiv618555882h5">_______________________________________________<br>
rules-users mailing list<br>
<a rel="nofollow" ymailto="mailto:rules-users@lists.jboss.org" target="_blank" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a rel="nofollow" target="_blank" href="https://lists.jboss.org/mailman/listinfo/rules-users">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 ymailto="mailto:rules-users@lists.jboss.org" 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><br></div> </div> </div>  </div></body></html>