<font size="2"><font face="verdana,sans-serif">Hi there,<br></font></font><div><font class="Apple-style-span" face="verdana, sans-serif"><br></font></div><div><font class="Apple-style-span" face="verdana, sans-serif">I&#39;m considering analyzing the pre-compiled xml document as a &quot;last resort&quot;: I actually find it easier to deal with objects/collections/arrays than with Strings and XML, etc. This is a personal stance with no much foundation regarding this specific drools scenario, really. </font></div>

<div><br></div><div>What I need to do (before the actual comparison) is to group the rules according to the agenda-group plus a variable value within a condition within every &lt;rule&gt;, such as this:</div><div><font class="Apple-style-span" face="verdana, sans-serif"><br>

</font></div><div><font class="Apple-style-span" face="verdana, sans-serif">&lt;rule&gt;</font></div><div><font class="Apple-style-span" face="verdana, sans-serif">  ...</font></div><div><font class="Apple-style-span" face="verdana, sans-serif">  &lt;rule-attribute name=&quot;agenda-group&quot; value=&quot;0da90b15&quot; /&gt;</font></div>

<div><font class="Apple-style-span" face="verdana, sans-serif">  ...</font></div><div><font class="Apple-style-span" face="verdana, sans-serif"><div>  &lt;field-constraint field-name=&quot;object&quot;&gt;</div><div>    &lt;literal-restriction evaluator=&quot;==&quot; value=&quot;d:&quot; /&gt; &lt;!-- LiteralConstraint java object --&gt;</div>

