Search code examples
javajbossdroolsbusiness-rulesrule-engine

How do I Use the Drools debugWorkingMemorylistener?


The following line of code straight from the documentation

ksession.addEventListener(new DebugWorkingMemoryEventListener());

prompts the following error in eclipse

The method addEventListener(WorkingMemoryEventListener) in the type WorkingMemoryEventManager is not applicable for the arguments (DebugWorkingMemoryEventListener)


Solution

  • You probably import org.drools.event.DebugWorkingMemoryEventListener instead of org.drools.event.rule.DebugWorkingMemoryEventListener.

    In our case, the following code works just fine:

    import org.drools.event.rule.DebugWorkingMemoryEventListener;
    import org.drools.event.rule.ObjectInsertedEvent;
    import org.drools.event.rule.ObjectRetractedEvent;
    import org.drools.event.rule.ObjectUpdatedEvent;
    ...
    StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
    ksession.addEventListener(new DebugWorkingMemoryEventListener() {
        @Override
        public void objectInserted(ObjectInsertedEvent event) {
            System.out.println(event);
        }
    
        @Override
        public void objectRetracted(ObjectRetractedEvent event) {
            System.out.println(event);
        }
    
        @Override
        public void objectUpdated(ObjectUpdatedEvent event) {
            System.out.println(event);
        }
    });