Technical Documents
Inheritance, Overrides and Excludes
By Dan Crnarich
There are many examples in business environments where polices, procedures and rules are required to be applied over multiple jurisdictions, organizations or entities. These shared attributes allow for the creation of parent relationships where all the children (sub-entities) will benefit by inheriting the attributes assign to the parent. By using such a hierarchical relationship model, set-up can be vastly simplified and overall maintenance will be reduced. Create a rule, condition or statement once and it will be used uniformly by all subordinate entities.
The hierarchical relationship model also allows the flexibility for unique attributes to be created and assigned to sub-modules. For example there are many rules that now apply equally to each US state, so they can be assigned at the Federal level - All states now have set a legal drinking age at 21. So in that case the rule can be defined once. Another example, the legal driving is uniform only in the fact that each state has one, but the age limits vary by state.
The parent-child relationship can be powerful in setting rules once, but there is an inherent problem. With each additional child defined, there is likelihood that not all rules from the parent are applied to each child. This has typically limited the effectiveness of inheritance in parent-child relationships. The standard approach has been to define each module separately and assign rules and statement directly to each one. The result is unnecessary copying and adding of the same rule multiple times. While HaleyAuthority allows the user to change rules globally, there are additional features available to take full advantage of inheritance and make the issue easier to manage.
The following is a real example involving Insurance Reform. There are four policy examples below (for the sake of this paper, the descriptions of the program are not important). Two of these reform policies have been adopted by all states the other two by a sub-set of the states.
Individual Health Insurance Market Reform
- Community rating: Adopted by 10 states: ME, MA, NJ, NH, NM, NY, ND, OR, VT, WA
- Pre-existing condition exclusion limit: Adopted by 31 states: CA, CT, FL, GA, ID, IN, IA, KY, LA, ME, MD, MA, MI, MN, MS, MT, NH, NJ, NM, NY, ND, OH, OR, SC, SD, UT, VT, VA, WA, WY
- Guaranteed issue: Adopted by all 50 states
- Adopted by all 50 states
Traditionally, even these minor differences could cause two different problematic results. The first result being the creation of separate set-ups. The problem with separate set-ups is the difficulty and time associated with maintaining each set-up. The second problematic result is the progression towards eliminating the difference and settling on a universal standard. In this case one, both, or all entities are forced to be compromised. That usually proves hard to maintain or a progression towards eliminating the difference and settling on a universal standard. In which case one, both or all the entities are forced to compromise. HaleyAuthority offers an authoring environment which utilizes the concepts of inheritance, override and exclusion, to prevent these problematic results from occurring.
Inheritance in HaleyAuthority
The concept of inheritance is useful in helping users visualize the overall relationship within the modules. Inheritance works by the nesting of modules in a parent-child relationship. Each child module will naturally inherit the rules and attributes of the parent module. For example, let's examine the example of states and countries. Utilizing the concept of inheritance a user could define a relationship in which each US state is a child of the parent module, the USA. By defining a relationship the user is telling HaleyAuthority that all rules pertinent to the USA will also be applicable to each US state. This nesting relationship will then allow universal rules to be defined only once, but applied multiple times within each state or child module. Additionally, users can add specific rules and statements that do not apply globally which can be applied to each individual child module.
While this inheritance is useful, the real power, however, comes from HaleyAuthority's ability to manage the inheritance by exception using overriding statements or exclusionary statements. This can be helpful in cases where there are many rules in which a majority of the conditions are shared, but each module has some unique differences.
Excludes
The "excludes" statement allows for a sub-modules to be excluded and defined in the more general module. By using exclusions, sub-modules can be defined by the exceptions to the inherited rules, thereby reducing the number of statements made and also making the exceptions by sub-module comprehensible.
The concept of exclusions is helpful when a rule is nearly universal among related items, but not completely universal. Building on the example above, not all US states adopt certain regulations and policies of the USA. To illustrate exclusion, while the majority of US states have a state sales tax, a few have not adopted this certain regulation. If a rule is needed to apply only to the US states that have a state tax, it could be set up for the parent USA and with each US state that does not have state tax using an exclude statement.
Overrides
The overrides statement allows for any sub-module to have a rule or statement that replaces (overrides) the rule or statement inherited from the parent module. In the case of overrides, the rule or statement from the sub-module takes precedent over the rule or statement from the parent module.
An example may be that the Federal government has set a minimum (or maximum) guideline for each US state. However, certain US states have set stricter guidelines. By applying the federal guidelines to the USA, only the US states that have the stricter guideline will need an override statement.
Summary
Above have been examples of several features available in HaleyAuthority that will allow you to manage multiple relationships via inheritance and exceptions to the natural inheritance. In all, these features allow you to manage the exceptions as easily as the rules. Overrides and exceptions build upon the concept of defining rules once and using them globally, while still allowing the option of managing appropriate differences quickly, easily and most important clearly. Below is an example that walks through the mechanics of utilizing exceptions and overrides. The benefits can be seen directly in the example. Simplification of set-up is inherent, no duplication of rules. Also, by clearly denoting the exception or override, it is easy see both the source of the change and the result of the change.
Example of Exclusion and Inheritance
The following is a simple example to show how exclusions work with inheritance.
All US policies will be eligible for automatic renewal except in Georgia, where 30 day notice is needed.
Without inheritance, that guideline could be written as two modules which are not related:
- Module 1 - All states except Georgia
- Renewal: All policies will be automatically renewed.
- Module 2 - Georgia
- Renewal: All policies will be renewed if a 30 day notice is received
With Inheritance, the exception can be written as an excludes
- Module 1 - USA
- Renewal: All policies will be automatically renewed.
- Sub-module 1 - Georgia
- Excludes: Renewal
The example shows only one rule and one exception. In reality, there are likely many more rules that are shared between the USA and Georgia.
If we add another condition like
All US policies are guarantees to be issues, except in Pennsylvania where the number of claims may be considered. Combining with the statement above, without inheritance and exclusion it would need to be written as:
Without Exclusion and Inheritance
- Module 1- All States except Georgia and Pennsylvania
- Renewal: All policies will be automatically renewed.
- Issuance: All policies will be automatically issued.
- Module 2 - Georgia
- Renewal: All policies will be renewed if a 30 day notice is received.
- Issuance: All policies will be automatically issued.
- Module 3 - Pennsylvania
- Renewal: All policies will be automatically renewed.
- Issuance: Will be issued based on claims.
With Exclusion and Inheritance
- Module 1 - USA
- Renewal: All policies will be automatically renewed.
- Issuance: All policies will be automatically issued.
- Sub-module 1 - Georgia
- Excludes: Renewal
- Sub-module 2 - Pennsylvania
- Excludes: Issuance
HaleyAuthority
The example above is detailed in the following screens.

