Hi everyone,
i'm developing a java application using drools 4 for domotic control;
i ve implemented a listener on my working memory with the method afterActivationFired(...) and activationCancelled(...) .
At startup of my app i've write the following lines:
 
listener = new FiredRulesListener();
workingMemory.addEventListener(listener);
 
Each time a rule is fired the method afterActivationFired(...) is called and it is ok; but when the rule stop to be true the method activationCancelled  isn't never called.
I try to be more clear:
 
i 've the following rule:
when mylamp=="on"
then
System.out.println("light 1 on");
 
 
When i turn on the light 1 the method afterActivationFired(...)  is called, but when i turn off the light the method activationCancelled isn't called.
Can someboy help me??
Thanks in advance.
 
 
Cla
 
 
My listener code:
 

public

static class FiredRulesListener extends DefaultAgendaEventListener

{

List<Rule>

firedRules = new ArrayList<Rule>();

public

List<Rule> getFiredRules()

{

return

this.firedRules;

}

@Override

public

void afterActivationFired(AfterActivationFiredEvent event, WorkingMemory workingMemory)

{

Rule rule = event.getActivation().getRule();

if

(!this.firedRules.contains(rule))

this.firedRules.add(rule);

}

@Override

public

void activationCancelled (ActivationCancelledEvent event, WorkingMemory workingMemory)

{

System.out.println("i never see this message");

Rule rule= event.getActivation().getRule();

this.firedRules.remove(rule);

}