Even attentive followers of this list may not be aware of my boot camp &quot;Rule-Based Programming Design Patterns&quot; I was delivering to a select few last October at <a href="http://intellifest.org/html/agenda.html">Rules Fest 2011</a>. I&#39;m convinced that programming with rules follows the same universal principles we all have learned about programming since the 1950ies or have been taught in the ensuing decades - most notably, design patterns that can be applied as the situation demands. It may be a different grass, but it&#39;s still the grass roots you&#39;ve got to make your own.<div>
<br></div><div>-W<br><div><br></div><div> <br><br><div class="gmail_quote">2012/3/29 Vincent LEGENDRE <span dir="ltr">&lt;<a href="mailto:vincent.legendre@eurodecision.com">vincent.legendre@eurodecision.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div style="font-size:12pt;font-family:Times New Roman">Drools expert doc has a first chapter that adresses these questions (section 1.2), or at least the questions that must be asked at start of a project.<br>
It covers in details the main key question : rules or not ? Using rules implies more constraints on IT because you allow more freedom in business logic part, so you need a more robust IT code.<br><br>Best pratices are then edicted by the architect, this last one having in mind the requirements of :<br>
    - business users (most important as they specify rules, at least some representatives samples), <br>    - the people who will write the rules (very very important if they are the business users, who are not IT guys, which to me forbid the usage of salience or groups or functions ...)<br>
    - the other IT guys that will provide data streams to your new application, or who will call your app (it can bring constraints because of data volumetry by instance)<br><br>In fact, you can&#39;t start a real rule project without having enough material in specifications, but this is also true for any project.<br>
So there is no (in my opinion) &quot;global best pratices&quot; (as there is no global best pratices for a random IT project...), with eventually an exception for no-loop (its usage generally shows a lack of design, again, it is my opinion, and I already used them anyway...).<br>
Once again, as Davide said, it depends of the usage. So it seems barely impossible to edit (and keep up to date) such a section with all potential use-cases ...<br><br>May be create a rule application that deduce best pratices  ;)  ?<br>
<br><hr><div style="font-size:12pt;font-style:normal;font-family:Helvetica,Arial,sans-serif;text-decoration:none;font-weight:normal"><b>De: </b>&quot;Patrik Dufresne&quot; &lt;<a href="mailto:ikus060@gmail.com" target="_blank">ikus060@gmail.com</a>&gt;<br>
<b>À: </b>&quot;Rules Users List&quot; &lt;<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>&gt;<br><b>Envoyé: </b>Jeudi 29 Mars 2012 15:20:21<br><b>Objet: </b>Re: [rules-users] In drools what is the exact difference between Insert and Update ??<br>
<br><div>Sorry to disrupt your discussion,</div><div><br></div><div>I&#39;ve start using Drools a while ago and I find your discussion very interesting about how to use what feature when and why. The current Drools Expert user guide is very nice, but it miss this crucial information. May I suggest to create a &#39;Best Practice&#39; chapter with the recommendation you made.</div>

<br clear="all">Patrik Dufresne<br>
<br><br><div class="gmail_quote">On Thu, Mar 29, 2012 at 8:21 AM, Vincent LEGENDRE <span dir="ltr">&lt;<a href="mailto:vincent.legendre@eurodecision.com" target="_blank">vincent.legendre@eurodecision.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Far much valuable reply than mine  :)<br>
A great summary of common concerns that must be evaluated before starting coding a rule system.<br>
<br>
Also consider :<br>
   - using rule flow (if you are allowed to)<br>
   - use sequential mode and pipe your data &#39;in the next rule box&#39; programmatically (using rules?)<br>
   - ask your architect ? He is true for no-loop, but for others, re-writing existing DRL code that used all that stuff, and throw all at once is farly more dangerous ...<br>
<div><br>
&gt;&gt; &quot;remove all salience from rules and make  the rules independent (don&#39;t decide its execution flow)&quot;<br>
<br>
</div>This is all the question.<br>
It mainly depends of the usage, as Davide said.<br>
It also depends of who is authoring/specifying rules : if the guy supposes some flow, he is not writing independant rules ...<br>
<br>
these other rules depend of the first :<br>
    <a href="http://2.no" target="_blank">2.no</a> drools functions<br>
    3.Activation group / ruleflow / salience ...<br>
    5.don&#39;t call any java function (thus no functions at all, no predicates/utils methods, only DSL? only POJO?).<br>
<br>
this one is suspect ...<br>
<div>    4.Don&#39;t use UPDATE and Global in drools .<br>
</div><div><div>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">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>_______________________________________________<br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org" target="_blank">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><br></div></div><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></blockquote></div><br></div></div>