I have been racking my brain to come up with a good example to add to Drools to demonstrate something resembling a real-life application of business rules using Drools. One idea I have is to create an example related to the domain of Telephone Call Billing.
It is the norm for phone companies to offer hundreds of different telephone calling plans, each differing by many factors. Factors such as these can affect the price of a single phone call: time of day (peak hours), day of week, day of year (holidays), local calls, interstate calls, international calls, in-network calls, roaming calls, calling circles, minimum call time, minimum usage charges, taxes, etc. Furthermore, depending of when a customer signed up for a calling plan (for example, during a promotion), rates can differ from one group of customers to the next for each aspect of the calling plans. And let's not forget about scenarios where a call crosses a peak-hour time boundary, or a cell user crosses a roaming boundary while in the middle of a phone call.
In support of billing calls, phone networks can produce Call Detail Records (CDRs) which record details about individual phone calls – details such as call origination, call destination, date/time of call, disposition (aka answered/no_answer/busy), etc.
As a consequence of all this, the process of determining the proper amount to bill a customer for each call can be a daunting task.
It seems to me the problem of determining the rating/billing of individual CDRs is a good application of a rule engine.
I am open to suggestions on new examples to be added to Drools. Do you have any particular problems in mind you would like to see a Drools implementation of? If so, add them as comments to this issue, or better yet, submit the code to an example of your own.