<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">No problem.&nbsp; I'm not sure how you'd do this in a decision table (it's probably pretty trivial) but in DRL you'd do:<br><br>rule "makePhoneNumber" <br>when<br>&nbsp; s: String()<br>then<br>&nbsp; insert(new PhoneNumber(s));<br>&nbsp; retract(s);<br>end<br><br>With two caveats: <br><br>1) you need some conditions on the String matched if there are other Strings that don't make PhoneNumbers.<br>2) The rule could use a salience value higher than the pricing rules, but that isn't necessary.<br><br>Actually, there's a third caveat, and it's a big one: this won't work with sequential mode. This is because the rule above would alter working memory with the expectation that the pricing rules would react to the change.&nbsp; If you want to use sequential mode you'll have to convert to PhoneNumber objects before hand.&nbsp; I understand that you're using this
 Jbilling package, but is there no way you can put an intermediate adapter between the two?&nbsp; It'd be as simple as inserting "new PhoneNumber(someString)" instead of "someString".<br><br>--- On <b>Fri, 5/14/10, Antonio Anderson Souza <i>&lt;antonio@voicetechnology.com.br&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Antonio Anderson Souza &lt;antonio@voicetechnology.com.br&gt;<br>Subject: Re: [rules-users] Jbilling Drools performance<br>To: "Rules Users List" &lt;rules-users@lists.jboss.org&gt;<br>Date: Friday, May 14, 2010, 2:16 PM<br><br><div id="yiv2007638022">Dear Greg,<br><br>Thanks very much for your reply.<br><br>I'm using sequential mode = true<br><br>Is there a way to create this PhoneNumber class, and convert the String to the PhoneNumber  object inside the Drools? Because I'm using a system called JBilling and it send the phoneNumber as a String.<br>

<br>Sorry if those are basic questions, but I'm a newbie in Drools...<br><br>Thank you very much,<br><br clear="all">Antonio Anderson Souza<br>Voice Technology<br><a rel="nofollow" target="_blank" href="http://www.antonioams.com">http://www.antonioams.com</a><br>


<br><br><div class="gmail_quote">2010/5/14 Greg Barton <span dir="ltr">&lt;<a rel="nofollow" ymailto="mailto:greg_barton@yahoo.com" target="_blank" href="/mc/compose?to=greg_barton@yahoo.com">greg_barton@yahoo.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font: inherit;" valign="top">Right off the bat I'd say try to get rid of the eval usage.&nbsp; Can you put the phone number into an object like this:<br>

<br>class PhoneNumber {<br>&nbsp; private char digit0;<br>&nbsp; private char digit1;<br>&nbsp; ///...same for the rest of the digits<br><br>&nbsp; public char getDigit0() { return digit0; }<br>
&nbsp; public char getDigit1() { return digit1; }<br>}<br><br>Then the conditions would look like this:<br><br>digit0 == '$param'<br><br>Behind the scenes hopefully this will optimize better.&nbsp; The use of eval won't optimize well.<br>

<br>Are you using sequential mode?&nbsp; This might be a good candidate for that if setting the price does not trigger any other rules to fire.<br><br>--- On <b>Fri, 5/14/10, Antonio Anderson Souza <i>&lt;<a rel="nofollow" ymailto="mailto:antonioams@gmail.com" target="_blank" href="/mc/compose?to=antonioams@gmail.com">antonioams@gmail.com</a>&gt;</i></b> wrote:<br>

<blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Antonio Anderson Souza &lt;<a rel="nofollow" ymailto="mailto:antonioams@gmail.com" target="_blank" href="/mc/compose?to=antonioams@gmail.com">antonioams@gmail.com</a>&gt;<br>

Subject: [rules-users] Jbilling Drools performance<br>To: "Drools Users Mailing list" &lt;<a rel="nofollow" ymailto="mailto:rules-users@lists.jboss.org" target="_blank" href="/mc/compose?to=rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>&gt;<br>Date: Friday, May 14, 2010, 1:28 PM<div>