Figure 1
Figure 1 shows a module called USA with two statements and two sub-modules. In the configuration shown, the two statements will be inherited by the two sub-modules as shown. In our example we will show how to exclude one of the statements and how to override the other.
Exclusion
To exclude a statement from a sub-module, select the statement and click on the right-mouse menu. Or select the statement, and then select the Object menu. In the drop down menu you will see an "Exclude from submodule" menu item.

Figure 2
HaleyAuthority will walk you through creating an exclusion. By selecting a sub-module the statements will automatically be created. These statements will continue to be linked, so that any edits to the original statement will be made to all linked statements.

Figure 3
The created Exclude statement will be signified by the red letter E next to the statement. This indicates that an exclusion exists on this statement, as seen in Figure 4.

Figure 4
Detaching and Exclusion
If the exclusion is no longer necessary, it can be removed directly from the sub-module, as shown in Figure 5.

Figure 5
Overrides
As described above, overrides are used in the case where a statement on a sub-module should be used instead of the statement inherited by from the parent module. The mechanics of setting up an override are similar to setting up an exclusion. To start, select the statement on the module that will have an override, as shown in Figure 6.

Figure 6
You will be prompted to select the sub-module in which the override will be created, as shown in Figure 7.

Figure 7
To implement the override, you will need to add a statement that should be used instead of original, as shown in Figure 8.

Figure 8
Once the override statement is create and saved, both the original statement and the newly added override statement will be noted. HaleyAuthority added the appropriate language to make overrides easy to see and manage, as shown in Figure 9.

