Please don't email me direct. I won't reply in the future. All questions and answers are of value to the community as a whole.

AFAIK, Activation Cancelled events would trigger in reaction to the revocation of a logically inserted fact that caused an activation to trigger in the first place. It would not help identifying which pattern in a rule was not matched causing your rule not to activate.

I don't believe there is a public API (or any) that could be used to trace which RETE nodes matched for a given rule's definition and hence which did not for you to identify unmatched patterns. Someone correct me if I am wrong.

Of the top of my head, you could possibly achieve what you are looking for by structuring your rules differently; having each pattern in a separate rule and tracking accumulated rule activations yourself. Not nice, not helpful if rules are authored by anybody other than a techy, but it might just work....

rule "bootstrap"
salience 100
    when
        not exists Tracker(rule ==  "rule 1")
    then
        insert(new Tracker("rule 1"));
end

rule "rule 1 - subrule 1"
    when
        $t : Tracker(rule == "rule 1")
        MySubPattern1( ... )
    then
        $t.addMatchSubRule("subrule 1");
        update($t);
end

rule "rule 1 - subrule 2"
    when
        $t : Tracker(rule == "rule 1")
        MySubPattern2( ... )
    then
        $t.addMatchedSubRule("subrule 2");
        update($t);
end

If Tracker(rule == "rule 1") does not contain stages 1 and 2 then you can determine which pattern did not match.

Untried, untested.

Cheers,

Mike
  

On 3 November 2010 09:31, <renganathan.p@tcs.com> wrote:
Dear Manstis,

Hope you are doing good.

I saw your post regarding  AgendaEventlisterner.

I got your zip file, the code is working fine.

But the activationcancellation method is not getting invoked. I need to identify which condition in the rule failed.

Can you pls help me.

Regards,

Renganathan P