<div></div><div class="h5"><br><br><div><div class="gmail_quote"><div><div></div><div>Dear All,<br><br><div class="gmail_quote">I'm deploying&nbsp; a
 JBilling using Drools in a Telecom Carrier in Brazil, and I'm using Decision tables in xls files to execute the pricing, my pricing table has about 40.000 rules, and I'm getting a terrible performance about 1.5 minute to execute the price of each CDR (Call Detail Record) mediated.<br>





<br>Follow bellow a small piece of my decision table:<br><br>



        
        
        
        
        
        

<table border="0" cellspacing="0">
        <colgroup><col width="133"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="58"><col width="113"><col width="114"><col width="86"></colgroup>
        <tbody>
                <tr>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="133" height="17"><b>RuleTable Padrao</b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="58"><b><br></b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-bottom: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ccffff" width="113"><b><br></b></td>
                        <td align="LEFT" width="114"><br></td>
                        <td align="LEFT" width="86"><br></td>
                </tr>
                <tr>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" colspan="13" align="CENTER" bgcolor="#47b8b8" valign="MIDDLE" height="17"><b>CONDITION</b></td>






                        <td style="border-top: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>CONDITION</b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>ACTION</b></td>
                        <td style="border-top: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>PRIORITY </b></td>
                </tr>
                <tr>
                        <td style="border-bottom: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" colspan="13" align="CENTER" bgcolor="#47b8b8" valign="MIDDLE" height="17"><b>PricingField</b></td>






                        <td style="border-bottom: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>PricingManager</b></td>
                        <td style="border-bottom: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>manager</b></td>
                        <td style="border-bottom: 1px solid rgb(0, 0, 0); border-left: 1px solid rgb(0, 0, 0); border-right: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#47b8b8"><b>salience</b></td>
                </tr>
                <tr>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff" height="17">name</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(0) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(1) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(2) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(3) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(4) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(5) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(6) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(7) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(8) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(9) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(10) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">eval (strValue.charAt(11) == '$param')</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">itemId</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff">setPrice($param)</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#e6e6ff"><br></td>
                </tr>
                <tr>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99" height="17">Campo</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito1</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito2</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito3</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito4</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito5</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito6</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito7</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito8</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito9</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito10</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito11</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Digito12</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">ID do Item</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Preço</td>
                        <td style="border: 1px solid rgb(0, 0, 0);" align="CENTER" bgcolor="#ffcc99">Ordem</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">1</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">7</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">2</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">6</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">3</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">4</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">4</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">5</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">6</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">3</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">0</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">8</td>
                        <td align="RIGHT">2</td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.00000</td>
                        <td align="RIGHT">7</td>
                </tr>
                <tr>
                        <td align="LEFT" height="17">destinationnumber</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">5</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">1</td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="LEFT"><br></td>
                        <td align="RIGHT">300</td>
                        <td align="LEFT">0.40000</td>
                        <td align="RIGHT">8</td>
                </tr>
        </tbody>
</table>
<br><br>Is it normal? Are there somebody using Jbilling in a similar way? Does anybody can help me?<br><br>Best regards,<br><font color="#888888"><br clear="all">Antonio Anderson Souza<br>Voice Technology<br><a rel="nofollow" target="_blank" href="http://www.antonioams.com">http://www.antonioams.com</a><br>






</font></div><br>
</div></div></div><br>
</div><br></div></div>-----Inline Attachment Follows-----<br><br><div>_______________________________________________<br>rules-users mailing list<br><a rel="nofollow" target="_blank" href="http://mc/compose?to=rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>

<a rel="nofollow" target="_blank" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a><br></div></blockquote></td></tr></tbody></table><br>







      <br>_______________________________________________<br>
rules-users mailing list<br>
<a rel="nofollow" ymailto="mailto:rules-users@lists.jboss.org" target="_blank" href="/mc/compose?to=rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a rel="nofollow" target="_blank" href="https://lists.jboss.org/mailman/listinfo/rules-users">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br>
</div><br>-----Inline Attachment Follows-----<br><br><div class="plainMail">_______________________________________________<br>rules-users mailing list<br><a ymailto="mailto:rules-users@lists.jboss.org" href="/mc/compose?to=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></blockquote></td></tr></table><br>