Creating a Real-Time Decisions Project : Day 3
Over the past two days, we've taken an initial look at Oracle Real-Time Decisions (RTD), come up with a scenario with which we can build an RTD demo, and yesterday taken a look at the various elements of an RTD project. Today, we're going to take the Order Bookings manufacturer choice scenario and match it up to the various RTD project elements.
As a recap, we have a current BPEL process that takes a customer order, validates it, retrieves some customer information and then gets to a point where it has to decide on a manufacturer. At the moment, the choice is based purely on which manufacturer provides the lowest quote; in the future, we're going to use RTD to choose a manufacturer based on which one helps us achieve our current business goals, be they to minimize cost, improve customer service, get most orders delivered on time and so on. RTD is going to build up a predictive model that will take information on the customer and their order, take into account contextual information such as the time of year, and come up with the choice of manufacturer that is most likely to help us deliver on our business goals.
RTD projects have five main elements:
- Entities, the actors in the process
- Choices, the things that the decision can pick between, in our cases the various manufacturers
- Performance Goals, the business priorities that can be in effect at any one time - reduce costs, improve customer service, get most orders accepted and delivered within X days
- The models and rules that are used to make a decision, and
- The actual decisions that take place
In addition, we need to define Informants, interfaces into the Inline Service that provide data on the customer, whether the decision was accepted, what the customer's feedback on the order process was and so forth.
Going through this list then, the entities that we will need are:
- The customer - the person placing the order. Customers will have several data items associated with them including their age, status and so forth. Data on the customer will come from an Oracle database, which will be accessed via the customer ID passed to the inline service from the Order Bookings BPEL process.
- The order - principally the value of the order, passed to the Inline Service from the BPEL process, and also the number of items, name of the most expensive item in the order and so forth.
- The manufacturers, their name, number of staff, whether they will take orders electronically and so on.
I mentioned in one of my initial postings that I've actually got a very similar RTD project, built by the RTD product management team, that does a similar job - it selects the most suitable satellite TV installer based on a similar scenario and set of inputs.
Taking a look at the project in Oracle RTD Studio, I can see that I might well need some additional entities, to hold manufacturer metrics, real-time data on manufacturers, such us the number of order rejections they'd made in the last hour, day and so on. I'll have to decide on whether these additional entities are needed when putting my example together.
In terms of choices, these are going to be the various different manufacturers that the decision-making process can decide from. At the moment, the Order Bookings BPEL process uses two manufacturers, "Select Manufacturers" and "Rapid Manufacturers". To this we'll add "Bargain Manufacturers" and "Expert Manufacturers", and we'll set up the details for each of them to reflect the following characteristics:
- Select Manufacturers will be expensive, provide excellent customer service, and deliver within an average timeframe.
- Rapid Manufacturers will be expensive, typically delivery faster, have average to just under average customer service, but sometimes reject orders because they're too busy.
- Bargain Manufacturers are typically the cheapest, always take on orders but sometimes delivery them late, and don't have particularly good customer service.
- Expert manufacturers are expensive, always take on orders, have below-average response times but good customer service.
Within the BPEL process, I'll introduce a random element such that some manufacturers reject orders and some deliver late. These results will feed back into the RTD model, meaning that over time, a decision might start to change as certain suppliers' delivery time starts to suffer, their number of rejected jobs goes up and so on. We'll store these scores and metrics in a database table, and make them available in the RTD project through the supplier entity.
In terms of performance goals, we'll have a number that we'll emphasize and de-emphasize at various times. These goals will be:
- Minimize Service Cost
- Maximize chance of delivery on-time
- Minimize rejection rate of work orders
Over time, if we want to maximize customer service at any one time, we'll emphasize delivering on time and having all work orders accepted, whilst at others, if we're more concerned with maximizing profits, we'll emphasize cost reduction instead. If I can work out how to do it, I'll segment the customers (based on their status, which can be either gold, silver or bronze), emphasizing customer service for the gold customers and cost reduction for the others.
The informants, or events or interfaces into the RTD inline service, will come at three points:
- When we get all four quotes through an need to pick a manufacturer
- When we get the work acceptance, or not, from the manufacturer
- When we get data back from the customer on when the order actually arrived.
The three models we will initially build up will be used to predict the following metrics:
- Customer Satisfaction
- Order rejection, and
- Order completion on time
Finally, we will have one decision that the RTD project will generate, which will be a choice of manufacturers based on our current business priorities, which will be expressed by weighting the various performance goals to emphasize customer service, keeping costs down and so on.
As shown in the screenshot above, taken from the existing RTD demo I've got on my machine, it's also possible to segment customers and apply different performance goal weightings for each segment.
So, that's the background to the project. Tomorrow, we'll set up the entities and choices.