[rules-users] Is rule introspection available from the Drools API?
Stephen Masters
stephen.masters at me.com
Tue Jan 7 08:35:21 EST 2014
Also, is there a particular reason for using a stateless session? Depending on your application, using a stateful session could enable you to insert facts up front, meaning that you might not need to re-insert anything other than your ‘question' facts.
Steve
On 7 Jan 2014, at 13:04, Wolfgang Laun <wolfgang.laun at gmail.com> wrote:
> As you describe it, the fields of the fact objects shouldn't matter.
>
> On 07/01/2014, 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.
>
> I guess you mean "considerable".
>
>> 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 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.
>
> If these "rule sets" are unrelated with each other, you might put them into
> separater DRL files. Then the import list will tell you which facts this
> rule set needs, and so all you need is simple text processing...
>
> -W
>
>> 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
>>
>> 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
More information about the rules-users
mailing list