Aside: I have been using this same slide since 1994(!).Suppose you have a process or procedure that can be performed to take a customer order.
- An order is received. Some kind of event occurs in the system. It doesn’t really matter too much what kind of event this is; let’s just say the system becomes aware of the new order.
- The event is a flash point — one or more business rules pertain to it. One is: A customer that has placed an order must have an assigned agent.
- We want real-time compliance with business policy, so this business rule is evaluated immediately for the order. Again, it doesn’t much matter what component in the system does this evaluation; let’s just say some component, service, or platform can do it.
- Suppose the customer placing the order does not have an assigned agent. The system should detect a fault, a violation of the business rule. In other words, the system should become aware that the business rule is not satisfied by this new state of affairs.
- The system should respond immediately to the fault. In lieu of any smarter response, at the very least it should respond with an appropriate message to someone, perhaps to the order-taker (assuming that worker is authorized and capable).
Smarter and Smarter ResponsesIs it enough for the system simply to return a guidance message and stop there? Can’t it do more? Of course. For the order-taking scenario, a friendly system would immediately offer the user a means to correct the fault (again assuming the user is authorized and capable). Specifically, the system should offer the user another procedure, pulled up instantaneously, to assign an appropriate agent. If successful, the user could then move on with processing the order. This smart approach knits procedures together just-in-time based on the flash points of business rules. It dynamically supports highly-variable patterns of work, always giving pinpoint responses to business events (not system events). In short, it’s exactly the right approach for process models any time that applying know-how is key — which these days, is just about always! The Business Rules Manifesto (http://www.businessrulesgroup.org/brmanifesto.htm) says this: “Rules define the boundary between acceptable and unacceptable business activity.” If you want dynamic processes, you must know exactly where that boundary lies, and how to respond to breaches (at flash points) in real time. Is that as smart as processes can get? Not yet. Over time, the business rules for assigning appropriate agents might become well enough understood to be captured and made available to the system. Then when a fault occurs, the system can evaluate the business rules to assign an agent automatically. At that point, all this decision-making gets tucked very neatly under the covers. Even if the business rules you can capture are sufficient for only routine assignments, you’re still way ahead in the game. Smart architecture based on business rules is unsurpassed for incremental design, where improvement:
- Focuses on real business know-how, not just better GUIs or dialogs.
- Continues vigorously after deployment, not just during development.
- Occurs at a natural business pace, not constrained to software release cycles.