Fwd: [rules-dev] Debugging, Tracing and Visualization of rule execution
Mark Proctor
mproctor at redhat.com
Tue Jun 16 20:03:39 EDT 2009
james is having problems, so thought I'd forward for him.
Mark
>> *From: *James Owen <jco2009 at att.net <mailto:jco2009 at att.net>>
>> *Date: *June 16, 2009 6:11:52 PM CDT
>> *To: *Rules Dev List <rules-dev at lists.jboss.org
>> <mailto:rules-dev at lists.jboss.org>>
>> *Subject: **Re: [rules-dev] Debugging, Tracing and Visualization of
>> rule execution*
>>
>>
>> Greetings:
>>
>> Just a word and I'm not sure how to implement this: In OPSJ Dr.
>> Forgy implemented "flagged" IF conditional statements such as (pseudo
>> code)
>>
>> Rule_1
>> IF
>> [f1] something1 happens
>> [f2] something2 happens
>> [f3] something3 happens
>> THEN
>> do something
>> ELSE [f1] fails
>> report why or do something
>> ELSE [f2] fails
>> report why or do something
>> ELSE [f3] fails
>> report why or do something
>> ELSE
>> do the EHS of the rule
>>
>> This is pretty much what he calls "syntatic sugar" that you can
>> program in the code each time. BUT, he made it so the programmer
>> could easily check a rule (or all of them of so desired) to see why
>> it failed. I used it with great success on a couple of projects and
>> really, really miss it when programming in any other rulebased system.
>>
>> Also, this is part of the very thing that Edson was complaining about
>> and I call a programmer's Beta-1 Error problem. It didn't fire when
>> it should have fired - so why didn't it? This would help immensely.
>> Surely, if one old man working in his 3rd floor attic in Pittsburgh,
>> PA, can implement this in his rulebase in just a couple of days (I
>> was there when he did it back in 1998), a whole cadre of experienced
>> Java programmers can implement it a world-class rulebase, right?
>>
>> SDG
>> jco
>> "This above all: to thine own self be true,
>> And it must follow, as the night the day,
>> Thou canst not then be false to any man."
>> Hamlet, Act 1, Scene III
>> http://www-tech.mit.edu/Shakespeare/hamlet/hamlet.1.3.html
>>
>>
>>
>>
>> On Jun 16, 2009, at 5:29 PM, Mark Proctor wrote:
>>
>>> Daniel Gebler wrote:
>>>> For our integration of Drools 5.0 we want to provide end users with
>>>> limited technical skills the possibility to debug, trace and
>>>> visualize the rule execution as well as the fact base.
>>>>
>>>> Questions that are frequently asked by users as well as by the
>>>> development/qa team:
>>>> - Did my rule r1 fire for this query?
>>>> - Why did rule r1 not fire (i.e. which constraint doesn’t
>>>> match)?
>>>> - Which kind of rule dependencies (chaining) do I have in
>>>> my rule base? Rule r1 and r2 are dependent iff action of r1 (e.g.
>>>> publish a fact) makes constraint of r2 true.
>>>> - Which rules need to fire in order to generate the
>>>> additional fact f1 in the fact base?
>>>> - What is the smallest change in the fact base (additional
>>>> facts etc.) in order to make rule r1 to fire (abduction)?
>>>>
>>>> Problems:
>>>> - Eclipse plugin doesn’t provide information of what
>>>> didn’t happen and why it didn’t happen ( ‘Audit’ view allows just
>>>> tracking of positive cases, i.e. what happened). Furthermore the
>>>> stability of the eclipse plugin seems to be limited.
>>>> - Integrating over SPI doesn’t allow to show the Rete
>>>> network because Rete view works only with drl files
>>>> - How to provide feedback to a normal end user of the
>>>> search server (limited tech skills) about rule-related information?
>>>>
>>>> Solution ideas/approaches + our assessment:
>>>> 1. Use a run time monitor providing on-demand log trace
>>>> information when facts are being published. The log trace provides
>>>> the information about which and why a particular constraint is or
>>>> is not satisfied. Our initial implementation uses an aspect
>>>> oriented approach (JBoss AOP) to gather relevant information. In
>>>> detail: Our initial implementation uses an aspect oriented approach
>>>> (JBoss AOP) to gather the information by intercepting
>>>> EntryPointNode.assertObject(), and traversing the rete network to
>>>> collect the constraint information for every unique alpha/join
>>>> node. This will allow to visualize the log trace (GUI) and
>>>> interpret the trace in the context of our product. We discussed
>>>> this approached in #drools with Edson Tirelli and he was very
>>>> interested.
>>>> 2. Use drools AgendaEventListener. Listener does not gets
>>>> enough debug info exposed, esp. we cannot extract the cause to
>>>> reject a rule. Not enough information available therefore this one
>>>> is not an option.
>>>>
>>>> Additionally, it would be nice for our development to also
>>>> visualize the Rete-OO network, but that seems to be impossible when
>>>> integrating drools directly via the SPI classes. Is there a way to
>>>> connect the viewer to a network inside a running VM?
>>> Constructing against the SPI instead of using DRL, you are scaring
>>> me now?
>>>
>>> Mark
>>>>
>>>> We would like to hear whether you know any other opinions, or have
>>>> points how to implement those features. Please share your
>>>> experience how to bridge the gap between end-users with limited
>>>> technical backgrounds expressing and investigating the rule inference.
>>>>
>>>> Thanks,
>>>> Daniel
>>>> ------------------------------------------------------------------------
>>>> _______________________________________________
>>>> rules-dev mailing list
>>>> rules-dev at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>>
>>>
>>> _______________________________________________
>>> rules-dev mailing list
>>> rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20090617/181f1c65/attachment.html
More information about the rules-dev
mailing list