<br> I guess you need to talk to Kris, the ruleflow master. :)<br><br><div class="gmail_quote">2008/11/6 techy <span dir="ltr"><<a href="mailto:techluver007@gmail.com">techluver007@gmail.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Thanks Edson for the clarification.<br>
1. actually I want to manage rule flow from the database.<br>
Do I have to store whole rfm file content in the database as text column?<br>
If so, I was looking at the sample rfm file and its content does not look<br>
simpler. If I want to edit to rfm file in the database(add/remove nodes or<br>
rule group etc),it seems too much complicated or very error prone.Editing of<br>
rfm does not look feasible without using eclipse graphical editor. If that's<br>
the case, How can I have rule flow as database driven? Or may be whenever I<br>
want to edit rule flow, then I can do it in the eclipse GUI and update the<br>
content in the databse. then I wont call this as database driven. Please<br>
clarify.<br>
<div><div></div><div class="Wj3C7c"><br>
<br>
Edson Tirelli-3 wrote:<br>
><br>
> Trying to answer:<br>
><br>
> 1. not sure what you mean. You design a rule flow as a sequence of steps<br>
> (groups) in the same way you would do when designing a workflow. When you<br>
> write your rules, you associate those rules to groups in that flow. The<br>
> ruleflow design itself is an XML file. So, the general answer is: you can<br>
> store a ruleflow in a database. Rebuilding the rulebase is fine, and<br>
> AFAIK,<br>
> ruleflows are dynamic, so you can add them to existing rulebases. Kris can<br>
> confirm this to you.<br>
><br>
> 2. yes, there are several optimizations you can do to the engine and to<br>
> your<br>
> rules, in a similar way you would do for a database. Which optimizations<br>
> and<br>
> how to do it can only be answered by seeing your use case, and fine<br>
> tunning<br>
> it. Regarding volumes, we have users using thousands of rules and millions<br>
> of facts without problems, but as you know, the bigger the size, more<br>
> careful you need to be on the engine configuration and the quality of your<br>
> rules.<br>
> I'm trying to get a user to write a blog on the sizing of the application<br>
> they have right now. I don't want to disclose the information before they<br>
> allow me to do it, but their specific solution does not have as many rules<br>
> as yours, but process a similar volume of facts as yours in 2-hours<br>
> windows.<br>
> They run in a server with just a few cores, but use a considerable amount<br>
> of<br>
> memory.<br>
><br>
> Regarding your question about if a production rules engine fits your<br>
> use<br>
> case, Rete algorithm as a general rule, will provide increasing benefits<br>
> as<br>
> the rule base grows, because more rules you have, more you will benefit of<br>
> optimizations like node sharing and other techniques.<br>
><br>
> If you go ahead, I suggest you contact Red Hat. They can help with your<br>
> solution design, training (if necessary) as well as provide support for<br>
> development and production.<br>
><br>
> []s<br>
> Edson<br>
><br>
> 2008/11/4 techy <<a href="mailto:techluver007@gmail.com">techluver007@gmail.com</a>><br>
><br>
>><br>
>> Thanks Edson.<br>
>> Few more questions based on my requirements.<br>
>><br>
>> I want to load all rules from the database once for everyday(during daily<br>
>> job startup) and apply them against huge amount of data.here rules are<br>
>> once<br>
>> loaded, no further need for dynamic addition/removal during that<br>
>> execution.<br>
>> But If I add any new rules to the database, rule engine should be able to<br>
>> pick those during next execution(Intention here is to provide a custom<br>
>> editor later on for the user to manage the rules.since droosl's BRMS does<br>
>> not seem handle all of our use case conditions, I've concluded to have<br>
>> custom BRMS).<br>
>><br>
>> 1.Can I have rule flow as database driven?<br>
>> i.e Can I store rule flow content for each rule as text column in the<br>
>> database and create rule flow file during the execution of each day?<br>
>><br>
>> 2. my requirement is to run 1200 use cases(rules) against 40- 50 million<br>
>> records each day, I'm really concerned about execution time also. Can I<br>
>> do<br>
>> any optimization in the rule engine for faster execution?<br>
>> Is rule engine still a good option in this case?<br>
>><br>
>> appreciate your help.<br>
>><br>
>><br>
>><br>
>> Edson Tirelli-3 wrote:<br>
>> ><br>
>> > Yuri,<br>
>> ><br>
>> > Right now, the only way is to work with different rule bases and<br>
>> > working<br>
>> > memories. Even using agenda-groups or rule-flow, rules are still being<br>
>> > eagerly evaluated, as this is how standard Rete works.<br>
>> > The problem of creating and canceling too many activations is a<br>
>> known<br>
>> > problem and the only way around it right now is sequential mode, but<br>
>> > sequential mode has some restrictions on what you can do. For instance,<br>
>> > you<br>
>> > must work with a stateless working memory and can not modify/retract<br>
>> facts<br>
>> > in your rules to work with sequential mode, but it will give you big<br>
>> > performance boosts.<br>
>> ><br>
>> > We are evaluating the possibility of creating physical network<br>
>> > partitions for next version, but that will require some R&D yet.<br>
>> ><br>
>> > []s<br>
>> > Edson<br>
>> ><br>
>> > 2007/8/14, Yuri <<a href="mailto:ydewit@gmail.com">ydewit@gmail.com</a>>:<br>
>> >><br>
>> >> Dr. Gernot Starke <gs <at> <a href="http://gernotstarke.de" target="_blank">gernotstarke.de</a>> writes:<br>
>> >> > can you detail your problem a little?<br>
>> >><br>
>> >> I basically need to find perfect matches between two different sets of<br>
>> >> objects.<br>
>> >> If perfect matches are not found, I then create bulks of objects that<br>
>> are<br>
>> >> then<br>
>> >> used in combination with the individual ones to find bulk matches. If<br>
>> no<br>
>> >> matches<br>
>> >> are found I need then to categorize the breaks (around 10 different<br>
>> >> categorizations) and report them.<br>
>> >><br>
>> >> The matching criteria between two object is specific enough to be<br>
>> fast.<br>
>> >> Once I<br>
>> >> get into break, which basically is removing some criteria components,<br>
>> the<br>
>> >> possible combinations increase exponentially. Bulking just compounds<br>
>> the<br>
>> >> problem<br>
>> >> by adding more matchable/breakable facts into memory.<br>
>> >><br>
>> >> My bulking logic (I didnt have collect when I started with 3.0) starts<br>
>> a<br>
>> >> bulk<br>
>> >> looking for two diff objects with the same bulkling criteria (this is<br>
>> my<br>
>> >> first<br>
>> >> potential cross product since drools would produce C!/N!(C-N)!<br>
>> >> combinations).<br>
>> >> Then once the bulk for a given criteria is create I have a second rule<br>
>> >> that<br>
>> >> expands or contracts the bulks as new facts are asserted causing many<br>
>> >> different<br>
>> >> side effects.<br>
>> >><br>
>> >> What I am basically seeing is that asserting a fact that would for<br>
>> >> instance be a<br>
>> >> perfect match, causes many of the bulking and breaking rule<br>
>> activations<br>
>> >> to<br>
>> >> be<br>
>> >> created and then cancelled. Considering that I am talking about tens<br>
>> or<br>
>> >> hundreds<br>
>> >> of thousands of facts I thought that if I could stage the activation<br>
>> >> creations I<br>
>> >> would increase processing speed.<br>
>> >><br>
>> >> With 15K objects on each side I have been seeing something like 1<br>
>> >> assertion per<br>
>> >> second.<br>
>> >><br>
>> >> I am aware that this could be cross product somewhere but I have<br>
>> already<br>
>> >> revised<br>
>> >> the rules many many times so now I am looking for other alternatives.<br>
>> >><br>
>> >> I am now trying to understand looking I basically need to find perfect<br>
>> >> matches<br>
>> >> between two different sets of objects. If perfect matches are not<br>
>> found,<br>
>> >> I<br>
>> >> then<br>
>> >> create bulks of objects that are then used in combination with the<br>
>> >> individual<br>
>> >> one to find bulk matches. If no matches are found I need then to<br>
>> >> categorize the<br>
>> >> breaks (around 10 different categorizations) and report them.<br>
>> >><br>
>> >><br>
>> >> _______________________________________________<br>
>> >> rules-users mailing list<br>
>> >> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>> >> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>> >><br>
>> ><br>
>> ><br>
>> ><br>
>> > --<br>
>> > Edson Tirelli<br>
>> > Software Engineer - JBoss Rules Core Developer<br>
>> > Office: +55 11 3529-6000<br>
>> > Mobile: +55 11 9287-5646<br>
>> > JBoss, a division of Red Hat @ <a href="http://www.jboss.com" target="_blank">www.jboss.com</a><br>
>> ><br>
>> > _______________________________________________<br>
>> > rules-users mailing list<br>
>> > <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>> > <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>> ><br>
>> ><br>
>><br>
>> --<br>
>> View this message in context:<br>
>> <a href="http://www.nabble.com/Independent-rule-evaluations-tp12129972p20335308.html" target="_blank">http://www.nabble.com/Independent-rule-evaluations-tp12129972p20335308.html</a><br>
>> Sent from the drools - user mailing list archive at Nabble.com.<br>
>><br>
>> _______________________________________________<br>
>> rules-users mailing list<br>
>> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
>> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
>><br>
><br>
><br>
><br>
> --<br>
> Edson Tirelli<br>
> JBoss Drools Core Development<br>
> JBoss, a division of Red Hat @ <a href="http://www.jboss.com" target="_blank">www.jboss.com</a><br>
><br>
> _______________________________________________<br>
> rules-users mailing list<br>
> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
><br>
><br>
<br>
--<br>
</div></div>View this message in context: <a href="http://www.nabble.com/Independent-rule-evaluations-tp12129972p20364536.html" target="_blank">http://www.nabble.com/Independent-rule-evaluations-tp12129972p20364536.html</a><br>
<div><div></div><div class="Wj3C7c">Sent from the drools - user mailing list archive at Nabble.com.<br>
<br>
_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br> Edson Tirelli<br> JBoss Drools Core Development<br> JBoss, a division of Red Hat @ <a href="http://www.jboss.com">www.jboss.com</a><br>