So when do you want rules executed - each time you assert an object? You could decorate working memory to accomplish that.
On 11/30/06, Francesco Campagnola <[EMAIL PROTECTED]> wrote:
Hi, I'd like to know if is possible to make Drools capable of firing rules (and so executing the action parts of the rules) without call every time the fireAllRules() method on the WorkingMemory. In my program I need that every time an activation is created in the Agenda, this activation can be fired automatically. I tried to get this behaviour calling fireAllRules() inside the activationCreated method of an AgendaListener, but this resulted in rules fired two times: I get this output from my modified StateExample ==>[ActivationCreated(1): rule=Bootstrap; tuple=[fid:1:1], ] [BeforeActivationFired: rule=Bootstrap; tuple=[fid:1:1], ] [ObjectModified: handle=[fid:1:2]; old_object=A[FINISHED]; new_object=A[FINISHED]] A finished [AfterActivationFired(1): rule=Bootstrap] [ObjectAsserted: handle=[fid:1:2]; object=A[FINISHED]] ==>[ActivationCreated(3): rule=A to B; tuple=[fid:1:2], [fid:2:3], ] [BeforeActivationFired: rule=A to B; tuple=[fid:1:2], [fid:2:3], ] [ObjectModified: handle=[fid:2:4]; old_object=B[FINISHED]; new_object=B[FINISHED]] B finished [AfterActivationFired(3): rule=A to B] ==>[ActivationCreated(3): rule=A to B; tuple=[fid:1:2], [fid:2:4], ] [BeforeActivationFired: rule=A to B; tuple=[fid:1:2], [fid:2:4], ] [ObjectModified: handle=[fid:2:5]; old_object=B[FINISHED]; new_object=B[FINISHED]] B finished [AfterActivationFired(3): rule=A to B] [ObjectAsserted: handle=[fid:2:5]; object=B[FINISHED]] Any help would be greatly appreciated. - Francesco
-- Geoffrey Wiseman