I have implemented a series of Contingent Values for a Field Group using a set of domains applied to those fields. Works as expected. I have also implemented an Attribute Rule (Constraint) to prevent Field Calculator from calculating any values for a given field that are outside of the allowable domain values. This gets around the long-standing issue of users breaking Domain limitations with Field Calculator. Great.
The problem is, a user can still calculate an invalid value in a given field based on the allowable contingent values. In other words, the calculated value is perfectly fine for the domain of the current field, but NOT acceptable considering the values in the other fields in the field group.
Manually, this doesn't seem to be possible, since choosing an invalid set of values in the given field group will highlight the field group in red, and not allowing saving the edit--it will throw an error saying "Attribute does not satisfy a required Contingent Value", as expected.
Using Field Calculator, a user can get around this. I would like to prevent this, ideally without setting up a Validation-type Attribute Rule, since I believe a user could also get around that by simply not running those validations (although I'm not well-versed in the "Validation" flavor of Attribute Rules).
Image below:
- Fields Table showing fields and applied domains
- Domains Table showing the two domains (can only show the codes/descriptions of one domain...)
- CV Table showing the allowable contingent value sets
- Attribute Rule enforcing domains in a field, even with Field Calculator
- Attribute Table, with invalid 1-B sets of values, after the Field Calculation
With Field Calculator, it's possible to achieve invalid CVs, even when the Field Group is "Restrictive."
Any thoughts or ways other designers get around this issue would be appreciated. Seems like the only way would be to create custom Attribute Rule Constraints for each allowable Contingent Value... which defeats the purpose of even using Contingent Values in the first place.