The Decision Management Community (http://DMCommunity.org) published an interesting Challenge in Oct-2014. It deals with a quite typical problem when some business rules may be mitigated by other rules. Here is an OpenRules-based solution that follows the DMN guidelines. The main idea is to use multi-hit decision tables when more specific rules (mitigations) may override more generic rules.
The first rule set states:
Rule # 1:
New Borrowings cannot exceed 30% of Total Assets.
Mitigation Criteria:
If the executive committee flag is set to “Y” and the executive committee exposure override is set to a percentage higher than the new borrowings/total assets ratio then PASS
Otherwise FAIL
It is quite natural to represent it as follows:
Here we assume that initially the Rule 1 is always PASS. If Loan Amount exceeds 30% of Total Assets the Rule 1 is FAIL. However, if the mitigation criteria is true, it is PASS again.
The second rule set states:
Rule # 2:
New Borrowings cannot exceed 1-4 Threshold.
Mitigation Criteria:
The new borrowings is less than the non-repo collateral available for the customer
then PASS
Otherwise FAIL
can be similarly represented by the following multi-hit decision table:
To finalize the Loan Qualification Result, we may simply combine the results of previous decision tables as follows:
Hopefully this multi-hit table is self-explanatory. I don’t think in this case we need a complex decision requirement diagram as the decision itself should simply execute these 3 decision tables and show the results:
You may find the complete implementation in one Excel file “DecisionMitigate.xls“. And you do not have to learn any proprietary GUI. Instead you may simply model your decision directly in Excel. This completes our solution for the challenge.
Below I will explain how we created test cases for the problem and validated execution results.
After creation of the above decision tables with a free use of decision variables in their columns, we used Copy/Paste to create the following Glossary:
The test data was provided to us as below:
Customer #200: ABC Bank
Total Assets = 20,000,000
Executive Committee Flag = “Y”
Executive Committee Exposure Override = 35%
1-4 Threshold = 1,000,000
Non-Repo Collateral = 2,500,000
Customer #500: Bank One
Total Assets = 50,000,000
Executive Committee Flag = “N”
Executive Committee Exposure Override = 0%
1-4 Threshold = 3,000,000
Non-Repo Collateral = 3,250,000
We put it in the following Data tables in Excel:
Using this data we created 4 test cases with expected results:
When we executed these test cases using the standard OpenRules engine, we received the following Executing Results.