Wednesday, May 09, 2007

A First Look at Oracle Real-Time Decisions

I’ve been telling everyone who I got talking to this week at Collaborate, that the future of BI is in it’s integration with business processes. The problem with BI at the moment is that it’s a minority interest; tools such as Discoverer, Business Objects, Cognos and so on are far too complicated for the average person in an organization, where most people don’t have the time or inclination to go on a three or five day course just to learn a query tool. In addition, most people don’t want to keep making context switches between their line-of-business application and a tool such as Discoverer; it interupts their train of thought and makes tasks take twice as long to carry out.

In addition, if you can embed business intelligence “insights” directly in the applications people are using, they’re more likely to understand what BI is saying to them (due to it being in context) and they’re more likely to act on it, as the tools they need to react to the insight are right in front of them. With this in mind, you’ll be amused to know that, instead of gambling on the blackjack tables and staring at the girls in cages, this week I’ve spend most of my spare time in Las Vegas up in my hotel room getting to grips with Oracle Real-Time Decisions, a prime example of adding BI “smarts” to business processes.

Oracle Real-Time Decisions originally came from a company called Sigma Dynamics, who’s real-time Decision engine Siebel used to OEM and include as an option for their CRM line of products. Shortly after the Siebel purchase, Oracle bought Sigma Dynamics themselves and you can now download the Real-Time Decisions platform from OTN.

The principal behind Real-Time Decisions is to provide a self-learning decision server, running on a J2EE platform, that takes as inputs for example a set of customer data, a series of events such as receive a call, add caller and call center employee details, present an offer, receive feedback on the offer, and close the call. The real-time decision engine is a data mining engine (Sigma Dynamics’ own engine, not the Oracle Data Mining engine) that establishes correlations and causality between customer and call inputs, the offers that are made and the response of customers, and over time learns which offers (for example) are most likely to be accepted by a certain type of customer. As such it’s a prime example of BI applied to business processes: you can insert Real-Time Decisions in to, for example, a call center business process, and have it recommend an offer (a new credit card, a savings account, a brokerage account for example) which then gets picked up by the business process and presented to the customer. The best bit though is the self-learning aspect; by using data mining, the process gets more and more accurate over time as it adjusts the offers in line with the ones previously made that have been successful, with feedback either being immediate (whether the customer says “yes” to you sending him details) or staggered over a later time period (whether they then open the account, and even start spending money on the credit card). So how does Real-Time Decisions work?

Well, working with Real-Time Decisions is a bit of a cross between Java development and data mining. You use Eclipse as the development environment, with a Real-Time Decisions plug-in which makes it seem as if it’s a dedicated tool. No doubt in time this will be changed to JDeveloper, but for now, Eclipse is just fine.

Working with Eclipse, you set up the Real-Time Decisions project (called an “Inline Service”) by first defining the input data model, and then setting up the individual choices, decisions, informants (processes that tell the Decision engine something relevant), advisors (processes that pass back insights to the calling application) and models.


Working with the project is largely point-and-click, with Java code used to provide specific bits of logic to assign session variables to parameters, do some conditional stuff and so on. From working through the tutorial, it doesn’t seem that you need to be a Java programmer to put the project together, the code is uses is just basic variable assignments, if-then-else and so on, but (and I’ll come to this later in the posting) most likely you’ll need to be a Java programmer, or at least a SOA “process integrator”, to wire this product into your actual application.

Anyway, once you’ve put the inline service together, there’s a Java load generator program you can use to do some initial training of the model, and to check that it performs under load. Working with this tool was fairly straigtforward, you just tell it the number of steps to iterate over, how to assign parameter values (weighted, in sequence, random and so on) and let it generate a load.


After you’ve run the load test, you can further refine the model until it’s at the point where you can start running it with some real data. There’s a thin-client, web based application also provided with Real-Time Decisions called Decision Center; using this, you can see the decision steps that you’ve defined in the Eclipse tool, like this:


You can also see what decisions the tool has been making, and how much of a “lift” - successes above what you’d have got from random choices against a control group.


So what we’ve got here is a data mining tool built for a specific purpose - to build a model which will for example predict, for a given set of customer attributes, which offer they are most likely to take up; in other words, which is the most effective decision in a given situation. The real-time bit comes from the fact that it deals with streams of data and events, provides immediate feedback and stores feedback you provide to constantly update the model.

Positives from the evaluation process were that the main developer tool, as it was based on Eclipse and a plug-in, was suprisingly nice to work with, although it’s by no means an end-user tool - perhaps a direct marketing power-user or someone who in their other time puts BPEL business processes together, but not something that will sit alongside Answers and Dashboards as an easy-to-use end user query tool. It more sits alongside tools such the ones in Oracle SOA Suite, and of course you’ll need a Java or SOA/Web Services/ESB-style environment in which to plug Real-Time Decisions’ inputs and outputs in to - it’s not a database-centric application, it’s more designed to communicate via messaging and web services.

On the downside, the installation process was extremely painful and harked back to the bad old days of editing web.xml configuration files, setting up jmx remote ports and the like, working with JConsole and so on - it works with either OC4J, Websphere or Weblogic and stores it’s data in either Oracle, SQL Server or DB/2, and it took me around a day’s solid work to get it all up and running. As a hint, it does all work in the end, but you have to follow the instructions to the letter; I had problems in several places with capitals in the wrong places in variable names, etc etc, you just need to make sure you type it all in correctly and check at each stage that everything’s working. Some of the admin was also a bit rough around the edges; JConsole is used quite a bit to set up accounts and permissions, clear down results sets and so on; I guess in reality, the calling Java program would do all the managed bean (MBean) interactions that JConsole does but in the meantime, the server admin stuff is at this stage a bit primitive.

That aside though, it looks like a very promising product. You need to be aware of what it’s there for - for adding dynamic, self-learning decisioning to business processes and applications, with the data mining element being a bit of a “black box” and designed to do a single task - make increasingly accurate decisions. As such, its a good “first taste” of what BI-embedded in applications is going to look like, and one of my next tasks down the line is to put the SOA Suite “Order Booking” demo application together and try and wire Real-Time Decisions in to it.

No comments: