[rules-users] How to determine which rules fired under what conditions, for testing

Wolfgang Laun wolfgang.laun at gmail.com
Wed Mar 27 00:49:19 EDT 2013


Stephen has pointed you to a WorkingMemoryEventListener, and next to
it there is also a TrackingAgendaEventListener. Callback methods
beforeActivationFired and afterActivationFired bracket the execution
of a rule's consequence, which, in combination with the WM events,
will show you what a rule changes in WM.

As to the facts participating in the firing of a rule: the Activation
object of before/afterActivationFired lets you retrieve these Objects.
(The list of FactHandle's may contain FactHandle objects that do not
necessarily relate to Facts inserted into Working Memory.)

If your Fact objects provide good toString() methods, putting this all
together is a fairly simple task. Make sure to pick up Stephen's ideas
about filtering - this may even be useful for unit testing.

-W


On 26/03/2013, Magnarelli, James <James_Magnarelli at intuit.com> wrote:
> Just to clarify, for anyone else who might offer advice, my original
> desire was to have some kind of information about what rule fired, and
> what object it fired for.
>
>
> -- James
>
>
>
>
>
>
> On 3/26/13 1:15 PM, "Grant Rettke" <grettke at acm.org> wrote:
>
>>You might think differently about unit testing, set up your tests so
>>you *know* the data is there, and add or retract facts, and verify
>>their presence as a matter of success of failure.
>>
>>There are also more advanced approaches that others will surely share
>>soon.
>>
>>On Tue, Mar 26, 2013 at 3:11 PM, Magnarelli, James
>><James_Magnarelli at intuit.com> wrote:
>>> Though all of those are worthy pursuits, I want to do it in the sense of
>>> unit testing to make sure that I have defined the rule correctly.
>>>
>>> Thanks for your rapid response, by the way. I really appreciate it.
>>>
>>> -- James
>>>
>>>
>>>
>>>
>>>
>>>
>>> On 3/26/13 1:08 PM, "Grant Rettke" <grettke at acm.org> wrote:
>>>
>>>>Do you want to do that in the sense of unit testing to make sure you
>>>>have defined the rule correctly?
>>>>
>>>>Or, do you want to understand more about the dynamic behavior as your
>>>>system executes for profiling? Or learning more about your model?
>>>>
>>>>On Tue, Mar 26, 2013 at 3:05 PM, jmagnare <james_magnarelli at intuit.com>
>>>>wrote:
>>>>> I'm fairly new to Drools, but a fair amount of digging and searching
>>>>>hasn't
>>>>> brought me closer to an answer on this:
>>>>>
>>>>> Is there a way for me to determine, at runtime, which rules were fired
>>>>>and
>>>>> with what inputs?
>>>>>
>>>>> I am looking to use this my JUnit tests, to make sure that the rules I
>>>>>want
>>>>> to be fired are firing when I expect them to.
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>>http://drools.46999.n3.nabble.com/How-to-determine-which-rules-fired-un
>>>>>de
>>>>>r-what-conditions-for-testing-tp4023063.html
>>>>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>>>>> _______________________________________________
>>>>> rules-users mailing list
>>>>> rules-users at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>>
>>>>--
>>>>Grant Rettke | ACM, AMA, COG, IEEE
>>>>grettke at acm.org | http://www.wisdomandwonder.com/
>>>>Wisdom begins in wonder.
>>>>((λ (x) (x x)) (λ (x) (x x)))
>>>>
>>>>_______________________________________________
>>>>rules-users mailing list
>>>>rules-users at lists.jboss.org
>>>>https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>>
>>--
>>Grant Rettke | ACM, AMA, COG, IEEE
>>grettke at acm.org | http://www.wisdomandwonder.com/
>>Wisdom begins in wonder.
>>((λ (x) (x x)) (λ (x) (x x)))
>>
>>_______________________________________________
>>rules-users mailing list
>>rules-users at lists.jboss.org
>>https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



More information about the rules-users mailing list