<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:10pt"><div class="" style="">Hi,<o:p class="" style=""></o:p></div><div class="" style=""><o:p class="" style="">&nbsp;</o:p></div><div class="" style="">I am
trying to understand how Drools can be used to monitor events over a period of
time using Sliding Time Windows. I have created a rule to sound an alarm when
average temperature read from a sensor is above 25 degrees (threshold) over a
time period of 5 minutes. The rule makes of use of the Stream processing mode so
that continuous stream of events could be processed.<o:p class="" style=""></o:p></div><div class="" style=""><o:p class="" style="">&nbsp;</o:p></div><div class="" style="">Below
is how my rule looks like:<o:p class="" style=""></o:p></div><div class="" style=""><o:p class="" style="">&nbsp;</o:p></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:olive" class="">//declare any global
variables here</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#960000" class="">global</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">
java.lang.StringBuilder alertMessage</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:olive" class="">// add declaration to
change the Fact into an Event</span><span style="font-size:10.0pt;font-family:
Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#960000" class="">declare</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> SensorReading </span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @role(event)</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#960000" class="">end</span></b><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;"
 class="">&nbsp;</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:olive" class="">/* Alert when average
temperature is above 25 </span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:olive" class="">&nbsp;&nbsp; over a time period of 5 minutes */</span><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#960000" class="">rule</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><span style="font-size:10.0pt;font-family:Consolas;color:green" class="">"TemperatureAlarm1"</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class=""
 style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#960000" class="">when</span></b><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas;color:olive" class="">//conditions</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $averageTemp : Number(doubleValue &gt;
