[rules-dev] Rule Dependency Generator
Siddharth Angrish
sidangrish at gmail.com
Tue Oct 7 01:11:49 EDT 2008
> Hi Toni,
>
> I checked out the drools-verifier code. For a little
> acclimatization I went through a few files. Looks like Verifier.java is the
> main
> class for verifier tool. I went on to check how the Consequences are being
> handled but could only find the interface Consequence.java and
> TextConsequence.java which doesn't do too much.
> It would be helpful to have some higher level description of the relevant
> class relationships. (who's who).
> Also, it may be helpful to know how to build this code and how to run it. I
> checked out the code from the url:
> http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-verifier/ but
> could not get any build script or instructions.
>
> I hope I am going in the right direction.
>
> Siddharth
>
>
>
>
>
>
>
> On Mon, Oct 6, 2008 at 6:56 PM, Toni Rikkola <trikkola at redhat.com> wrote:
>
>> Hi Siddharth
>>
>> Your work sounds interesting and I would like to hear more about it. Looks
>> like your version is smarter with dependencies.
>>
>> The report data is used in Guvnor and in the HTML-report, but it can also
>> be retrieved as XML or java objects.
>>
>> The HTML-report lists all the fields, rules and object types. So you can
>> see what rules use certain object type and the field view shows what values
>> are compared against the field. This dependency data is also used in the
>> verification rules when searching for issues from the rule base.
>>
>> Like Mark said, the verifier is still quite blind for the RHS. Right now
>> it just handles it as a string. So it can't really tell what objects were
>> modified and how. This information is important to solve what rule creates
>> or modifies facts to satisfy another rule. This dependency data can then
>> again be used to find subsumption, loops ect.
>>
>> I hope that we can discuss about this soon.
>>
>> Toni
>>
>> Mark Proctor wrote:
>>
>>> Siddharth Angrish wrote:
>>>
>>>> Hi Mark
>>>>
>>>> I went through the RuleAnalytics Module document. It looks like
>>>> there is a good compatibility between your visions of Rule Analysis and our
>>>> rule dependency generation work. I'll be excited to further develop and
>>>> integrate my work with drools-verifier module code.
>>>>
>>>> Just a short summary of how I had approached the problem:
>>>>
>>>> We have long ruleflow which consists of other ruleflows, ruleflow
>>>> groups, split conditions. Using drools API I was
>>>> able to traverse through the main ruleflow including (recursively)
>>>> constituent nodes. So at any node I knew which rules
>>>> are relevant. Now, to find out dependency between rules I required very
>>>> intricate information about any given rule. I could not
>>>> find sufficient drools APIs to get this information. There are methods
>>>> to get LHS and RHS of a rule but they do not give information about
>>>> individual attributes. For RHS its more worse. No textual information was
>>>> availabe about it. (I am using 4.0.7 and I had even posted my questions on
>>>> Drools user mailing list)
>>>>
>>>> As a result, I wrote my own .drl file parser using javacc (which was
>>>> very interesting to do) and got whatever information I required.
>>>> Now I knew which rule modifies which attribute (and of which class) and
>>>> which rule uses what atrributes in its conditional part. Its much easier to
>>>> get dependecy sequence now. I know a few cases where this approach might
>>>> produce a false dependency sequence but using other rule-flow(salience,
>>>> agenda) information can help us avoid that.
>>>>
>>>> Now, how shall we go about it? I have installed irc on my system and I
>>>> think I require some url to be able to connect to you guys.
>>>>
>>> The details of connecting with irc are here:
>>> http://www.jboss.org/drools/irc.html
>>>
>>> you want to speak to Rikkola online if you see him.
>>>
>>> We don't want to add another DRL parser, as we already build up an
>>> internal tree - including consequence. So in the drools-verifier you already
>>> see how we build the descr tree, although that doesn't yet have an AST for
>>> the consequence, however we have java analysier that currently does (using
>>> antlr) and this and pulls out used identifiers:
>>>
>>> http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaExprAnalyzer.java
>>>
>>> We also extended our antlr grammar to understand the modify(...) {......}
>>> keyword. So you should be able to re-use the code inside of java expr
>>> analyzer to rewrite your existing stuff and also reusing our existing descr
>>> tree. Hopefully Toni Rikolla can help you with this online.
>>>
>>> Mark
>>>
>>>
>>>> Siddharth
>>>>
>>>>
>>>> On Sun, Oct 5, 2008 at 7:40 PM, Mark Proctor <mproctor at codehaus.org<mailto:
>>>> mproctor at codehaus.org>> wrote:
>>>>
>>>> Drools 5.0 has the drools-verifier. This does a variety of
>>>> verifications and analysis, like where class fields are used, gap
>>>> analysis etc. The Guvnor BRMS can produce HTML reports for this
>>>> information. Subsumption isn't done yet, we needed to analys the
>>>> consequences for update/modify to try and detect potential
>>>> impacted rules - this is also needed to detect which rules depend
>>>> on other rules.
>>>> http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-verifier/
>>>> http://wiki.jboss.org/wiki/RuleAnalyticsModule
>>>>
>>>> So we would love to have your work as additions to this, but it
>>>> will need to be integrated with the existing drools-verifier
>>>> module code and the HTML reporting - can you make that happen? It
>>>> would be ideal, as it then means your code is part of the main
>>>> project and will be maintained and improved by the community.
>>>>
>>>> Maybe you could pop onto irc, and chat to us about it more?
>>>> http://www.jboss.org/drools/irc.html
>>>>
>>>> Do you have any visualisation plans? If on the web GWT-Diagram is
>>>> turning out to be a great tool
>>>> http://code.google.com/p/gwt-diagrams/
>>>>
>>>> Mark
>>>>
>>>>
>>>>
>>>> Sangrish wrote:
>>>>
>>>> Hi
>>>>
>>>> I have been using Drools Rules Engine in our application
>>>> for past
>>>> couple of weeks.
>>>> One of the requirements in our project was to let a user
>>>> (anyone who is
>>>> writing/analysing the rules) find out
>>>> what other rules a given rule depends upon. There were a few
>>>> kinds of
>>>> dependencies:
>>>> 1) Object Attribute dependency: The attributes of an object
>>>> being used in
>>>> the conditional part of a rule
>>>> might be getting modified in the consequence part of
>>>> another rule. We
>>>> wanted all such rules with each rule having its own
>>>> dependency list.
>>>> 2) Rule Salience based dependency. A rule having lower
>>>> salience should be
>>>> executed only after a higher (if any) salience rule has
>>>> already been
>>>> executed.
>>>> 3) Dependency caused by a specific Rule flow. Rules in a
>>>> ruleflow group
>>>> should be executed only if (if any) Split condition gets
>>>> satisfied.
>>>> 4) Agenda flow dependency (i.e., one agenda following another)
>>>> We could not find much support for this in the Drools API.
>>>> Hence we
>>>> decided to write our own dependency generator. The tool we
>>>> are writing
>>>> caters to first 3 dependencies. We might even handle the 4th
>>>> one. Since Drools is open source, we thought of
>>>> contributing our bit towards
>>>> its development. If the drools team wants I can happily work
>>>> with them on
>>>> getting this functionality plugged in the Drools system.
>>>>
>>>>
>>>> Thanks
>>>> Siddharth
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>>>
>>>>
>>>> ------------------------------------------------------------------------
>>>>
>>>> _______________________________________________
>>>> 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
>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>
>>>
>>
>> _______________________________________________
>> rules-dev mailing list
>> 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/20081007/47b46db1/attachment.html
More information about the rules-dev
mailing list