<div>  &lt;/field-constraint&gt;</div><div>  ...</div><div>&lt;/rule&gt;</div><div><br></div><div>(in this case I&#39;d like to index this rule to a 2-key hashmap =&gt; [0da90b15, &quot;d:&quot;])</div><div><br></div><div>

XML manipulation would mean parsing hundreds of rules, extracting the agenda-group and the &quot;object&quot; condition manually. Further down the road, I will also need to extract the whole LHS to perform the comparison. I&#39;m afraid this would take too long, but I might be wrong.</div>

<div><br></div><div>Thanks again,</div><div>_ miguel, PT</div><div><br></div></font></div><div><font class="Apple-style-span" face="verdana, sans-serif"><br></font></div><div><font class="Apple-style-span" face="verdana, sans-serif"><br>

</font><div class="gmail_quote">2011/8/26 Swindells, Thomas <span dir="ltr">&lt;<a href="mailto:TSwindells@nds.com">TSwindells@nds.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div lang="EN-US" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Wouldn’t it be easier to analyze the pre-converted xml document rather than trying to do it on the compiled knowledge base (presumably you keep the old xml file around) – this way it is just string and xml manipulation, though it depends on how exactly the matches must be.<u></u><u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Thomas<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"><u></u> <u></u></span></p>

<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt"><div><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm"><p class="MsoNormal"><b><span style="font-size:10.0pt">From:</span></b><span style="font-size:10.0pt"> <a href="mailto:rules-users-bounces@lists.jboss.org" target="_blank">rules-users-bounces@lists.jboss.org</a> [mailto:<a href="mailto:rules-users-bounces@lists.jboss.org" target="_blank">rules-users-bounces@lists.jboss.org</a>] <b>On Behalf Of </b>miguel machado<br>

<b>Sent:</b> 26 August 2011 15:55</span></p><div><div></div><div class="h5"><br><b>To:</b> Rules Users List<br><b>Subject:</b> Re: [rules-users] Rule one-by-one comparison<u></u><u></u></div></div><p></p></div></div><div>

<div></div><div class="h5"><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span style="font-size:10.0pt">Hi there,</span><u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">

<span>Thanks for replying. I will try to explain my current challenge a bit further:</span><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><span>I have a ruleset which is sent by an external application in XML format. I load it to a new knowledge package and then into a knowlegde base. It is made of smaller subsets of 3 rules each (a &quot;set&quot; rule, a &quot;reset&quot; rule and a &quot;clear&quot; rule) that control my application&#39;s internal logic, which must be stateful and kept on disk (basically, there are 2 important hashmaps).</span><u></u><u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><span>Whenever the rules change, a new XML ruleset is sent and my application restarts and loads the new file the exact same way. However, I need to resume the application state (as it was before the restart). I also have to do this selectively, because I only care about the application state on a per-rule basis:</span><u></u><u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><span>- If a rule keeps the same LHS, I need to resume the application state before restart regarding that rule;</span><u></u><u></u></p>
</div>
<div><p class="MsoNormal"><span>- If a rule has been modified, I may discard the state regarding that rule (do not need to load it);</span><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">

<span>I don&#39;t think I can refactor this problem into smaller ones, the application internal logic is indeed complex I&#39;m afraid. The rules are analyzed in a stateless way BUT they control a set of critical information which must be stateful (beyond restarts). There is a (not-so-direct) correspondence between each (fire, reset, clear) rule subset and the information that keeps track of the internal state, so that&#39;s why I need to verify rule-by-rule what has changed between restarts.</span><u></u><u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><span>I hope this helps to describe the problem.</span><u></u><u></u></p></div><div><p class="MsoNormal"><span>Thanks again for reading. Any help is greatly appreciated.</span><u></u><u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><span>_ miguel, PT</span><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p>

</div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">2011/8/26 Swindells, Thomas &lt;<a href="mailto:TSwindells@nds.com" target="_blank">TSwindells@nds.com</a>&gt;<u></u><u></u></p>

<div><div><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Can you share what you actual requirement is and why you need to do it?</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Can you perhaps change the problem into one that is simpler to solve?</span><u></u><u></u></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Ie rather than comparing knowledge bases can you get the input to these knowledgebases?</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Can you control what that input is, if it is a DSL or a spreadsheet then your comparision job will probably become a lot simpler.</span><u></u><u></u></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"> </span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Thomas</span><u></u><u></u></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"> </span><u></u><u></u></p>

<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt"><div><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm"><p class="MsoNormal"><b><span style="font-size:10.0pt">From:</span></b><span style="font-size:10.0pt"> <a href="mailto:rules-users-bounces@lists.jboss.org" target="_blank">rules-users-bounces@lists.jboss.org</a> [mailto:<a href="mailto:rules-users-bounces@lists.jboss.org" target="_blank">rules-users-bounces@lists.jboss.org</a>] <b>On Behalf Of </b>miguel machado<br>

<b>Sent:</b> 26 August 2011 13:01<br><b>To:</b> Rules Users List<br><b>Subject:</b> Re: [rules-users] Rule one-by-one comparison</span><u></u><u></u></p></div></div><div><div><p class="MsoNormal"> <u></u><u></u></p><p class="MsoNormal">

<span style="font-size:10.0pt">Esteban,</span><u></u><u></u></p><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">Thank you very much for that. I will look into it.<u></u><u></u></p></div><div>
<p class="MsoNormal">
Any other ideas, anyone?<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">_ miguel<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">

 <u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p><div><p class="MsoNormal">2011/8/26 Esteban Aliverti &lt;<a href="mailto:esteban.aliverti@gmail.com" target="_blank">esteban.aliverti@gmail.com</a>&gt;<u></u><u></u></p>

<p class="MsoNormal">You can try to use drools-verifier. This project basically lets you define rules about your rules. <u></u><u></u></p><div><p class="MsoNormal">You can have a look at its tests to see how it works.<u></u><u></u></p>

</div><div><p class="MsoNormal">You can get more info about drools-verifier here: <a href="http://community.jboss.org/wiki/DroolsVerifier" target="_blank">http://community.jboss.org/wiki/DroolsVerifier</a><u></u><u></u></p>

</div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">And here you can see how are we using drools-verifier inside Guvnor: <a href="http://ilesteban.wordpress.com/2010/04/05/guvnors-field-constraints/" target="_blank">http://ilesteban.wordpress.com/2010/04/05/guvnors-field-constraints/</a> <u></u><u></u></p>

</div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">Best Regards,<u></u><u></u></p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><br>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br>

<br>Esteban Aliverti<br>- Developer @ <a href="http://www.plugtree.com" target="_blank">http://www.plugtree.com </a><br>- Blog @ <a href="http://ilesteban.wordpress.com" target="_blank">http://ilesteban.wordpress.com</a><u></u><u></u></p>

<div><div><div><p class="MsoNormal">2011/8/26 miguel machado &lt;<a href="mailto:mls.machado@gmail.com" target="_blank">mls.machado@gmail.com</a>&gt;<u></u><u></u></p></div></div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">

<div><div><p class="MsoNormal"><span style="font-size:10.0pt">Hi there everybody,<br clear="all"></span><u></u><u></u></p><div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">I need to perform rule comparison on a project I&#39;m working on using drools expert 5.0. For a specific feature implementation, I have two different knowledge bases with several rules which I need to compare, one by one. By comparing, I mean &quot;inspect&quot; certain conditions within the LHS.<u></u><u></u></p>

</div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">Currently, I&#39;m able to obtain several attributes from rules (org.drools.rule.Rule), such as the agenda-group and the rule name and a few others, but I haven&#39;t been able to do it all. Going deeper, there is LiteralConstraint (for simple conditions) which I can parse and obtain data. However, I don&#39;t know how to do it for OR-conditions, which I guess represents a MultiRestrictionFieldConstraint. Perhaps there is another way?<u></u><u></u></p>

</div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">I know this may seem like a very unorthodox thing to do, but I don&#39;t think there is a better way of comparing knowledge packages (except for full text comparison). Is there?<u></u><u></u></p>

</div><div><p class="MsoNormal"> <u></u><u></u></p></div><div><p class="MsoNormal">Thanks in advance,<u></u><u></u></p></div><div><p class="MsoNormal">_ miguel, PT<u></u><u></u></p></div><div><p class="MsoNormal"> <u></u><u></u></p>

</div><div><p class="MsoNormal"><span style="color:#888888"> </span><u></u><u></u></p></div><p class="MsoNormal"><span style="color:#888888">-- </span><u></u><u></u></p><div><p class="MsoNormal"><span style="color:#888888">&quot;To understand what is recursion you must first understand recursion&quot;</span><u></u><u></u></p>

</div><p class="MsoNormal"> <u></u><u></u></p></div><p class="MsoNormal"> <u></u><u></u></p></div></div><p class="MsoNormal" style="margin-bottom:12.0pt">_______________________________________________<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><u></u><u></u></p>

</blockquote></div><p class="MsoNormal"> <u></u><u></u></p></div><p class="MsoNormal" style="margin-bottom:12.0pt"><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><u></u><u></u></p></div><p class="MsoNormal"><br><br clear="all"><u></u><u></u></p><div>

<p class="MsoNormal"> <u></u><u></u></p></div><p class="MsoNormal">-- <u></u><u></u></p><div><p class="MsoNormal">&quot;To understand what is recursion you must first understand recursion&quot;<u></u><u></u></p></div><p class="MsoNormal">

 <u></u><u></u></p></div></div></div></div></div><p class="MsoNormal"><u></u> <u></u></p><div class="MsoNormal" align="center" style="text-align:center"><hr size="2" width="100%" align="center"></div><p class="MsoNormal">

<span style="font-size:7.5pt;color:gray"><br>**************************************************************************************<br>This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the <a href="mailto:postmaster@nds.com" target="_blank">postmaster@nds.com</a> and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary.<br>

<br>NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00<br>**************************************************************************************</span><u></u><u></u></p>

</div><p class="MsoNormal" style="margin-bottom:12.0pt"><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><u></u><u></u></p></div><p class="MsoNormal"><br><br clear="all"><u></u><u></u></p><div>

<p class="MsoNormal"><u></u> <u></u></p></div><p class="MsoNormal">-- <u></u><u></u></p><div><p class="MsoNormal">&quot;To understand what is recursion you must first understand recursion&quot;<u></u><u></u></p></div><p class="MsoNormal">

<u></u> <u></u></p></div></div></div></div></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><br clear="all"><div><br></div>-- <br><div>&quot;To understand what is recursion you must first understand recursion&quot;</div><br>
</div>