package
com.moto.nmsimport
com.moto.nms.Event;import
com.adventnet.nms.topodb.ManagedObject;import
com.motorola.nmatg.nms.topology.ManagedEntity;global
com.moto.nms.Consecutive con; // Consecutive is an simple class file which has two simple methods, getValue() and setValue().
rule
"duplicate"salience 29
when
e1 : Event( firsttime1 : time , severity1 : severity == 1 )
e2 : Event( firsttime2 : time > firsttime1 , severity == severity1 )
not Event( severity == -1 , time > firsttime1 , time < firsttime2)
then
System.out.println("matched the fact");
e1.setCompressionStatus("compress_"+con.getValue());
e2.setCompressionStatus("compress_"+con.getValue());
end
rule
"duplicate_x"salience 29
when
e1 : Event(firsttime1 : time , severity == 1 )
e2 : Event(firsttime2 : time > firsttime1 , severity == 1)
exists Event( severity == -1, time > firsttime1 , time < firsttime2)
then
System.out.println("matched 2nd fact");
con.setValue(con.getValue() +1);
end
exception is like this...
Caught
Exceptionjava.lang.NullPointerExceptionjava.lang.NullPointerException
at org.drools.reteoo.beta.DefaultRightMemory.remove(Unknown Source)
at org.drools.reteoo.BetaMemory.remove(Unknown Source)
at org.drools.reteoo.NotNode.retractObject(Unknown Source)
at org.drools.reteoo.ObjectSource.propagateRetractObject(Unknown Source)
at org.drools.reteoo.RightInputAdapterNode.retractTuple(Unknown Source)
at org.drools.reteoo.TupleSource.propagateRetractTuple(Unknown Source)
at org.drools.reteoo.NotNode.retractTuple(Unknown Source)
at org.drools.reteoo.TupleSource.propagateRetractTuple(Unknown Source)
at org.drools.reteoo.JoinNode.retractTuple(Unknown Source)
at org.drools.reteoo.LeftInputAdapterNode.retractObject(Unknown Source)
at org.drools.reteoo.ObjectSource.propagateRetractObject(Unknown Source)
at org.drools.reteoo.AlphaNode.retractObject(Unknown Source)
at org.drools.reteoo.ObjectSource.propagateRetractObject(Unknown Source)
at org.drools.reteoo.ObjectTypeNode.retractObject(Unknown Source)
at org.drools.reteoo.Rete.retractObject(Unknown Source)
at org.drools.reteoo.ReteooRuleBase.retractObject(Unknown Source)
at org.drools.reteoo.ReteooWorkingMemory.doRetract(Unknown Source)
at org.drools.common.AbstractWorkingMemory.retractObject(Unknown Source)
at org.drools.common.AbstractWorkingMemory.retractObject(Unknown Source)
at com.moto.nms.TestEvents3.retractAll(
TestEvents3.java:219)at com.moto.nms.TestEvents3.readRule(
TestEvents3.java:158)at com.moto.nms.TestEvents3.main(
TestEvents3.java:242)
TestEvents3.java class is like this....
package
com.moto.nms;//related to IO..
import
java.io.InputStreamReader;import
java.io.Reader;import
java.io.InputStream;import
java.util.List;import
java.util.Iterator;//related to Drools..
import
org.drools.RuleBase;import
org.drools.RuleBaseFactory;import
org.drools.compiler.PackageBuilder;import
org.drools.rule.Package;import
org.drools.WorkingMemory;import
org.drools.FactHandle;import
org.drools.FactException;import
com.moto.nms.Event;import
com.moto.nms.NMSEvent;import
com.moto.nms.TopoInterface1;import
com.moto.nms.GenerateEvents;import
com.adventnet.nms.topodb.ManagedObject;import
com.moto.nms.Consecutive;
public
class TestEvents3 { private Reader reader; private RuleBase rulebase; private WorkingMemory wm; private List factHandles;
public TestEvents3(){
}
public void readRule(String readername) throws Exception{
InputStream str =
null;str = TestEvents.
class.getResourceAsStream(readername); if(str == null){
System.
out.println("unable to read rule file"); return;}
reader = new InputStreamReader(str); //read in the source
PackageBuilder builder =
new PackageBuilder(); //building up the rule packagebuilder.addPackageFromDrl(
reader);Package pkg = builder.getPackage();
//get the compiled package rulebase = RuleBaseFactory.newRuleBase(); rulebase.addPackage( pkg ); //adding the package to the rule baseConsecutive con =
new Consecutive(); wm = rulebase.newWorkingMemory(); wm.setGlobal("con", con);System.
out.println("\n\n"+System.currentTimeMillis());Event ev1 =
new Event(183, 1, "port02", "LOS", System.currentTimeMillis()); //Thread.sleep(450);Event ev9 =
new Event(192, 1, "port02", "LOS", System.currentTimeMillis()); //Thread.sleep(400);Event ev10 =
new Event(307, 1, "port02", "LOS", System.currentTimeMillis());Thread.sleep(500);
Event ev11=
new Event(306, 1, "port02", "LOS", System.currentTimeMillis());Thread.sleep(200);
Event ev12=
new Event(305, 1, "port02", "LOS", System.currentTimeMillis());Thread.sleep(250);
Event ev13=
new Event(304, -1, "port02", "LOS", System.currentTimeMillis());Thread.sleep(600);
Event ev14=
new Event(302, 1, "port02", "LOS", System.currentTimeMillis());Thread.sleep(200);
Event ev15=
new Event(301, 1, "port02", "LOS", System.currentTimeMillis());Thread.sleep(200);
Event ev16=
new Event(308, 1, "port02", "LOS", System.currentTimeMillis()); wm.assertObject(ev1); wm.assertObject(ev9); wm.assertObject(ev10); wm.assertObject(ev11); wm.assertObject(ev12); wm.assertObject(ev13); wm.assertObject(ev14); wm.assertObject(ev15); wm.assertObject(ev16);System.
out.println("\n\n"+System.currentTimeMillis());System.
out.println("\n\nFiring rules...\n"); wm.fireAllRules(); factHandles = wm.getObjects();System.
out.println("\n\nAll the Objects in WOrking Memory are as Follows...\n"); for(int i=0; i<factHandles.size(); i++){
System.
out.println(factHandles.get(i));}
System.
out.println("The CompressionStatus of the events are...");System.
out.println(ev1.getCompressionStatus());System.
out.println(ev9.getCompressionStatus());System.
out.println(ev10.getCompressionStatus());System.
out.println(ev11.getCompressionStatus());System.
out.println(ev12.getCompressionStatus());System.
out.println(ev13.getCompressionStatus());System.
out.println(ev14.getCompressionStatus());System.
out.println(ev15.getCompressionStatus());System.
out.println(ev16.getCompressionStatus());System.
out.println("The DeletionStatus of the events are...");System.
out.println(ev1.getDeletionStatus());System.
out.println(ev9.getDeletionStatus());System.
out.println(ev10.getDeletionStatus());System.
out.println(ev11.getDeletionStatus());System.
out.println(ev12.getDeletionStatus());System.
out.println(ev13.getDeletionStatus());System.
out.println(ev14.getDeletionStatus());System.
out.println(ev15.getDeletionStatus());System.
out.println(ev16.getDeletionStatus());Thread.sleep(1000);
System.
out.println("Starting retracting....");Thread.sleep(1000);
retractAll();
System.
out.println(System.currentTimeMillis());}
public void retractAll(){
factHandles = wm.getFactHandles();Iterator itr =
factHandles.iterator(); if(factHandles == null){
System.
out.println("invalid FactHandler List"); return;}
System.
out.println("size of fact handles..:"+factHandles.size()); while(itr.hasNext()){
try{FactHandle fh = (FactHandle)itr.next();
if(fh == null)System.
out.println("Here object is null, Cannot be retracted"); else{
wm.retractObject(fh);System.
out.println("Retracted object : "+ fh);}
}
catch (FactException e){e.printStackTrace();
}
}
return;}
public static void main(String[] args){TestEvents3 te =
new TestEvents3(); try{te.readRule(
"/AlarmSuppression.drl");}
catch(Exception ex){System.
out.println("Caught Exception" +ex);ex.printStackTrace();}
}
}