<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"><<a href="mailto:greg_barton@yahoo.com" target="_blank">greg_barton@yahoo.com</a>></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:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:12px"><div><div><div><div>
rule "first Reading"<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:'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 face="Arial"> <b><span style="font-weight:bold">From:</span></b> Wolfgang
Laun <<a href="mailto:wolfgang.laun@gmail.com" target="_blank">wolfgang.laun@gmail.com</a>><br> <b><span style="font-weight:bold">To:</span></b> Rules Users List <<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>> <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 "first Reading"<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 "next Reading"<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 "next Reading, big increment"<br>extends "next Reading"<br>
when<br></div> $new: Reading( $np: power > $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 "next Reading, small increment"<br>extends "next Reading"<br>when<br>
$new: Reading( this != $last, $np: power <= $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"><<a rel="nofollow" href="mailto:rich.j.riley@gmail.com" target="_blank">rich.j.riley@gmail.com</a>></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 > 2<br>
when<br>
$last : LastReading( SensorRead($lastPower : power) )<br>
SensorRead( $lastPower - power > 2)<br>
then<br>
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>
$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>