I have read the other threads related to business rules and DBA's and yet it seems that this is distinct case.
I believe that combining a rule "Defaults to" / "Defaults to concatenated value" and "Is Required" leads to incorrect results. Let me explain in detail:
1. Have a DBA X in any entity.
2. Create a business rule, X is required.
3. Create a business rule, X defaults to a value that does not resolve to a correct member
For example, X is DBA to entity Y; Y has codes 01, 02 and 03. Set the business rule to e.g. 04
DBA = Domain Based Attribute
When you validate the members, you will that even though attribute X is empty, the validation still succeeds, and the member is marked as valid, which is incorrect.
I examined a little bit the stored procedure generated by the business rules, and it seems that for applying the "Is Required" even the temporary value set to the attribute (here '04') is sufficient to consider it "Not Blank", and this is the culprit. In other words, the "Is Required" business rule is applied before the value assigned to the DBA is resolved to an existing member.
Could anyone confirm this behavior?
The only workaround I have found is to change the "Is Required" business rule to "Is not Valid", and in Conditions, use DBA.[X].Code is Blank.
I believe that combining a rule "Defaults to" / "Defaults to concatenated value" and "Is Required" leads to incorrect results. Let me explain in detail:
1. Have a DBA X in any entity.
2. Create a business rule, X is required.
3. Create a business rule, X defaults to a value that does not resolve to a correct member
For example, X is DBA to entity Y; Y has codes 01, 02 and 03. Set the business rule to e.g. 04
DBA = Domain Based Attribute
When you validate the members, you will that even though attribute X is empty, the validation still succeeds, and the member is marked as valid, which is incorrect.
I examined a little bit the stored procedure generated by the business rules, and it seems that for applying the "Is Required" even the temporary value set to the attribute (here '04') is sufficient to consider it "Not Blank", and this is the culprit. In other words, the "Is Required" business rule is applied before the value assigned to the DBA is resolved to an existing member.
Could anyone confirm this behavior?
The only workaround I have found is to change the "Is Required" business rule to "Is not Valid", and in Conditions, use DBA.[X].Code is Blank.
Half Scheidl