A hands on session at SAP TechEd discussing business rules in the context of SAP Netweaver BPM. The basic pitch was reiterated – business rules embedded in code are hard to maintain, hard to expose to the business users and hard to estimate change costs while rules outside the system are scattered and hard to manage. Thus a business rules management system is required.
SAP offers SAP Netweaver BRM – 100% Java and packaged/integrated with Netweaver Composition/BPM – and BRFplus – 100% ABAP and tightly integrated with business suite. In 7.1 Netweaver has a rule engine that is tightly integrated with BPM, can execute rules against XML or Java objects and support decision tables and IF..THEN rules. New features in 7.2:
- Common definitions for all rulesets in a project
- Rule effectivity
- Rule overrides
- HTML report generation for rulesets and decision tables
- Integration with Excel for managing decision tables
- Rule consistency checking – overlaps, missing ranges etc
- Ruleset comparison – from design to production for instance
- Rule logging
- Flow rulesets – or what I would call a decision flow
- Rule testing requiring no java code for rules written against XML
- Web service generation for standalone deployment
As I said before, this is a nice set of functions that round out the product and bring it to a reasonably competitive level.
The first exercise was to create an enumeration and use it. The environment (Rules Composer) is very developer-centric but is nevertheless nicely implemented. The enumeration, as you would expect, allows you to specify a set of values for an enumeration and, optionally, to specify a different value to store in the database.
The second exercise is to develop a flow ruleset. The flow ruleset – what I call a decision flow – allows a start and end element to be connected through a series of decision tables/rule scripts (which can include functional programming) and gateways. The flow defines a sequence of rule artifacts that are executed as specified and uses BPMN for the diagram. The flow ruleset allows you to link a series of scripts – rules and functions specified in a sequential style – and decision tables – collections of rules to be executed as a set and defined declaratively. The ruleset artifact, that allows an arbitrary collection of rules and executes them declaratively does not seem to be integrated (it can’t be a step in a flow ruleset) but the decision table should handle most if not all sets of rules in a flow. Creating and running test cases was pretty seamless, for a developer at least.
On to the Rule Manager – the web editor for business users. The interface allows them to create, edit and management rules and decision tables. Version history comparison and deployment, report generation and usage reporting are all available and the user can check a table for consistency. Access is managed using the usual Netweaver Administrator and business users can be given read only access, approval access or download access. The Rules Manager is a standard SAP web application and allows in place editing (assuming you have permissions). Values can be changed and conditions/actions edited also. The comparison tool is a little weak, simply showing you the two versions without showing you where changes were made.
Finally we touched on the BPM/BRM integration. This is focused on complex decisions (like pricing, eligibility etc) as automating these decisions with rules can simplify processes dramatically, though other ways of using rules in process are also supported. For instance, the same rules editors can be used to embed rules in a process which would be appropriate for process rules that should be tightly coupled with the process. For the exercise we hooked up a rule or decision service, mapped the data and deployed it all very seamlessly. My only complaint is that if a decision service is being shared between multiple processes then it can only be integrated as a web service and the process designer then has no visibility into the rules. This is a pity – it ought to be possible to have a reusable decision service and still allow access to the rules in the service from the process composer.
Overall I was impressed – it’s a nice developer environment for rules that has been nicely integrated to much of the Netweaver stack and has a good level of “fit and finish” with point and click access to objects and artifacts etc. I was disappointed that there was no navigation from processes that use a common decision service to the rules behind that service (it’s hidden behind the standard web services deployment interface) and that rule sets could not be used in flows (only scripts and decision tables can be).