How to change the type of a property rule in a higher ruleset version
Summary
You can create a property rule that overrides an existing property rule (one with the same name and the same or subclass Applies To key part) that is in a lower version of the RuleSet or in a RuleSet and version that is lower on your RuleSet list. However, Process Commander restricts the Type values for the new property.
If you update or override a property rule of mode Single Value
, Value List
or Value Group
, you can change the property rule Type to one that is more narrowly defined. This does not cause any runtime conversions of property values.
Allowed property type changes
This table shows which property type changes are allowed.
FROM | TO | ||||||||
---|---|---|---|---|---|---|---|---|---|
Date Time | Date | Time of Day | Integer | Decimal | Double | True or False | Text | ||
Date Time | X | X | |||||||
Date | X | ||||||||
Time of Day | X | ||||||||
Integer | X | ||||||||
Decimal | X | ||||||||
Double | X | X | X | ||||||
True or False | X | ||||||||
Text | X | X | X | X | X | X | X |
For example, if the original property has a type of DateTime
, you cannot override it with a new property that has a type of Double
. If you try, an error message similar to the following appears:
"Definition required to conform to Cahaba-Work-CPM-Claims.Prop1 instance created 20050831T162223.149 GMT."
In this case, you can override the DateTime
property in a higher RuleSet version with a type of Date
or TimeOfDay
. Similarly, you can “specialize” a property of type Text
.
It is best practice to make such overrides when no work objects or other saved instances have a value for the property.
Note: Overriding the property does not cause Process Commander to convert any existing values of the property. Conversion can cause errors, as described in the following section.
Suggested Approach
Two methods can be used to change the property type. It is recommended that you only override properties that are not yet saved in work objects, to avoid validation issues and other processing errors.
.
Method 1: Delete and recreate the property using the new property type
In some cases you can simply delete the property rule in every system (such as application, testing, and production) and then recreate the property using the correct type.
For example, assume that you created a property named Prop1 with the type Integer
in the 01-01-01 RuleSet Version, locked the version and continued development in 01-01-02. You now realize you need to change the type of Prop1 from Integer
to Text
. If you change the property and attempt to resave into 01-01-02 with the new type a general error occurs —
Definition required to conform to Cahaba-Work-CPM-Claims.Prop1 instance created 20050831T162223.149 GMT.
In this case, you can delete Prop1 and recreate it using Text
as its property type.
Note: This method may not work in some cases. For instance, assume you change a property called Prop2 (Value mode) from Text
to Integer
. Also assume that a work object contains alphabetic characters using Prop2 (as type Text). Because Prop2 type is now defined as an Integer
, an error will likely occur during data dictionary validation, which occurs when:
- User input on an HTML form is placed on the clipboard
- The Page-Validate method is applied to a page containing the property, or to the property if it has mode Page
- An Edit Input rule and Property-Validate method is applied to the property
Method 2: Create a new property and block the old one
You can create a new property with a different name and use it going forward. Copy the old property with a availability setting of Blocked in a new RuleSet version to prevent any later further use of it.
Note: Use this method only in development systems; it is not advisable to make such changes use in production environments.