How to use RuleSet prerequisites in Process Commander
Summary
This article describes what RuleSet prerequisites are, how they differ from a RuleSet list, and examples showing you how to use them when planning and building your applications.
Prerequisites RuleSets are built upon a hierarchy of RuleSets (and their versions) comprising a Process Commander application. Enforcing prerequisites during development helps ensure that rule references across RuleSets are correct later during rule resolution at runtime. For example, assume that during development you create and test a rule in RuleSet Alpha:01-01-01 that depends upon a rule in RuleSet Beta:01-01-01. If, at runtime in a production system, a user executes an Alpha:01-01-01 rule but RuleSet Beta:01-01-01 is not present on the production system (or is not in the user’s RuleSet list), the Alpha rule could fail or possibly run and produce an incorrect result.
When you attempt to save a new rule into a RuleSet version for which there is no prerequisite RuleSet version, the save will fail and produce a message indicating the problem. Prerequisite RuleSet validation also occurs when importing RuleSets from another system.
Suggested Approach
To define prerequisites
You create a list of prerequisite RuleSets in a rule instance of the Rule-RuleSet-Version class. Rule validation is performed against these prerequisites. When developing rules, you can reference rules in any RuleSet version on this list.
To specify a prerequisite RuleSet:
- Use the Smart Prompt in the Requires RuleSet and Versions field to select the RuleSet.
- Enter all three RuleSet version levels (release, version, and patch). If you enter only the release and version, Process Commander automatically appends the highest patch-level instance located on your Process Commander server. In the example below, “15" is added.
When you save a rule, the system assembles a complete required RuleSet version list from:
- All RuleSet versions that you list in this field
- All lower-numbered RuleSet versions of this RuleSet
- All RuleSet versions listed in the Requires RuleSet and Versions field for those RuleSet versions that you list in this field
Therefore, if you save a rule into a RuleSet that depends on Alpha:02-01-01, and Alpha:02-01-01 depends on Beta:02-01-01, only list Alpha:02-01-01 in the form. There's no need to list Beta:02-01-01 because it is already listed in Alpha:02-01-01.
Using the above example, AlphaCorp:01-01-02 has a prerequisite of Pega-ProCom:05-02-15, the next prerequisite is Pega-IntSvcs:05-02-15, and so on. You do not need to list the Pega RuleSets below Pega-ProCom.
How prerequisite RuleSets differ from RuleSet lists
While prerequisite RuleSets govern the creation of new rules during development and the importation of RuleSets during the Import ZIP archive process, RuleSet lists govern rule execution at runtime. A RuleSet list, which appears in your operator profile, is an ordered set of RuleSets and versions that must be available to the system so that rule resolution can choose and execute the correct rule during run-time. Because RuleSet prerequisites are enforced during development, the system does not need to validate them during runtime processing
Unlike RuleSet prerequisites, which you configure manually as described above, Process Commander assembles your RuleSet list when you log on. The system uses the Requestor Type, Organization, Division, and Operator ID information in your access group instance. There is no required relationship between the prerequisites and RuleSet lists. However, if you want to create or modify rules and then execute them for testing, the rules must be in RuleSet versions that you have defined as prerequisites and be in your profile RuleSet list.
Examples of prerequisite failures and how to correct them
Example 1
Assume that you create new application rule, which includes AlphaCorp:01-01-02 in the Application RuleSets array. You specify Pega-RULES
and 5.1
in the Built On Application fields. In this case, the name and version in these fields define the prerequisite RuleSets in the Application RuleSet array. When you attempt to save, you get the following errors:
Because AlphaCorp:01-01-02 (and OrderEntrySystem:02-01-01) have the prerequisite PegaRULES:05-02 and so on, Process Commander cannot validate this application rule.
The prerequisite PegaRULES:05-01 is not a prerequisite to version 5.2. To correct the errors, you can either enter version 5.2 in the application rule Built On Application field, or change the RuleSet version for AlphaCorp:01-01-02 to a perquisite of PegaRULES:05-01-nn
Example 2
As you add new RuleSets and versions, be aware of dependencies and prerequisite behavior. Assume that you have created a new RuleSet version called OrderEntrySystem:03-01-01 with a prerequisite of RuleSet mayflower:01-01-01 as shown here:
You also modified AlphaCorp:02-01-01 to list OrderEntrySystem:03-01-01 as a prerequisite as shown here:
However, if you failed to modify the application rule AlphaCorpApp. 1.0, you get a failure to locate prerequisite error when you attempt to save, as shown here:
To correct the error, add either mayflower:01-01-01 or AlphaCorp:02-03-01 to the application rule.
Example 3
Assume that you have created a new property rule called NewRule1 in RuleSet AlphaCorp:01-01-01 as shown here:
You add a new property in a decision table rule in RuleSet OrderEntrySystem:02-01-01, which has a prerequisite RuleSet of Pega-ProCom:05-02. When you attempt to save, you get a prerequisite error as shown here:
To correct the error, add RuleSet AlphaCorp:01-01-01 to the list of prerequisites in RuleSet OrderEntrySystem:02-01-01, or save the NewRule1 property rule instance to RuleSet AlphaCorp:01-01-01..
About RuleSet prerequisites and product migration
Process Commander also checks prerequisite information for validation when importing an entire RuleSet when you use the Import Archive tool. A RuleSet can only be imported to a target system that already contains the RuleSet and versions that are listed in its prerequisites. This ensures that the imported rules reference only rules that the target system contains. Assume, for example, that you attempt to migrate RuleSet Alpha:02-01-02 that has a dependency on Alpha:02-01-01. If that RuleSet is not on the target system, or the prerequisite RuleSet is not included in the migration (which has a valid prerequisite on the target system), the import operation will halt and report the error.