Conditionally required rule
The conditionally required rule builder has the following additional properties:
Property | Description |
---|---|
expression | An expression using the attribute aliases. If • “x” is alias for the attribute with ID=“NUMBER_ATTRIBUTE_ID” • “y” is alias for the attribute with ID=”UNIT_ATTRIBUTE_ID” then the following kind of expressions are possible: "x == y" "x == \"No\" and y == \"Yes\"" "x != \"3\" or not y == \"5\"" Supported operators are ==, !=, and, or, not IMPORTANT: Values must be encoded as strings in expression! |
aliases | A list of variable names that are used in expressions in place of attribute IDs. Aliases must be valid groovy variable names |
conditional attribute | The attribute that is required to be non-empty when expression evaluates to true |
error message | The error message that will show up in PDX UI if condition is true, but conditional attribute was not set to a value |
Code Example:
BusinessRule rule = BusinessRuleBuilder.conditionallyRequiredRule("RULE_ID")
.withAlias("x", "NUMBER_ATTRIBUTE_ID")
.withAlias("y", "UNIT_ATTRIBUTE_ID")
.withExpression("x == \"100\" and y == \"units\"")
.withConditionallyRequiredAttribute("PER_HUNDRED_INFO_ID")
.withErrorMessage("When quantity is set to 100 units, then 'Info per 100' is required")
.build();
This produces the following JSON output when rule is serialized:
{
"id": "RULE_ID",
"templateId": "conditionallyRequired",
"errorMessage": "When quantity is set to 100 units, then 'Info per 100' is required",
"namedAttributes": {
"x": "NUMBER_ATTRIBUTE_ID",
"y": "UNIT_ATTRIBUTE_ID"
},
"parameters": {
"expression": "x == \"100\" and y == \"units\"",
"conditionalAttribute": "PER_HUNDRED_INFO_ID"
},
"requiredContexts": [],
"execution": "CONTINUOUS",
"businessRuleScopes": [],
"staticProperties": {}
}
Updated over 1 year ago