I got an update on the Oracle Business Rules product recently. Oracle is an interesting company – they have the components of decision management but do not yet have them under a single umbrella. For instance, they have in-database data mining (blogged about here), the Real Time Decisions (RTD) engine, event processing rules and so on. Anyway, this update was on business rules.
Oracle’s Business Rules offering in the SOA/BPM platform is based on Jess, a Rete-based inferencing business rules engine and is available and usable both within the SOA/BPM and independently. While basing the product on Jess, Oracle has added tight integration with SOA/BPM, updated the language to use their own Rule Language not the LISP-like language Jess usually uses and added a user interface.
In general, Oracle talks about business rules in the context of SOA/BPM. Business rules are included in the Application Server and the Event-Driven Architecture Suite as well as in the BPM/SOA suite. In 10.1.3 they offered a business rules authoring environment, an SDK and a version of the Jess engine than can reason over Java or XML facts. Users can deploy this as a Decision Service or embed the JAR files directly in a Java application for a lighter footprint. There is also a repository that can contain many Rule Dictionaries which contain Rule Sets. As usual with a Rete-based engine, these Rule Sets are units of execution. The web based UI in 10.1.3 is pretty basic but is functional. Recognizing that most business users don’t want to maintain rules and so need a custom interface (blogged here) Oracle allows custom UIs to be developed that use the same APIs that the standard interface uses.
Oracle has some interesting customer use cases. Verizon Wireless’ FraudPlus application, which scans 2.5 billion phone records daily to identify fraudulent activity, uses Oracle Business Rules along with Oracle BPEL PM (more here). When faced with a new legislation from Department of Education, Apollo Group, one of the leading providers of higher education for working adults, used Oracle Business Rules and SOA to automate determining the eligibility of their 120,000 student population for additional funds. They estimate that they achieved 300% ROI on a $300,000 investment in a 4 month project (3 for implementation and 1 for processing) (more here.) There are others including a large airline carrier using Oracle Business Rules to determine which opportunities to present to employees when they log in to the company portal and a major telecommunication vendor using it to determine which promotions to offer to a customer when they log in to self service portal.
With Oracle 11g the business rules team focused on making the product easier to use, added date/time handling and rule effectivity, supported aggregates, added decision tables, and added dictionary links. An extended web based authoring environment that in addition to being available as an authoring application can be embedded in other applications (such as Oracle Apps) is in advanced stages of development and will be part of a follow-up release. This release is in Early Access Program (EAP) right now and the formal release is expected over the summer. See Oracle Rules Blog for post on the 11g features.
The most common use case for business rules at Oracle is in the context of their BPEL product and from BPEL users can call a Decision Function – a list of one or more Rule Sets. The Rule Sets are executed sequentially with each one acting as an execution scope within which rules are executed using the Rete engine. A Decision Function can be a single Rule Set and while the Decision Function does not support branching or looping (unlike a Decision Flow diagram, say), users can easily define a small BPEL process to handle this kind of flow.
One of the first changes in 11 is that users can create business rules as they are designing a process. While they can still pull in existing rules and map them, they can also push the context from their process into the business rule design process. This specifies the input and output data, creates a dictionary in the repository, pushes in facts etc. This creates a decision function that can then be fleshed out.
The editing environment sports a much improved UI and provides more support for patterns and increased rule expressiveness. They have added point and click editing for data and operators and added support for nesting. While the Oracle folks know that it is better to build many, simple rules, they also support the construction of more complex rules with lots of nested conditions for those moments when it is necessary.
Date and time support involved adding both support for effective dates on rules (this rule only runs during this date range, for instance) as well as support for rule conditions to use date/time operators. Current date/time is supported as a constant for use in operators etc and for the effective dates and this can be overridden for instance with the transaction date so that the rules work as they would have done at the time of the transaction.
Support for aggregates means that a user can define aggregates – both standard ones like min, max, count and custom ones – and then use these in rules e.g. to define a condition that selects an order with more than 5 lines above a certain value.
The new If-then-else rules editor looks pretty good. Nice point and click access to data etc and can check the “advanced mode” box to get access to effective dating, rule priorities and aggregates etc. This makes the UI more complex obviously but it was nice that it could be turned on and off.
Support for what Oracle call Dictionary Links allow you to spread rules across Dictionaries and then pull them together into a Decision Function. Not only can a Decision Function use rule sets from multiple Dictionaries you can even build a rule set using rules stored across multiple dictionaries. Today, versioning and audit is pretty limited (dictionaries can be versioned only and the Oracle Enterprise Repository must be used for audit/governance) but more features are planned.
The biggest addition in this release is a Rule Sheet-style decision table (Oracle calls it a Decision Table, just like Corticon does, but it is really a Rule Sheet rather than a classic look-up decision table). A spreadsheet like interface allows represents each business rules as a column. Attributes are defined as rows and the values/conditions for each attribute in each rule are defined in the cells. The editor has a nice interface to define BucketSets for attributes. Bucketsets constrain values available for each attribute in conditions and give them usable labels. These can come from the schema or be defined for the Rule Set and can be shared. The Rule Set can be based on a single decision table or it can contain one or more decision table(s) as well as some if..then rules. The editor has some conflict detection built in and once a conflict is detected the user can fix a problem, specify a sequence for the rules, override rules or say it is not a conflict. There is also some gap analysis to see what rules are missing given the conditions being used and the editor can add them automatically to the decision table. A nice interface.
Testing support is pretty basic – a user can write functions to handle tests, get outputs and tracing but not much else. I am sure this is an area we will see improve in future releases. Similarly impact analysis is pretty basic. The Enterprise Repository acquired from BEA is designed to support impact analysis but this requires the development of a “harvester” to pick up the relationships implied in the business rules. For now, users can explicitly define and manage the relationships but not load them automatically. Again, an area I expect to see improve rapidly now Oracle has a robust set of rules functionality.
One of the most exciting aspects of Oracle’s business rules strategy is the support within Fusion for Decision Points. These can be easily mapped to Decision Functions, allowing a rules-based approach to customizing these decision points. In the new applications several are using the Oracle Business Rules component:
- Contract Expert replacing the old Oracle tool and using the rule engine
- Pricing and discount calculations in Costing
- Order decomposition in SCM
Plus there is lots of approval management.
The Fusion Application Development Framework (business object layer on top of a relational database) is how Fusion is defining objects for Fusion apps. Business Rules can reason across ADF-BC objects allowing the rules engine to take advantage of these definitions.