[rules-users] Is rule introspection available from the Drools API?
Mark Proctor
mproctor at codehaus.org
Tue Jan 7 12:58:18 EST 2014
Take a look at drools-verifier. It only works for simple patterns, but demonstrates how to extract fact type and used properties.
Mark
On 7 Jan 2014, at 12:04, milen igrachev <igrachev at abv.bg> wrote:
> Hello,
> initially i didn't give more details to keep my question short and save time to the ppl that read it.
> I actually believed that such functionality might be covered and available and details would have just prolong my question.
>
> Here is some additional information on why I am looking for such functionality.
> In my project I want to use Drools as external rule engine. My project is not written in Java and the effort to transfer it is
> inconsiderable. What I want to start using Drools for is a simple blackbox of getting answers from a Stateless Drools
> Session, most likely without any need of reinference. Simply ask and get answered.
> During the runtime of my project there is a vast amount of information that can be considered as a fact. However in
> most of the cases what I need is to invoke a simple ruleset that actually need like 1% of the facts that I currently know
> at any particular moment. So what I want to do is ask Drools "Hey I want to invoke <name> ruleset, can you please tell
> me what are the facts that it is using so I can pass all of them, that I currently have?". Then after receiving the answer I will
> filter the 1% from the big picture and will finally ask Drools to answer my question.
> What I want to avoid is passing hundreds of instance/facts with hundreds of fields that are actually never user.
> Of course I realise that the rule introspection that I am asking for is not my only option, I can create the .drl metadata during
> the ruleset definition. Some more ideas poped into my head, so far, but the best solution for me seems to be if we can just call
> Drools about that information and it return it as a straight answer.
>
> That is why I am trying to identify if it is possible to recive the rule metadata from Drools. At first I thought it could be available in
> a snap of a finger with some method calls, however now I am interested to see what is the effort to make it happen.
>
> Hope it helps. Thanks for the support.
>
> Best Regards,
> Milen
>
>
> -------- Original Letter --------
> From: Stephen Masters stephen.masters at me.com
> About: Re: [rules-users] Is rule introspection available from the Drools API?
> To: Drools List <rules-users at lists.jboss.org>
> Sent at: Tuesday, 2014, January 7 12:08:39 EET
>
> It may also be worth explaining exactly what you aim to achieve through this and why. From what I have seen, most people who ask about introspecting the LHS of rules via the API, don’t actually need to do that.
>
> Steve
>
>
> On 7 Jan 2014, at 08:56, Wolfgang Laun < wolfgang.laun at gmail.com> wrote:
>
> Hi,
>
> while you continue this line of research you might consider possible
> ramifications and snags, and be prepared for them.
>
> The syntax for writing LHS conditions is quite complex - it's more
> complex than Java expressions, because the CE eval() alone will give
> you (almost) all of that. Rule authors may also use DRL functions,
> which could hide field access.
>
> If *you* author the rules, you may be able to avoid the worst, but it
> won't be a piece of cake.
>
> Cheers
> -W
>
>
>
> On 07/01/2014, milen igrachev < igrachev at abv.bg> wrote:
> Hello thanks for the quick and precise answer!
> I believe that the time difference will be a bit of a problem for the IRC
> chat , but i will be online (channel: #drools user: igrachev) today and will
> try to check it often. However big thanks for the support and the
> willingness to help!
> You are saying that the code is there, but is not public and documented.
> Well being not public seems to be a problem, but do you think it is
> possible to give me an example with the official Drools "first rule" -
> Sample.drl. The one that comes with the first Drools project. So do you
> believe it will be possible to paste me some code on how to retrieve the
> information that this ruleset is using one fact of type Message and two of
> it's attributes - status and message. So just some code in a public
> static void main (String [] args) will be great :), or any kind of
> explanation :).
> Once again thank you.
> Have a nice day,
> Milen
>
>
>
> ----Original Letter----
> From: Mark Proctor mproctor at codehaus.org
>
> About: Re: [rules-users] Is rule introspection available from the Drools
> API?
>
> To: Rules Users List
>
> Sent at: Monday, 2014, January 6 16:05:33 EET
>
>
> The code is there, but it’s not public and not documented, and the code can
> be a little hard to understand - as it’s grown organically over the years.
>
>
>
> You’ll need to cast and unwrap and look at member vars. Start on the Rule
> and the lhs variable. You can always pop onto irc, with live questions,and
> we’ll try and respond quickly.
>
> http://www.jboss.org/drools/irc
>
>
>
> Mark
>
>
>
> On 6 Jan 2014, at 09:51, milen igrachev igrachev at abv.bg > wrote:
>
>
>
> Hello,
>
> is there a way to introspect a Drools file from within java code?
>
> What I need is to be able to identify the facts and the fact attributes
> that are used in a given DRL file.
>
>
>
> For example if I have a rule stored in a customer.drl DRL file within my
> project, containing the following definition:
>
> package myRulePackage
>
>
>
> import org.rules.model.Customer
>
> import org.rules.model.Mambership
>
>
>
> rule "is eligible customer"
>
> when
>
> $c:Customer(status == "active")
>
> Membership(customer == $c, type == "premium")
>
> then
>
> $c.setEligibilityStatus(true);
>
> end
>
>
>
> What i need is a way to understand that this ruleset customer.drl is using
> two fact types - Customer and Membership and three of their attributes -
> Customer.status, Membership.customer and Membership.type.
>
>
>
>
>
> I found some information on the internet that such functionality is not
> supported, however the information was a bit too old, so I decided to ask
> again.
>
>
>
>
>
> Big thanks for the support!
>
> Milen
>
> _______________________________________________
>
> 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
>
>
>
> _______________________________________________
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20140107/5f050864/attachment.html
More information about the rules-users
mailing list