A Relationship between Process and Business Rules
Are there rules without processes?
After a long, exhausting day of screaming at my daughter to "do this," "don't do this," "walk, don't run," or "be quiet," I always find myself staring at her sleeping at night and think to myself "what a perfect angel" Why is she so perfect while she is asleep? Every parent knows… It is because she is not breaking any rules.
Remember the philosophical question: "if a tree falls in a forest and no one is there to hear it, does it still make a noise?" Similarly, "do rules exist while a child is sleeping?"
The answer to our question is yes… rules exist. However, without a child who is awake to perform a task (i.e., conduct processes), the rules are not applied (i.e., complied with or violated).
Task Independent and Task Dependent Rules
In a Business Rule Approach, rules should be viewed as guiding all tasks. However, when organizing rules from a process perspective, I find separating rules as 'Task Independent' and 'Task Dependent' very useful.
- Task Independent Rules are rules that govern behavior no matter what you are
- Task Dependent Rules are rules that guide a specific process.
When I ask my daughter for some examples of Task Independent Rules, she immediately says "don't hit people," " don't lie," and "don't steal." To her, these are Task Independent Rules -- you don't hit people, lie, or steal in any situation, whether it is playing monopoly, doing homework, or attending class.
Task Dependent Rules guide the specific process you are performing. For example, there is a set of rules that apply when playing monopoly. You will likely not use the rule "You must have three houses to build a hotel" in any other situation.
Handling Task Independent and Task Dependent Rules
Our businesses also have Task Independent and Task Dependent Rules. A Task Independent Rule may be "An order must be charged to a valid account number." This rule applies to all processes that create or change orders and account numbers. A Task Dependent Rule may be "The Net Pay must be calculated as Gross Pay less Deductions." This rule only applies to the process "Calculate Employee Pay."
Task Independent and Task Dependent Rules should be managed and executed differently. In order to effectively manage and execute these rules, we need a Rule Management Tool and a Rule Execution Tool.
The Rule Management Tool must be able to:
- Organize Task Independent and Task Dependent Rules in one repository.
- Relate Task Dependent Rules to the process(es) that require the rules.
These rules should be associated to each process and not replicated.
- Report all rules related to one process.
- Report all Task Independent Rules.
- Show all the processes that a particular rule is involved in.
The Rule Execution Tool must be able to:
- Enforce Task Dependent Rules with an easy way to trigger the rules. This is fairly
common. Most commercial rules engine can handle this function.
- Enforce Task Independent Rules with minimal triggering required. This is a more advanced feature for rules engines. Imagine a Task Independent Rule that impacts fifteen processes. You do not want to have to trigger this rule from each of the fifteen processes. It is more desirable to have a rule engine that can automatically detect the event when the rule needs to be triggered.
Going back to my sleeping child, the rules are there even when the child is sleeping. As soon as the child wakes up and conducts a task (process), the rules are complied with or violated. When she plays 'go fish' with her friends, there are a set of rules of the game that her friends ensure she complies with. These rules are Task Dependent Rules. When she gets upset and pulls her friend's hair, she violates a Task Independent Rule. An alert rules engine (a.k.a mother) should then fire up and apply the appropriate enforcement. A not-so-alert rules engine will not notice and let the bad behavior continue.
Plainly speaking, here are some of the main things you need to remember:
- In a Business Rule Approach, all rules should be viewed as guiding all tasks.
However, when organizing rules from a process perspective, separating rules as 'Task
Independent' and 'Task Dependent' is useful.
- You should be able to access all rules (Task Independent and Task Dependent Rules)
- Task Dependent Rules guide one or more processes.
- Task Independent and Task Dependent Rules are handled differently by Rule Management Tools and Rule Execution Tools
# # #