
The truth is that many people set rules to keep from making decisions. Mike Krzyzewski, American basketball coach and former player
An expert is someone who has succeeded in making decisions and judgements simpler through knowing what to pay attention to and what to ignore. Edward de Bono
Image courtesy of Stuart Miles / FreeDigitalPhotos.net
5 days ago (and counting) the A/V Receiver in my home entertainment surround sound system died after almost 10 years of faithful service. My TV, my Blu-Ray recorder, my gaming console, 5 speakers, 1 subwoofer, and a bass speaker are all connected to my A/V receiver, so all of a sudden I was looking at pictures with no sound. Calamity! Or as my sister put it: "oh no, you’ve introduced a single point of failure!"
So for the last 5 days (and counting) I’ve had a decision to make.
As it happens, I had to travel to my project this week anyway, so a few days living in the hotel has given me some time to do the necessary research, work out what needs to go into this decision, i.e. what rules I want to apply/ignore; and coincidentally put together some reflections on the difference between decisions and rules that I have been discussing with my current customer. Oh and yes this customer has an ongoing project using SAP NetWeaver DSM and BRFplus, although many of the reflections would apply equally to the use of decisions and rules in BRM. We currently have totals of well over 1000 rules to implement within a dozen decision services.
Most people recognize a decision when they see one. There’s an issue at hand, factors to be considered, and a choice to be made. As the Oxford Dictionary puts it:
A conclusion or resolution reached after consideration http://www.oxforddictionaries.com/definition/english/decision
We make hundreds of decisions every day: what clothes to wear; what to eat; what to drink; what route to travel to work; what school to send our children to, and so forth. Businesses make thousands of decisions every day: what price to charge a particular customer for a specific product; where to locate an employee; what work is assigned to each employee; how much we pay our contractors; what suppliers we use; what distribution/carrier companies we use; what servers we build; what software we support; what software we blacklist; what tax we pay and when, and so forth.
Knowing that there are lots of decisions and choices is fine. But there are so many decisions that without some guidelines and understanding it can be overwhelming to try and work out which decisions we automate and which we don’t.
Automated decisions are implemented as decision services. A decision service is a self-contained, callable service for the purposes of making decisions. A decision service encapsulates one or more business rules that must be executed together, in the correct sequence or order, to make that decision.
Each decision service asks a question, for example “How much discount should this customer receive when purchasing an A/V Receiver?” Each decision has a specified result (i.e. answer), for example “The discount percentage, and maximum discount amount permitted”. Making the decision may require one or more business rules to be executed, for example:
Contrast this with a manual decision. Manual decisions are those made directly by a person. When someone makes a decision on behalf of the business it is their responsibility to ensure they know, understand and are current (up-to-date) with the business rules that need to be applied, the result that needs to be determined, and that they apply those business rules correctly in making a decision. Think of a Home Entertainment salesperson who is on staff at your local electrical appliances store, and who can assess and decide what discount to give a particular customer. Of course, if they get it wrong it’s often too late to fix it once the purchase has been made or the contract has been signed.
At its simplest: Decision services automate decisions that would otherwise need to be made manually.
Decision services are particular critical where it would be difficult for personnel to keep current (up-to-date) with the information and knowledge of all the rules that need to be applied, such as:
But hang on a minute, doesn’t that automated decision service sound awfully like a web service or a method or a function module? Where’s the boundary line between decision services and other automated (encapsulated, callable, coded) services? It all comes down to understanding the degree of change that needs to be supported.
To put it another way, does what needs to be considered (the underlying business rules) in making the decision change more frequently than the need to make the decision (the calling application or program itself)?
Decision services replace traditional automated services where decisions would otherwise be coded in programming languages that the business cannot read, which require significant IT support to maintain, and are constrained by IT change and transport lifecycles to implement those changes.
Or to put it even more bluntly, does the business need to:
When we are talking about the speed at which IT can support changes, we are not just talking direct coding costs. Don't forget the perennial IT backlog, conflicting IT projects, budget negotiations between business departments and IT, political power negotiations between senior management , and the many other common barriers to getting changes agreed, designed, built, tested and into production.
Essentially what this boils down to is that decision services are critical where the speed of change must be determined by the business and not IT.
That is, it must be possible for the business to update the rules, or the rates or factors on which they depend without being constrained by IT projects or IT change and transport cycles. For example, if a new rate is determined, it may need to be implemented within minutes, hours or days of the new rate being decided, regardless of whether this fits with the current IT transport schedule.
Not all decisions are necessarily suitable as decision services. When choosing potential decision services, the first step is to check that the decision is suitable as a decision service. Decision services are used where:
Typically the need to make the decision, and the calling applications or other triggers that require the result of the decision, change very rarely; while the underlying business rules, rates, factors, and even the data sources evaluated in making the decision may change frequently. There may be any number of causes of frequent changes to making the decision; common causes of change include:
As a second step, many SAP solutions provide for calling of decision services at certain points within a solution. For example, in many SAP solutions these days, such as TRM, CRM Utilities, CRM Social Services, Debt Collection Strategies, etc. , there are often several points where decision services may be called either via configuration – i.e. the rules application that holds or the BRF+ function that represents the decision service can be directly entered in configuration – or via standard business logics slots such as BaDIs – i.e. Business Add-Ins where additional business logic code can be added, including calls to a decision service. Examples include, but are not limited to:
Where SAP provides for the calling of specific decision services, often the signature (i.e. the inputs and result) of the decision service are predefined. But of course you can create your own decision services too, which is especially useful when you want to call decision services from custom programs or BaDIs for your organization-specific or industry-specific decisions. Once the potential decision service has been identified as available and suitable for use, the decision service needs to be logically decomposed into the underlying business rules, and the information needed to support the decision, i.e. the rates and factors, and data sources which underpin the business rules.
I find the simplest way to think of business rules is as subcomponents of a decision.
Let’s take my A/V Receiver decision as an example. If I was to turn the choice of A/V Receiver into a decision service, there are a number of business rules I might want to include, such as:
Isn’t a business rule just a decision service in itself? Certainly sometimes it is. But here’s the thing - most of the time I don’t care whether any of the shelves in my entertainment unit are sufficiently high, wide and deep enough to hold a different A/V receiver, and although I could have measured the shelves at any time, there was no value and no reason in doing so. In other words, unless I have a decision to make, I'm not all that interested in the rules that go into making that decision.
So this is where I take issue with those who suggest that a business rules engine should be some sort of massive re-usable bottom-up designed repository of all the possible business rules in an organization, which are then assigned to the relevant decision. Where’s the cost benefit in documenting a whole heap of rules that you may never map to an automated decision service? It’s usually better or at least far more pragmatic to work top-down, i.e.
What about reusability? Sure, some rules are re-usable - checking if the price of a product falls within my budget for starters. But again here’s the thing – when you are adding that next decision service, it’s a lot easier for the business to identify rules they want to re-use, and upgrade them to a re-usable version, if they can see all the rules in the first place. Actually what we find in practice is that underlying rules are often less re-usable than you might think, it’s more often the data sources or the rates and factors that you want to re-use.
I don’t have to specify that a date is a valid date, any more than I have to specify that my entertainment unit has height and depth and width. It’s an entertainment unit – height, depth, and width come with the furniture – literally. It turns out that with SAP solutions you tend to get quite a lot of built-in rules that come with the furniture: data typing rules, data validation rules, standard configuration, process flows, business objects, etc. The beauty of DSM/BRFplus for many decision services is that those furniture rules can be treated as instant data sources whenever I want to call on them.
There's another useful aspect for project effort estimation when you consider decision services vs. business rules. Speaking as someone on a very large project involving well over 1000 rules to build, it's a lot easier, and far more effective to break effort estimation by our into our dozen decision services rather than our many many many business rules. Plus it makes a lot more sense from a testing perspective, because while I *can* individually test most of those rules, in practice it's shows more progress to my business people if I can show a whole decision is working, and show it being called by the relevant calling application. Granted some of our decisions hold only about 20 rules, and one has more than 400, but then from a testing perspective we can also break ourtesting into checking a decision service makes the correct decision for each business scenario, without the business person who's testing it having to worry about how many rules this particular execution of the decision requires.
Oh and don't forget to include your Rules Catalogs, i.e. the business view of the rules where they will adapt, simulate, and deploy future changes, as a part of your effort estimation.
Would I put my A/V receiver decision in DSM/BRFplus? Well not for myself, I’m seriously hoping this is not a repeatable decision, but if I was a company selling home entertainment theatre equipment … then it might well be worth automating decisions about best or recommended A/V receivers based on typical rules my customers apply.
In the meantime I’ve made my decision, ordered my A/V receiver, and I’m off to pick up my new A/V receiver in the morning. Wish me luck with connecting all those cables…!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
14 | |
12 | |
10 | |
10 | |
9 | |
7 | |
7 | |
7 | |
7 | |
7 |