[rules-users] Jbilling Drools performance

Antonio Anderson Souza antonio at voicetechnology.com.br
Mon May 17 08:15:13 EDT 2010


Dear Thomas,

My first try was to use the matches and the performance was slower about 3
minutes to process only one CDR, after this benchmark and some research I've
tried to use the per digit comparison.

The order of this table that I sent is inverted, the most general entries
must be analyzed first.

I'm still analyzing how to change JBilling to use per digit comparison to
benchmark the performance of this solution.

Thank you very much for your tips.

Best regards,

Antonio Anderson Souza
Voice Technology
http://www.antonioams.com


2010/5/17 Swindells, Thomas <TSwindells at nds.com>

>  My advice is to try just having a single column:
>
> strValue matches “$param.*”
>
> you could also compare the performance of that to
>
> eval(strValue.startsWith(“$param”))
>
>
>
> Also presumably you are only wanting the first matching rule in your table
> to fire, looking at the table below drools will fire all of the matching
> rules, this will mean than any phone number with prefix 5511 will be charged
> at 0.4 as that will be the last rule to fire.
>
>
>
> Thomas
>
>
>
> *From:* rules-users-bounces at lists.jboss.org [mailto:
> rules-users-bounces at lists.jboss.org] *On Behalf Of *Greg Barton
> *Sent:* 14 May 2010 20:59
> *To:* Rules Users List
>
> *Subject:* Re: [rules-users] Jbilling Drools performance
>
>
>
> 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:
>
> rule "makePhoneNumber"
> when
>   s: String()
> then
>   insert(new PhoneNumber(s));
>   retract(s);
> end
>
> With two caveats:
>
> 1) you need some conditions on the String matched if there are other
> Strings that don't make PhoneNumbers.
> 2) The rule could use a salience value higher than the pricing rules, but
> that isn't necessary.
>
> 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".
>
> --- On *Fri, 5/14/10, Antonio Anderson Souza <
> antonio at voicetechnology.com.br>* wrote:
>
>
> From: Antonio Anderson Souza <antonio at voicetechnology.com.br>
> Subject: Re: [rules-users] Jbilling Drools performance
> To: "Rules Users List" <rules-users at lists.jboss.org>
> Date: Friday, May 14, 2010, 2:16 PM
>
> Dear Greg,
>
> Thanks very much for your reply.
>
> I'm using sequential mode = true
>
> 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.
>
> Sorry if those are basic questions, but I'm a newbie in Drools...
>
> Thank you very much,
>
> Antonio Anderson Souza
> Voice Technology
> http://www.antonioams.com
>
>  2010/5/14 Greg Barton <greg_barton at yahoo.com<http://mc/compose?to=greg_barton@yahoo.com>
> >
>
> 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:
>
> class PhoneNumber {
>   private char digit0;
>   private char digit1;
>   ///...same for the rest of the digits
>
>   public char getDigit0() { return digit0; }
>   public char getDigit1() { return digit1; }
> }
>
> Then the conditions would look like this:
>
> digit0 == '$param'
>
> Behind the scenes hopefully this will optimize better.  The use of eval
> won't optimize well.
>
> 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.
>
> --- On *Fri, 5/14/10, Antonio Anderson Souza <antonioams at gmail.com<http://mc/compose?to=antonioams@gmail.com>
> >* wrote:
>
>
> From: Antonio Anderson Souza <antonioams at gmail.com<http://mc/compose?to=antonioams@gmail.com>
> >
> Subject: [rules-users] Jbilling Drools performance
> To: "Drools Users Mailing list" <rules-users at lists.jboss.org<http://mc/compose?to=rules-users@lists.jboss.org>
> >
> Date: Friday, May 14, 2010, 1:28 PM
>
>
>
> Dear All,
>
> 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.
>
> Follow bellow a small piece of my decision table:
>
> *RuleTable Padrao*
>
> *CONDITION*
>
> *CONDITION*
>
> *ACTION*
>
> *PRIORITY *
>
> *PricingField*
>
> *PricingManager*
>
> *manager*
>
> *salience*
>
> name
>
> eval (strValue.charAt(0) == '$param')
>
> eval (strValue.charAt(1) == '$param')
>
> eval (strValue.charAt(2) == '$param')
>
> eval (strValue.charAt(3) == '$param')
>
> eval (strValue.charAt(4) == '$param')
>
> eval (strValue.charAt(5) == '$param')
>
> eval (strValue.charAt(6) == '$param')
>
> eval (strValue.charAt(7) == '$param')
>
> eval (strValue.charAt(8) == '$param')
>
> eval (strValue.charAt(9) == '$param')
>
> eval (strValue.charAt(10) == '$param')
>
> eval (strValue.charAt(11) == '$param')
>
> itemId
>
> setPrice($param)
>
> Campo
>
> Digito1
>
> Digito2
>
> Digito3
>
> Digito4
>
> Digito5
>
> Digito6
>
> Digito7
>
> Digito8
>
> Digito9
>
> Digito10
>
> Digito11
>
> Digito12
>
> ID do Item
>
> Preço
>
> Ordem
>
> destinationnumber
>
> 5
>
> 5
>
> 1
>
> 1
>
> 3
>
> 5
>
> 8
>
> 8
>
> 0
>
> 1
>
> 8
>
> 8
>
> 300
>
> 0.00000
>
> 1
>
> destinationnumber
>
> 5
>
> 5
>
> 1
>
> 1
>
> 3
>
> 5
>
> 8
>
> 8
>
> 0
>
> 1
>
> 8
>
> 7
>
> 300
>
> 0.00000
>
> 2
>
> destinationnumber
>
> 5
>
> 5
>
> 1
>
> 1
>
> 3
>
> 5
>
> 8
>
> 8
>
> 0
>
> 1
>
> 8
>
> 6
>
> 300
>
> 0.00000
>
> 3
>
> destinationnumber
>
> 5
>
> 5
>
> 1
>
> 1
>
> 3
>
> 5
>
> 8
>
> 8
>
> 0
>
> 1
>
> 8
>
> 5
>
> 300
>
> 0.00000
>
> 4
>
> destinationnumber
>
> 5
>
> 5
>
> 1
>
> 1
>
> 3
>
> 5
>
> 8
>
> 8
>
> 0
>
> 1
>
> 8
>
> 4
>
> 300
>
> 0.00000
>
> 5
>
> destinationnumber
>
> 5
>
> 5
>
> 1
>
> 1
>
> 3
>
> 5
>
> 8
>
> 8
>
> 0
>
> 1
>
> 8
>
> 3
>
> 300
>
> 0.00000
>
> 6
>
> destinationnumber
>
> 5
>
> 5
>
> 1
>
> 1
>
> 3
>
> 5
>
> 8
>
> 8
>
> 0
>
> 1
>
> 8
>
> 2
>
> 300
>
> 0.00000
>
> 7
>
> destinationnumber
>
> 5
>
> 5
>
> 1
>
> 1
>
> 300
>
> 0.40000
>
> 8
>
>
>
> Is it normal? Are there somebody using Jbilling in a similar way? Does
> anybody can help me?
>
> Best regards,
>
> Antonio Anderson Souza
> Voice Technology
> http://www.antonioams.com
>
>
>
>
>
>
>
> -----Inline Attachment Follows-----
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org<http://mc/compose?to=rules-users@lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org<http://mc/compose?to=rules-users@lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
>
> -----Inline Attachment Follows-----
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org<http://mc/compose?to=rules-users@lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> ------------------------------
>
>
> **************************************************************************************
> This message is confidential and intended only for the addressee. If you
> have received this message in error, please immediately notify the
> postmaster at nds.com 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.
>
> 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
>
> **************************************************************************************
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100517/633be48e/attachment.html 


More information about the rules-users mailing list