25.00)&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#960000" class="">from</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#960000" class="">accumulate</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">(SensorReading($temp
: temperature) </span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; over
window:time(5m) </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;
color:#960000" class="">from</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> entry-point </span><span style="font-size:10.0pt;font-family:
Consolas;color:green" class="">"Temperature Reading"</span><span style="font-size: 10pt; font-family: Consolas;" class="">, average($temp))</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#960000" class="">then</span></b><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas;color:olive" class="">//actions</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;System.out.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:green" class="">"Fired rule:
"</span><span style="font-size: 10pt; font-family: Consolas;" class=""> +
kcontext.getRule().getName());</span><span style="font-size:10.0pt;font-family:
Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alertMessage.append(</span><span style="font-size:10.0pt;font-family:Consolas;color:green" class="">"Threshold
temperature breached!!"</span><span style="font-size: 10pt; font-family: Consolas;" class="">+</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;font-family:Consolas;color:green" class="">"\nTurn on the
Air Conditioner"</span><span style="font-size: 10pt; font-family: Consolas;" class="">+</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;font-family:Consolas;color:green" class="">"\nAverage
temperature over 5 minutes is above 25 ("</span><span style="font-size: 10pt; font-family: Consolas;" class=""> + $averageTemp.intValue() + </span><span style="font-size:10.0pt;font-family:Consolas;color:green" class="">")\n"</span><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#960000" class="">end<o:p class="" style=""></o:p></span></b></div><div class="" style=""><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#960000" class=""><o:p class="" style="">&nbsp;</o:p></span></b></div><div class="" style="">And below
is the snapshot of the fact (SensorReading) which is inserted as an event in
the working memory:<o:p class="" style=""></o:p></div><div class="" style=""><o:p class="" style="">&nbsp;</o:p></div><div class="" style=""><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">public</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">class</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> SensorReading {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">private</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">double</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">temperature</span><span style="font-size: 10pt; font-family: Consolas;" class="">;</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">public</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> SensorReading(){}</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">public</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> SensorReading(</span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">double</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> temp){</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">this</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">.</span><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">temperature</span><span style="font-size: 10pt; font-family: Consolas;" class=""> = temp;</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas;color:#3F5FBF" class="">// getters and setters</span><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">}<o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style="">In
order to test the rule, I am using Pseudo Clock with Stream processing turned
on. I am inserting three SensorReading objects in the working memory with temperature
values as (24, 26, 28) after every minute, so that the average of the
temperatures is above threshold and the rule is invoked. After the objects are
inserted in the working memory, I am deliberately advancing the Pseudo clock by
another 1 minute, so that the total time elapsed is 4 minutes. The rule works
as expected with the above test setup and prints the average value as 26 on the
console. <o:p class="" style=""></o:p></div><div class="" style=""><o:p class="" style="">&nbsp;</o:p></div><div class="" style="">However,
if I advance the clock by 2 minutes instead of 1 minute after three sensor
reading objects have been inserted in the working memory (after every 1 minute
interval), the rule gets invoked but the average value gets changed to 27 (26 +
28 / 2 == 27). Looks like the first temperature reading is getting ignored by
the rule despite the fact that it falls well within the specified time range of
5 minutes. Below is the snapshot of my test class:<o:p class="" style=""></o:p></div><div class="" style=""><o:p class="" style="">&nbsp;</o:p></div><div class="" style=""><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">public</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">class</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> TemperatureAlarmTest
{</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">static</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> KnowledgeBase </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">kbase</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">;</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">static</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> StatefulKnowledgeSession </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">ksession</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">;</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">static</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> KnowledgeRuntimeLogger </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">logger</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">;</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">static</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> SessionPseudoClock </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">clock</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">;</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas;color:#646464" class="">@BeforeClass</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">public</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">static</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">void</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> setupKsession() {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">try</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F" class="">// load up the
knowledge base</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">kbase</span></i><span style="font-size: 10pt; font-family: Consolas;" class=""> = <i class="" style="">readKnowledgeBase</i>();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i class="" style=""><span
 style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">ksession</span></i><span style="font-size: 10pt; font-family: Consolas;" class=""> = <i class="" style="">readKnowldedeSession</i>(</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">kbase</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">clock</span></i><span style="font-size: 10pt; font-family: Consolas;" class=""> = </span><i class="" style=""><span
 style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">ksession</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.getSessionClock();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">logger</span></i><span style="font-size: 10pt; font-family: Consolas;" class=""> =
KnowledgeRuntimeLoggerFactory.<i class="" style="">newThreadedFileLogger</i>(</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">ksession</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">, </span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"log/Errors"</span><span style="font-size: 10pt; font-family: Consolas;" class="">, 500);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">catch</span></b><span
 style="font-size: 10pt; font-family: Consolas;" class=""> (Throwable t) {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.printStackTrace();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas;color:#3F5FBF" class="">/**</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;*
Create a new <u class="" style="">Stateful</u> knowledge Session with a pseudo clock from the</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;*
knowledge base</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* </span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F9FBF" class="">@param</span></b><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class=""> kbase</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 &nbsp;* </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F9FBF" class="">@return</span></b><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F9FBF" class="">@throws</span></b><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class=""> Exception</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;*/</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class=""
 style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">private</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">static</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">
StatefulKnowledgeSession readKnowldedeSession(</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KnowledgeBase kbase) </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">throws</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> Exception {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas;color:#3F7F5F" class="">// Knowledge Session Configuration</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KnowledgeSessionConfiguration
config = KnowledgeBaseFactory.<i class="" style="">newKnowledgeSessionConfiguration</i>();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.setOption(ClockTypeOption.<i class="" style="">get</i>(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"pseudo"</span><span style="font-size: 10pt; font-family: Consolas;" class="">));</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">return</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">
kbase.newStatefulKnowledgeSession(config, </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">null</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas;color:#646464" class="">@AfterClass</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">public</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">static</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">void</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> closeKsession() {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">try</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F" class="">// load up the
knowledge base</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">logger</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.close();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">ksession</span></i><span
 style="font-size: 10pt; font-family: Consolas;" class="">.dispose();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">catch</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> (Throwable t) {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;"
 class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t.printStackTrace();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas;color:#646464" class="">@Test</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">public</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">void</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">
TemperatureAlarm1_Test() {</span><span style="font-size:10.0pt;font-family:
Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas;color:#3F7F5F" class="">// Create Temperature list</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList&lt;SensorReading&gt;
tempMetrics = </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;
color:#7F0055" class="">new</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> ArrayList&lt;SensorReading&gt;();</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">double</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> temp = 24.00;</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">while</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> (tempMetrics.size()
&lt; 3) {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tempMetrics.add(</span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">new</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">
SensorReading(temp));</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp += 2;</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Size of
tempMetrics List: "</span><span style="font-size: 10pt; font-family: Consolas;" class="">+tempMetrics.size()+</span><span style="font-size:10.0pt;
font-family:Consolas;color:#2A00FF" class="">"\n"</span><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"First Temp
reading: "</span><span style="font-size: 10pt; font-family: Consolas;" class="">+tempMetrics.get(0).getTemperature());</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Second Temp
reading: "</span><span style="font-size: 10pt; font-family: Consolas;" class="">+tempMetrics.get(1).getTemperature());</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Third Temp
reading: "</span><span style="font-size: 10pt; font-family: Consolas;" class="">+tempMetrics.get(2).getTemperature()+</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"\n"</span><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas;color:#3F7F5F" class="">// Separate stream for inserts</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WorkingMemoryEntryPoint
temperatureStream = </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;
color:#0000C0" class="">ksession</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.getWorkingMemoryEntryPoint( </span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Temperature
Reading"</span><span style="font-size: 10pt; font-family: Consolas;" class=""> );</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas;color:#3F7F5F" class="">// Create fact handle list</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ArrayList&lt;FactHandle&gt;
factHandleList = </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;
color:#7F0055" class="">new</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> ArrayList&lt;FactHandle&gt;();</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas;color:#3F7F5F" class="">// Insert objects into working
memory while advancing the clock</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">for</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> (</span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">int</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> i = 0; i &lt;
tempMetrics.size(); i++) {</span><span style="font-size:10.0pt;font-family:
Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; factHandleList.add(temperatureStream.insert(tempMetrics.get(i)));</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">clock</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.advanceTime(1,
TimeUnit.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;
color:#0000C0" class="">MINUTES</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Time advances
by 1 minute"</span><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Fact Count
is: "</span><span style="font-size: 10pt; font-family: Consolas;" class="">+temperatureStream.getFactCount());</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Fact Entry
Point is: "</span><span style="font-size: 10pt; font-family: Consolas;" class="">+temperatureStream.getEntryPointId());</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Size of
FactHandleList: "</span><span style="font-size: 10pt; font-family: Consolas;" class="">+factHandleList.size()+</span><span style="font-size:10.0pt;
font-family:Consolas;color:#2A00FF" class="">"\n"</span><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#0000C0" class="">clock</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.advanceTime(1,
TimeUnit.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;
color:#0000C0" class="">MINUTES</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;font-family:Consolas;color:#3F7F5F" class="">//change in
advanced time alters the rule behavior</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuilder stringBuilder = </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">new</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> StringBuilder();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#0000C0" class="">ksession</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.setGlobal(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"alertMessage"</span><span style="font-size: 10pt; font-family: Consolas;" class="">, stringBuilder);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><i class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#0000C0" class="">ksession</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.fireAllRules();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas;color:#3F7F5F" class="">// Remove facts</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">for</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> (</span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">int</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> i = 0; i &lt;
factHandleList.size(); i++) {</span><span style="font-size:10.0pt;font-family:
Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temperatureStream.retract(factHandleList.get(i));</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"After
Removing facts"</span><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Fact Count
is: "</span><span style="font-size: 10pt; font-family: Consolas;" class="">+temperatureStream.getFactCount());</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String result =
stringBuilder.substring(0, 32);</span><span style="font-size:10.0pt;font-family:
Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">out</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Alert Message
is: \n"</span><span style="font-size: 10pt; font-family: Consolas;" class=""> + stringBuilder.toString());</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i class="" style="">assertEquals</i>(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Alert Message
is: "</span><span style="font-size: 10pt; font-family: Consolas;" class="">,
</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"Threshold
temperature breached!!"</span><span style="font-size: 10pt; font-family: Consolas;" class="">, result);</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas;color:#3F5FBF" class="">/**</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;*
Create the knowledge base with stream processing turned on.</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* </span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F9FBF" class="">@return</span></b><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* </span><b class="" style=""><span
 style="font-size:10.0pt;font-family:Consolas;color:#7F9FBF" class="">@throws</span></b><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class=""> Exception</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;*/</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">private</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">static</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> KnowledgeBase
readKnowledgeBase() </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;
color:#7F0055" class="">throws</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> Exception {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.<i class="" style="">newKnowledgeBuilder</i>();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kbuilder.add(ResourceFactory.<i class="" style="">newClassPathResource</i>(</span><span style="font-size:10.0pt;font-family:Consolas;color:#2A00FF" class="">"TemperatureAlarm1.drl"</span><span style="font-size: 10pt; font-family: Consolas;" class="">),ResourceType.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">DRL</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family:
 Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i class="" style="">hasErrors</i>(kbuilder);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:
10.0pt;font-family:Consolas;color:#3F7F5F" class="">// Stream processing turned on</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KnowledgeBaseConfiguration conf =
KnowledgeBaseFactory.<i class="" style="">newKnowledgeBaseConfiguration</i>();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conf.setOption(EventProcessingOption.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">STREAM</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KnowledgeBase kbase =
KnowledgeBaseFactory.<i class="" style="">newKnowledgeBase</i>(conf);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i class="" style="">hasErrors</i>(kbuilder);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class=""
 style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">return</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> kbase;</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:10.0pt;
font-family:Consolas;color:#3F5FBF" class="">/**</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;*
Report errors if any</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* </span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F9FBF" class="">@param</span></b><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class=""> kbuilder</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF"
 class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;* </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F9FBF" class="">@throws</span></b><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class=""> Exception</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#3F5FBF" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;*/</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">private</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">static</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">void</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">
hasErrors(KnowledgeBuilder kbuilder) </span><b class="" style=""><span style="font-size:10.0pt;
font-family:Consolas;color:#7F0055" class="">throws</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> Exception {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KnowledgeBuilderErrors errors =
kbuilder.getErrors();</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:
10.0pt;font-family:Consolas;color:#7F0055" class="">if</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> (errors.size() &gt; 0) {</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">for</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">
(KnowledgeBuilderError error : errors) {</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><i class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#0000C0" class="">err</span></i><span style="font-size: 10pt; font-family: Consolas;" class="">.println(error);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class=""
 style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">throw</span></b><span style="font-size: 10pt; font-family: Consolas;" class=""> </span><b class="" style=""><span style="font-size:10.0pt;font-family:Consolas;color:#7F0055" class="">new</span></b><span style="font-size: 10pt; font-family: Consolas;" class="">
IllegalArgumentException(</span><span style="font-size:10.0pt;font-family:Consolas;
color:#2A00FF" class="">"Could not parse knowledge."</span><span style="font-size: 10pt; font-family: Consolas;" class="">);</span><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:
10.0pt;font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size:10.0pt;
font-family:Consolas" class=""><o:p class="" style=""></o:p></span></div><div class="" style=""><span style="font-size:10.0pt;font-family:Consolas" class=""><o:p class="" style="">&nbsp;</o:p></span></div><div class="" style=""><span style="font-size: 10pt; font-family: Consolas;" class="">}</span><o:p class="" style=""></o:p></div><div class="" style=""><o:p class="" style="">&nbsp;</o:p></div><div class="" style=""><o:p class="" style="">&nbsp;</o:p></div><div class="" style="">Could
anyone please help explain this change in the behavior of the rule?<o:p class="" style=""></o:p></div><div class="" style=""><o:p class="" style="">&nbsp;</o:p></div><div class="" style="">Regards,<o:p class="" style=""></o:p></div><div class="" style="">











































































































































































































































































































































































































</div><div class="" style="">Sushant<o:p class="" style=""></o:p></div></div></body></html>