<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">No problem. 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> s: String()<br>then<br> insert(new PhoneNumber(s));<br> 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. If you want to use sequential mode you'll have to convert to PhoneNumber objects before hand. I understand that you're using this
Jbilling package, but is there no way you can put an intermediate adapter between the two? 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><antonio@voicetechnology.com.br></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 <antonio@voicetechnology.com.br><br>Subject: Re: [rules-users] Jbilling Drools performance<br>To: "Rules Users List" <rules-users@lists.jboss.org><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"><<a rel="nofollow" ymailto="mailto:greg_barton@yahoo.com" target="_blank" href="/mc/compose?to=greg_barton@yahoo.com">greg_barton@yahoo.com</a>></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. Can you put the phone number into an object like this:<br>
<br>class PhoneNumber {<br> private char digit0;<br> private char digit1;<br> ///...same for the rest of the digits<br><br> public char getDigit0() { return digit0; }<br>
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. The use of eval won't optimize well.<br>
<br>Are you using sequential mode? 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><<a rel="nofollow" ymailto="mailto:antonioams@gmail.com" target="_blank" href="/mc/compose?to=antonioams@gmail.com">antonioams@gmail.com</a>></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 <<a rel="nofollow" ymailto="mailto:antonioams@gmail.com" target="_blank" href="/mc/compose?to=antonioams@gmail.com">antonioams@gmail.com</a>><br>
Subject: [rules-users] Jbilling Drools performance<br>To: "Drools Users Mailing list" <<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>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 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>