Skip to main content

Rule resolution

Rule resolution is a search algorithm that a system uses to find the most appropriate instance of a rule to execute in any situation. Rule resolution occurs whenever a rule is needed to accomplish case processing. For example, when developers update a service-level agreement (SLA) rule, rule resolution identifies the correct instance of an SLA rule so that the case is processed according to the most current business policies.  

Rule resolution applies to most rules that are instances of classes derived from the abstract Rule- base class. The following are examples of instances of rules derived from the abstract Rule- base class:

  • Case types (Rule-Obj-CaseType )
  • Properties (Rule-Obj-Property )
  • UI rules such as Sections (Rule-HTML-Section) and Harnesses (Rule-HTML-Harness)
  • Declare expressions (Rule-Declare-Expression)
  • Data pages (Rule-Declare-Pages)

Rule resolution does not apply to records that are instances of classes derived from any other abstract base class such as Data-, System-, or Work-. The following are examples of instances of rules derived from these abstract base classes:

  • Operator IDs (Data-Admin-Operator-ID)
  • Email listeners (Data-Admin-Connect-EmailListener)
  • Operator's favorites (System-User-MyRules)
  • The rule check-in process (Work-RuleCheckIn)
Tip: A rule's type is defined by the class from which the rule is derived. For example, the rule type of a rule derived from Rule-HTML-Section is called a section rule. The rule type of a rule derived from Data-Admin-Operator-ID is called an operator ID rule.

Inputs to the rule resolution algorithm

The rule resolution algorithm uses inputs from key parts of a rule to identify the most appropriate rule instance.

Inputs to the rule resolution algorithm include:

  • Predefined rule keys that are used as a unique identifier, such as the Apply to: class, rule name, and rule type
  • User's ruleset list
  • Class hierarchy of the rule in question
  • Circumstances such as the value of a property, or time and date restrictions
  • Availability of the rule
  • User's access roles and privileges

The output of the resolution process is the first rule found that matches all of the input criteria. As you create applications, the choices you make when defining the key parts of a rule are based on how you want the rule resolution to find the rule.

Rule resolution process and rule availability

You can update key parts of a rule instance, such as the rule availability. Rules that are subject to the rule resolution process have an Availability setting. The current Availability of a rule is visible on the rule form next to the rule name or description.

 

The Availability setting is used to determine if a rule is available for use during rule resolution. The availability of a rule is also used to determine if you can view, copy, or edit a rule in Dev Studio.

You can set the availability of a rule to one of five values: Available, Not Available, Blocked, Final, or Withdrawn.

Note: For more information on ensuring the correct rule is used at run-time, see the Pega Community article Setting rule status and availability.

Check your knowledge with the following interaction.

Populate the rules cache

Pega Platform™ uses a caching mechanism called the Rules Cache to ensure rule resolution operates efficiently.

When your application references a rule, Pega Platform checks the rules cache for the referenced rule. If the referenced rule is not available in the rules cache, Pega Platform uses a multiple-step process to populate the rules cache.

In the following image, click the + icons to learn more about the process that populates the rules cache.

Check your knowledge with the following interaction.

If you are having problems with your training, please review the Pega Academy Support FAQs.

Did you find this content helpful?

Want to help us improve this content?

We'd prefer it if you saw us at our best.

Pega Academy has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice