The Engine creates an Abstract Case rule object in memory for each Product Period rule object stored in memory. The AbstractCase rule class acts as the interface between the fixed eligibility/entitlement processing provided by the Engine, and the product-specific rules for the calculation of eligibility and entitlement results.
This "interface" rule class ensures that concrete sub-rule-classes have implementations for the following calculated rule attributes, which provide the fixed-structure eligibility and entitlement results required by the Engine:
Responsible for calculating the intervals of time during which the case is/is not eligible during the product period; and
Responsible for calculating the objectives that the case may be entitled to, and for each objective, the intervals of time when the case is/is not entitled to the objective, and the tag values available (see Write the Case Eligibility/Entitlement Calculation Rule Classes for more details).
The Engine-supplied interface rule set has no implementations for these attributes - rule classes must be written (see below) to provide implementations for the business requirements of the product; rather the interface rule class allows the Engine to communicate with the rule classes by specifying a contract for the data structures that it requires.